Fallacies of AI Driven Coding

The following text is a partial translation of the original English article, performed by ChatGPT (gpt-3.5-turbo) and this Jekyll plugin:

Несколько дней назад DeepMind (приобретенная Google в 2014 году) выпустила AlphaCode и самостоятельно опубликовала статью, объясняющую, как их искусственный интеллект (ИИ) может “понимать” задачу по программированию, написанную на английском языке, и затем писать программу на Python, Java или C++, которая будет работать в примерно 30% случаев. Ранее в прошлом году OpenAI (получившая $1 млрд инвестиций от Microsoft в 2019 году) выпустила Codex и опубликовала статью, утверждая, что их ИИ также может решать около 30% программных задач, с которыми он был протестирован. Wired, Financial Times, The Verge и многие другие уже объявили победу: ИИ заменит программистов, и мы все потеряем свои работы.

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

  • ИИ понимает требования на естественном языке (НЕТ!)
    На самом деле он ничего не понимает. Ни AlphaCode, ни Codex не анализируют семантику ввода. Независимо от того, говорит ли он “нарисуй зеленую линию” или “сохрани файл”, ИИ видит только две последовательности символов: длиной 17 и 11 соответственно. Он не знает, что означает “зеленый” и в чем разница с “файлом”. Они разбивают текст на векторы. Если бы они использовали CNL, это было бы понимание, но они этого не делают.

  • Искусственный интеллект парный программист с человеком (НЕТ!)
    Мы можем ожидать, что искусственный интеллект не полностью заменит нас, программистов, а вместо этого поможет нам написать определенные блоки кода: Copilot (выпущенный GitHub в 2021 году) является заметным примером, работающий на основе того же Codex. Несколько месяцев назад я получил предварительный доступ к Codex и немного поиграл с его возможностями. Мое впечатление, как программиста, заключается в том, что он не мог написать целую программу, и созданные им блоки кода в ответ на мои запросы не сочетались друг с другом. Они обладали синтаксической корректностью и реализовывали запрошенную функциональность, но ИИ не мог их комбинировать так, как я, человек, мог бы согласиться на поддержку их позднее.

  • ИИ дополняет, поэтому они могут писать (НЕТ!)
    Действительно, есть несколько продуктов, которые выполняют автодополнение кода с использованием машинного обучения, например Codota, Tabnine и Kite. Однако они не работают с естественными языками. Это две разные проблемы исследования: 1) как дополнять автоматически существующую программу с известным функционалом и уже существующим AST, и 2) как преобразовывать текст на естественном языке в AST. Насколько я понимаю, они никогда не пересекутся и не будут взаимозаменяемыми.

  • Искусственный интеллект просто нуждается во времени для созревания (НЕТ!)
    Некоторые считают, что искусственный интеллект заменит программистов, но “этот день не настанет в ближайшее время”. Однако мне кажется, что дело не в зрелости. Самое направление, которым исследователи OpenAI и DeepMind пытаются идти, является тупиковым. Машинное обучение просто не является правильным инструментом для превращения структурированного английского текста в хорошо структурированный AST, который может быть разобран компилятором C++. Для этого нам нужно, чтобы искусственный интеллект научился семантике естественного языка, а затем, используя творчество и воображение, создавал все необходимые элементы AST в правильном порядке. Я просто не верю, что машинное обучение является правильной технологией для этого.

В заключение, ML никогда не будет писать наш код, потому что… это просто не подходящий инструмент для этой работы. Однако он может быть подходящим для других вещей, таких как автодополнение, рефакторинг, исправление ошибок, оптимизация и так далее. Меня особенно интересует автоматический рефакторинг: представьте себе большую легаси-кодовую базу, переданную искусственному интеллекту, который улучшает определенные ее части, делая код быстрее, безопаснее, более читаемым или короче. Возможно, он даже обновит код до новых фреймворков, SDK и зависимостей. В этом уже помогает и будет помогать ML, улучшая существующие AST.

Попытка применить ML к генерации кода - это путь в никуда, который только требует ресурсов и… увеличивает акции Google и Microsoft.

Кроме того, насколько это будет полезно для индустрии, если программисты будут писать код в основном, находя образцы в Интернете, копируя и вставляя их друг к другу? Многие из них уже делают это даже без AI. Анализ, проведенный недавно Stack Overflow, показывает, что “чем выше репутация пользователя, тем реже они копируют”. Менее опытные программисты склонны копировать. Это хорошая тенденция? Хотим ли мы, чтобы AI продвигал его дальше?

Сможет ли AI когда-нибудь писать код, читая требования на естественном языке? Да, сможет. Когда мы изобретем искусственное творчество.

Translated by ChatGPT gpt-3.5-turbo/42 on 2023-12-15 at 07:17

sixnines availability badge   GitHub stars