Исследования в Массачусетском технологическом институте привели к внедрению системы, которая может взять описание задачи на стандартном английском языке и создать код для выполнения этой работы. Это конец программирования?
Конечно, нет.
Время от времени той или иной исследовательской группе удается проанализировать какую-то небольшую поддомену английского языка и найти способ перевести ее на тот или иной формальный язык. В последнее время наблюдается тенденция к созданию более специализированных формальных языков — то есть Языков, специфичных для предметной области, — которые применяются к областям, где они больше похожи на естественный язык, по крайней мере, для рассматриваемой задачи. Дело в том, что в естественном языке существует много закономерностей, которые вы можете использовать для перевода его на более формальные языки, пока область дискурса достаточно мала.
Все это интересная и ценная работа, но проблема в том, что люди переоценивают ее важность и приветствуют ее как прорыв с такими заголовками, как «рекурсия», «Кому нужны языки программирования»и» До свидания, Codeacademy».
Недавние работы Лаборатории компьютерных наук и искусственного интеллекта Массачусетского технологического института демонстрируют два общих подхода.
Первый был представлен в июне на ежегодной конференции Североамериканского отделения Ассоциации компьютерной лингвистики, в которой Регина Барзилай, доцент кафедры компьютерных наук и электротехники Массачусетского технологического института CSAIL, и ее аспирант Нейт Кушман использовали примеры, собранные из Интернета, для обучения компьютерной системы преобразованию описаний на естественном языке в регулярные выражения.
Как вы, вероятно, знаете, регулярные выражения имеют репутацию сложного синтаксиса и иногда трудной для понимания семантики. Дело в том, что во многих случаях саму идею матча легко выразить на естественном языке. Например, найти слово из пяти букв, начинающееся с «B» и заканчивающееся на «ic», можно преобразовать в гораздо более сложное регулярное выражение. То, что это может быть сделано автоматически, не так сильно шокирует, как может ожидать невинный. Преобразование достигается путем создания подходящего регулярного выражения, соответствующего английскому языку, а затем приведения его к наилучшей наиболее компактной форме. На презентации доклада аудитории было предложено реализовать регулярные выражения для довольно простого текстового поиска. Только небольшое количество людей получили «лучший» ответ, предложенный алгоритмом.
Второй доклад был представлен на ежегодной конференции Ассоциации компьютерной лингвистики в августе. Барзилай и еще один ее аспирант, Тао Лей, объединились с профессором электротехники и компьютерных наук Мартином Ринардом и его аспирантом Фан Лонгом, чтобы описать систему, которая автоматически учится обрабатывать данные, хранящиеся в различных форматах файлов, на основе спецификаций, подготовленных для популярного конкурса по программированию.
Система может создать анализатор входных данных на основе спецификации формата файла, написанной на естественном, но точном языке. Они протестировали его на 100 форматах файлов, указанных в рамках Международного конкурса коллегиального программирования Ассоциации вычислительной техники. Система смогла произвести входные парсеры примерно для 80 процентов спецификаций. В остальных случаях изменение всего одного-двух слов спецификации обычно приводило к появлению работающего синтаксического анализатора.
Так это важно?
Цитата из пресс-релиза Массачусетского технологического института:
“Это большой первый шаг к тому, чтобы позволить обычным пользователям программировать свои компьютеры, не требуя никаких знаний языка программирования”, — говорит Люк Зеттлмойер, доцент кафедры компьютерных наук и инженерии в Вашингтонском университете. “Методы, которые они разработали, определенно должны быть обобщены на другие связанные с ними задачи программирования.”
Тем не менее, я бы пока не отказался от обучения программированию, потому что большого шага вперед на самом деле не произошло. Оба исследования сосредоточены на подклассе грамматики, называемом обычной грамматикой. Как вы можете догадаться, регулярная грамматика-это то, что определяет регулярное выражение; она также может использоваться для указания формата файла. Действительно, анализатор ввода файлов-это всего лишь еще один пример регулярного выражения. Однако естественный язык нуждается в большем, чем обычная грамматика — контекстно — зависимая грамматика или лучше-чтобы выразить даже часть его сложности.
Оба этих замечательных исследования, по-видимому, доказывают, что если вы ограничите естественный язык выражением вещей, которые могут быть определены обычной грамматикой, то можно преобразовать естественный язык в более формальный язык, управляемый другой обычной грамматикой.
Таким образом, мы все можем вздохнуть с облегчением, потому что общее программирование нуждается в грамматике типа Хомского типа 0, а не в обычной грамматике типа 3.
Так что заголовок этой новости должен был гласить::
«Спецификация естественного языка чего-то, что управляется обычной грамматикой, может быть преобразована в формальный язык, управляемый обычной грамматикой.»
это все еще интересно, но вы бы прочитали это?
Конечный автомат описывается обычной грамматикой и не является полным по Тьюрингу.