ИИ приходит на твою работу по программированию! Ну это заголовок. Правда в том, что потребуется больше времени, чтобы полностью вывести человека из строя, но это не значит, что нет задач, которые ИИ не мог бы взять на себя сейчас.
ИИ проникает во все аспекты современных технологий, и программирование не исключение. Недавняя статья «Неконтролируемый перевод языков программирования» принадлежит Facebook A I Research и описывает, как нейронная сеть научилась переводить существующие программы с одного языка на другой — транскомпиляция. Как говорится в документе:
«Транскомпилятор, также известный как транслятор исходного кода в исходный, представляет собой систему, которая преобразует исходный код с одного языка программирования высокого уровня (такого как C ++ или Python) в другой. Транскомпиляторы в основном используются для обеспечения взаимодействия и для переноса написанных кодовых баз на устаревшем или устаревшем языке (например, COBOL, Python 2) на современный. Обычно они полагаются на созданные вручную правила перезаписи, применяемые к абстрактному синтаксическому дереву исходного кода. К сожалению, полученные переводы часто не читаются, не соответствуют целевому языку соглашений, и требуют ручной модификации для правильной работы. Общий процесс перевода занимает много времени и требует опыта как на исходном, так и на целевом языках, что делает проекты перевода кода дорогостоящими ».
Это, конечно, причина того, что Cobol до сих пор используется во многих финансовых системах. Если вы когда-либо пробовали перевести даже небольшую программу с двух похожих языков, скажем, Python 2 на 3, вы знаете, что это на удивление сложно. Вещи, о которых вы никогда не думали, неожиданно возникают и приводят к тому, что дела идут не по плану.
Группа Facebook взяла много кода с GitHub на C ++, Java и Python. Идея заключалась в том, чтобы использовать методы обработки естественного языка для извлечения шаблонов из языков. Программа изучила независимое от языка представление функции, а затем смогла использовать это для создания функции на другом языке. Ключевым фактором является то, что это представление было изучено неконтролируемым образом, то есть ни один человек не сказал нейронной сети, что делает программа, не было цели для обучения и не применялось вознаграждение за подкрепление. Паттернов в языке, видимо, достаточно. Что удивительно, но аналогичный подход работает для естественных языков — что еще более удивительно.
Система не была обучена путем представления ей примеров одной и той же функции, написанной на другом языке, как вы могли представить, как она будет работать. Это больше похоже на то, как человек будет выполнять работу, читая функцию, понимая, что она делает, а затем повторно выражая ее на новом языке.
Это работает?
Похоже, что да.
«Мы наблюдаем, что TransCoder успешно понимает синтаксис, характерный для каждого языка, изучает структуры данных и их методы и правильно выравнивает библиотеки для разных языков программирования».
Это не всегда получается правильно, но достаточно впечатляюще, чтобы предположить, что происходит что-то глубокое.
Идея независимого от языка представления программы, которую можно использовать для создания реализации в конкретном языке, может привести к созданию искусственного интеллекта, который может генерировать программы из требований или описаний.
Возможно, это еще не было с нами, но, да, я должен сказать, что день, когда ИИ может взять на себя создание программ, кажется намного ближе после этого исследования.