Исследование возможности применения компьютерных игр для изучения формальных языков | Статья в журнале «Молодой ученый»

Отправьте статью сегодня! Журнал выйдет 10 октября, печатный экземпляр отправим 14 октября.

Опубликовать статью в журнале

Автор:

Рубрика: Информационные технологии

Опубликовано в Молодой учёный №51 (289) декабрь 2019 г.

Дата публикации: 21.12.2019

Статья просмотрена: 18 раз

Библиографическое описание:

Смирнова, А. Ю. Исследование возможности применения компьютерных игр для изучения формальных языков / А. Ю. Смирнова. — Текст : непосредственный // Молодой ученый. — 2019. — № 51 (289). — С. 39-41. — URL: https://moluch.ru/archive/289/65520/ (дата обращения: 26.09.2020).



Рост популярности компьютерных игр ведёт к тому, что они проникают в сферу образования не только для обучения людей, но и взрослых. В этой статье исследуются программы для обучения пользователей программированию. Методом изучения информации и анализа были выявлены наилучшие из рассмотренных варианты, подходящие для изучения формальных языков.

Ключевые слова: язык, программный код, игра, программный продукт, язык программирования, формальный язык

Существует множество языков программирования и для решения конкретной задачи применяется тот язык, который подходит наилучшим образом. Следует отметить, что разные языки программирования могут обладать разным синтаксисом и при переходе с одного языка на другой, могут возникнуть некоторые сложности. Изучив формальный язык, обучающийся сможет значительно легче перейти с одного языка на другой.

Формальный язык — это математическая модель реального языка, записанная в виде множеств терминальных и нетерминальных символов, а также стартового символа и правил. [1]

Компьютерные игры прочно вошли в жизнь людей и являются одним из способов провождения свободного времени. Их популярность обусловлена тем, что игры позволяют «отвлечься от реальности», снять стресс и напряжение. Компьютерные игры могут применяться и для обучения, по аналогии с играми, при помощи которых обучают детей. На рынке игр сейчас представлено несколько продуктов, позволяющих писать программный код, некоторые из которых рассматриваются в данной статье.

  1. TIS-100. Цель данной игры состоит в том, чтобы починить компьютер модели TIS-100, который не может выполнить даже простейший тест диагностики. Пользователю необходимо написать программный код в специально отведённых сегментах памяти (некоторые сегменты не доступны для записи), на языке, представляющем собой некий аналог ассемблера. Важно отметить, что язык программирования в этой игре минималистичен (из-за чего порой неудобен) и многопоточен (код в блоках, отображающийся на экране, выполняется одновременно). После успешного решения любого задания показываются его характеристики и статистика друзей, которые уже играли в эту игру. [2] Это позволяет оценить качество решения и посоревноваться с друзьями в поисках наилучшего решения по следующим характеристикам: количество затрагиваемых сегментов, количество циклов прохождения и количество инструкций(строк) программного кода. Данный продукт позволяет весело провести время, но не подходит для изучения формальных языков, поскольку заточена больше под ассемблер, а команды языка сильно ограничены, что не отображая набор конструкций формального языка.
  2. while True: learn(). Цель в данной игры состоит в написании переводчика с кошачьего, т. к. в один прекрасный день главный герой игры обнаруживает, что кот справляется с написанием кода лучше его. Но есть одна маленькая проблема — кот не умеет разговаривать. Пользователю необходимо решать головоломки, и изучать принципы машинного обучения. [3] В основе игры лежат реальные принципы, применяемые в машинном обучения, в частности, нейросетей, а задания основываются на реальных проблемах, решаемые при помощи машинного обучения. Программный продукт позволяет почувствовать себя в роли специалиста по большим данным, но совершенно не подходит для изучения формальных языков.
  3. CodeCombat. Представляет собой многопользовательскую браузерную игру, цель которой писать программный код для захватывания земель и победы над врагами. Команды программного кода — это «заклиния» или «действие» игрока. Команды пишутся на одном из следующих языков: как JavaScript, Lua, Pythoon, есть возможность язык программирования в ходе игры. [4] Важно отметить, что в бесплатной версии доступен только основной путь игрока, а за все ответвления придётся платить дополнительно. Игровой процесс посмотрен от простого к сложному, позволяя играть в неё пользователю, который до этого никогда не занимался программированием. Данный продукт может использоваться для изучения формальных языков, т. к. несмотря на то, что выбирается конкретный язык программирования, пользователь может сменить его и посмотреть, как можно пройти уровень на другом языке.
  4. Human Resource Machine. Цель данной игры — программировать действия офисного работникам по заданиям, которые даёт босс. Сам офис представляет собой компьютер, где во время решения заданий необходимо взять числа(а иногда и буквы) с входа, а решения заданий отправить на выход. Пол офиса имитирует собой оперативную память, где можно сохранять входные данные и результаты, полученные в ходе вычислений. Пользователь начинает всего с 2 команд,но в процессе прохождения игры ему становится доступно всего 11 команд, однако, по утверждению создателей, их достаточно для моделирования практически любого алгоритма в мире. [5] Язык написания программы в данном случае так же представляет собой упрощенную версию ассемблера, а задания с каждым уровнем становятся сложнее. Данный программный продукт может частично использоваться для изучения формальных языков, т. к. даёт некоторое представление о конструкциях формальных языков. Однако, прототипом языка программирования здесь является ассемблер, что не позволяет получить полного представления о формальных конструкциях языков высокого уровня.
  5. 7 Billion Humans. Игра, от создателей Human Resource Machine. В отличии от предыдущего продукта, целью данной игры является программирование действий толп работников. Модель офиса остаётся прежней, однако в основе программирования уже лежит другой язык, не ассемблер. В игре появились подсказки и пропуск уровней, что может быть полезно при прохождении. Данный программный продукт больше подходит для изучения формальных языков, чем предыдущий, поскольку в псевдоязыке появились конструкции, больше похожие на те, что используются в формальных языках.
  6. Code Hunt. Это приложение, предназначение для обучения Java и C#, где пользователю самому нужно понять, что необходимо исправить в коде программы, чтобы уровень считался пройдённым. Игрок видит на входе несколько тестов, одни пройдены успешно, другие — нет. Написав программный код, пользователю необходимо сделать так, чтобы все тесты проходили. [6] Данный программный продукт, не совсем подходит для изучения формальных языков, т. к. не предоставляет чёткой информации о формальных конструкциях.
  7. Robocode. Цель данной игры заключается в создании боевых роботов -танков, написанных на Java или.NET. Основной движущий элемент в обучении это конкуренция. Цель игрока после создания робота — уничтожить абсолютно все другие танки на игровом поле. Танки обладают большим набором возможностей: движение по игровому полю, стрельба, они могут врезаться в стены или роботов, узнавать местоположение друг друга. Игра является кроссплатформенной и играть в неё можно на любых операционных системах. В игру встроенная собственная среда для разработки — Robot Editor. Данные продукт так же не подходит для изучения формальных языков, поскольку заточен под конкретные языки и не предоставляет чёткой информации о формальных конструкциях.

Таким образом, проанализировав всю собранную информацию, можно сделать вывод, что компьютерные игры могут применяться при изучении формальных языков. В ходе исследования были найдены программные продукты, наилучшим образом подходящие для выполнения данной цели, такими продуктами являются CodeCombat и 7 Billion Humans. При выборе игры для понимания конструкций формальных языков самостоятельно следует помнить, что большинство игр заточены под конкретный язык и не позволяют увидеть общие конструкции, лежащие в основе всех языков программирования.

Литература:

  1. Formal language // Wikipedia. URL: https://en.wikipedia.org/wiki/Formal_language
  2. TIS-100 — паззл про многопоточный ассемблер, который никто не ждал // Хабр. URL: https://habr.com/ru/post/263445
  3. Создатель игры while True: learn() о программировании в геймдеве, проблемах с VR и симуляции ML // Хабр. URL: https://habr.com/ru/post/417107
  4. О нас // CodeCombat. URL: https://codecombat.com/about
  5. Human Resource Machine // Tomorrowcorporation. URL: https://tomorrowcorporation.com/humanresourcemachine
  6. Обучайтесь С# и Java вместе с Code Hunt // my-gamezone. URL: https://my-gamezone.ru/igry-dlja-programmistov/code-hunt-igrat-onlajn
Основные термины (генерируются автоматически): язык, программный код, игра, программный продукт, язык программирования, формальный язык, изучение, машинное обучение, наилучший образ, четкая информация.


Похожие статьи

Проблемы выбора языка программирования в школьном курсе...

Первый язык программирования должен быть требовательным к ученику. Необходимо, чтобы ученик имел чёткое представление о том, что его программа делает на каждом шаге, и уметь записывать алгоритмы на строгом формальном языке, без лишних “вольностей”.

Основные современные языки программирования

Данная статья посвящена рассмотрению языков программирования, которые являются наиболее распространенными в современное время, а также их сравнительному анализу и изучению перспектив их использования в дальнейшем.

Особенности программирования логических игр средствами...

Для того, чтобы организовать программирование логической игры средствами языка C++, необходимо использовать графическую библиотеку.

Может быть использована на большом количестве языков программирования. Активно используется для создания компьютерных игр.

Параллели между естественными языками и языками... | «Молодой

Действительно, лингвистика изучает человеческие языки — как существующие, так и

Язык — это знаковая система, используемая для целей коммуникации и познания.

Таким образом, мы увидели насколько существует глубокая связь между двумя такими непохожими отраслями...

Использование современных языков программирования для...

Python– высокоуровневый язык программирования общего назначения, ориентированный на повышение производительности разработчика и читаемости кода. Синтаксис ядра Python минимизирован. В то же время стандартная библиотека включает большой объём полезных...

Обоснование выбора ЯВУ для преподавания основ...

Проблемы выбора языка программирования в школьном курсе... язык программирования, язык, программирование, IDE, ученик

С точки зрения информатики, среди формальных языков наиболее значительную роль играют формальный язык логики (язык алгебры логики)...

Python как основной язык программирования в средней школе

В статье рассматривается язык Python, его достоинства и недостатки, обосновывается выбор изучения языка Python в средней школе.

Основные термины (генерируются автоматически): язык, программный код, язык программирования, школа, программирование, программа...

Особенности подготовки специалистов в области...

Программные продукты, изучаемые на первом курсе, к концу обучения уже могут быть заменены более актуальными, свежими версиями. Подготовка специалистов должна осуществляется с применением самых современных программных продуктов.

Сравнительный обзор распространённых языков...

Язык программирования C – громоздкий язык. Таким образом, хотя разработка программ на языке

Здесь требуется достоверная читаемость кода каждым из них субъективно, и язык C

Например, студенты, изучающие немецкий язык, при изучении языка программирования...

Получение первичных навыков программирования...

Ключевые слова: программный модуль, торговая компания, пользовательский интерфейс, язык и среда программирования, клиент-серверная архитектура. Он будет предоставлять пользователю удобный и понятный интерфейс и занимать время покупателя, пока продавец...

Похожие статьи

Проблемы выбора языка программирования в школьном курсе...

Первый язык программирования должен быть требовательным к ученику. Необходимо, чтобы ученик имел чёткое представление о том, что его программа делает на каждом шаге, и уметь записывать алгоритмы на строгом формальном языке, без лишних “вольностей”.

Основные современные языки программирования

Данная статья посвящена рассмотрению языков программирования, которые являются наиболее распространенными в современное время, а также их сравнительному анализу и изучению перспектив их использования в дальнейшем.

Особенности программирования логических игр средствами...

Для того, чтобы организовать программирование логической игры средствами языка C++, необходимо использовать графическую библиотеку.

Может быть использована на большом количестве языков программирования. Активно используется для создания компьютерных игр.

Параллели между естественными языками и языками... | «Молодой

Действительно, лингвистика изучает человеческие языки — как существующие, так и

Язык — это знаковая система, используемая для целей коммуникации и познания.

Таким образом, мы увидели насколько существует глубокая связь между двумя такими непохожими отраслями...

Использование современных языков программирования для...

Python– высокоуровневый язык программирования общего назначения, ориентированный на повышение производительности разработчика и читаемости кода. Синтаксис ядра Python минимизирован. В то же время стандартная библиотека включает большой объём полезных...

Обоснование выбора ЯВУ для преподавания основ...

Проблемы выбора языка программирования в школьном курсе... язык программирования, язык, программирование, IDE, ученик

С точки зрения информатики, среди формальных языков наиболее значительную роль играют формальный язык логики (язык алгебры логики)...

Python как основной язык программирования в средней школе

В статье рассматривается язык Python, его достоинства и недостатки, обосновывается выбор изучения языка Python в средней школе.

Основные термины (генерируются автоматически): язык, программный код, язык программирования, школа, программирование, программа...

Особенности подготовки специалистов в области...

Программные продукты, изучаемые на первом курсе, к концу обучения уже могут быть заменены более актуальными, свежими версиями. Подготовка специалистов должна осуществляется с применением самых современных программных продуктов.

Сравнительный обзор распространённых языков...

Язык программирования C – громоздкий язык. Таким образом, хотя разработка программ на языке

Здесь требуется достоверная читаемость кода каждым из них субъективно, и язык C

Например, студенты, изучающие немецкий язык, при изучении языка программирования...

Получение первичных навыков программирования...

Ключевые слова: программный модуль, торговая компания, пользовательский интерфейс, язык и среда программирования, клиент-серверная архитектура. Он будет предоставлять пользователю удобный и понятный интерфейс и занимать время покупателя, пока продавец...

Задать вопрос