О чем статья?

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

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

Но такой настрой разделяют не все. В октябре 2023 г. на популярном гарвардском курсе по основам программирования CS50 появилась лекция с говорящим названием “Большие языковые модели и конец программирования” (“Large Language Models and The End of Programming”).

Мэтт Уолш с лекцией “Большие языковые модели и конец программирования” в Гарварде
Мэтт Уолш с лекцией “Большие языковые модели и конец программирования” в Гарварде

Ее автор – Мэтт Уолш, главный архитектор платформы для создания диалоговых агентов искусственного интеллекта Fixie.ai, в послужном списке которого – работа в Apple и Google.

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

Подобное мнение разделяет и гендиректор Nvidia Дженсен Хуанг. На презентации новой компьютерной ИИ-платформы искусственного интеллекта DGX GH200, предназначенной для создания генеративных моделей, он заявил, что “любой может стать программистом” с возможностями “умных” нейросетей.

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

Сбудутся ли прогнозы экспертов, узнаем в скором будущем. А пока разберемся, по силам ли чат-боту написать полноценный код, и какие нейросети с этой задачей лучше всего справляются.

Зачем программисту нейросеть

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

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

Нейросеть для программирования калькулятора на Паскале
Нейросеть для программирования калькулятора на Паскале

Генеративные системы применяются в разных областях программирования:

  • В веб-разработке – для создания HTML, CSS и JavaScript.
  • В мобильной разработке – для генерации интерфейсов приложений.
  • В разработке игр – для формирования игровых уровней, персонажей и анимации.
  • В системном программировании – для оптимизации кода и повышения производительности системы.

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

Обучение разработчиков

Новичкам в программировании ИИ сокращает время на поиск информации. Google или Яндекс выдают на запрос десятки-сотни сайтов, не все из которых полезны. Поиск контента отнимает много ресурсов.

Чат-бот, напротив, отвечает на конкретный вопрос пользователя. Он также может дополнить объяснение, предложить иные формулировки.

Нейросеть для обучения программированию используют в качестве своеобразного “переводчика” с кода на естественный язык. Это значит, что ИИ-помощник может объяснить, какой функционал реализуется определенным фрагментом кода.

Автоматизация набора кода

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

Подобный функционал имеет самая известная нейросеть для написания кодов программирования – GitHub Copilot. Но она, опираясь на свою базу данных, не просто дописывает знаки в конце строки, а предлагает полноценные варианты для достройки кода: переменные, условия, функции.

Нейросеть предлагает варианты достройки кода с учетом контекста
Нейросеть предлагает варианты достройки кода с учетом контекста

Нейросеть предлагает варианты достройки кода с учетом контекста.

Отладка кода

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

Нейросеть может найти и исправить ошибки в коде
Нейросеть может найти и исправить ошибки в коде

Перевод кода с одного языка программирования на другой

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

Нейросеть умеет переписывать код на другой язык программирования
Нейросеть умеет переписывать код на другой язык программирования

Генерация документации

Работа по созданию ПО часто сопряжена с написанием документации. Пояснительные тексты помогают другим разработчикам быстрей разобраться в коде для его дальнейшей поддержки. Они раскрывают функции и особенности программы, порядок установки компонентов и т.д.

Разработчики писать документацию не слишком любят).

Зато для нейросети сгенерировать комментарии к коду – не проблема. Есть специальные инструменты для интегрированных сред разработки, которые пишут документацию для кода или его фрагмента: Stenography, Documatic, Mintlify и т.д.

Переходим к следующим вопросам: какие есть нейросети для программирования, и что они умеют?

Лучшие нейросети для программирования

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

1. Github Copilot

Про Copilot хоть раз слышал каждый программист. Совместный продукт OpenAI и Microsoft предлагает большие конструкции для логичного продолжения кода, учитывая контекст. Применяется в качестве плагина для Visual Studio Code и GitHub Codespaces.

Github Copilot

Плюсы: Copilot регулярно обновляется, поэтому знаком со всей актуальной повесткой в программировании. Умеет писать код по референсу.

Минусы: Программа доступна только разработчикам, которые имеют регистрацию на Github. Есть бесплатный период, но понадобится ввести номер банковской карты. Код, написанный с применением Copilot, попадает в огромную базу Microsoft и, вероятно, будет использован для дальнейшего обучения нейросети.

2. TabNine

Аналог Копилота, который доступен как расширение для большинства редакторов кода и сред разработки. Продолжает код, пишет комментарии, генерирует тесты.

TabNine

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

Минусы: По отзывам опытных программистов качество генерации несколько ниже, чем у Copilot.

3. Stenography

Нейросеть для написания документации к коду. Быстро и качественно справляется с задачей.

Stenography

Плюсы: Берет информацию из Stack OverFlow, знает актуальные методы программирования. Не хранит введенный код.

Минусы: Нет бесплатной версии. Плагин только для Visial Studio Code и Google Chrome.

4. Snyk на базе DeepCode AI

Нейросеть для решения задач по программированию, представленная как инструмент для безопасной разработки. Помогает программистам находить ошибки и потенциальные проблемы в коде. Доступна как плагин для Visual Studio Code, IntelliJ IDEA и других сред.

Snyk на базе DeepCode AI

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

Минусы: Нет русскоязычного сайта, поэтому сложно быстро разобраться, какой продукт из предлагаемых выбрать.

5. ChatGPT

Чат-бот не является профильным продуктом для разработчиков, тем не менее его база данных позволяет использовать нейросеть для программирования на Python, Java, С, JavaScript и других языках.

ChatGPT поможет в поиске ответов на вопросы по разработке, анализу кода и исправлению ошибок, написанию документации. Использовать бота можно только в браузере, плагинов для редакторов и IDE нет.

ChatGPT

Плюсы: С чат-ботом можно общаться онлайн, он понимает естественный язык и дает быстрые ответы.

Минусы: Нужен VPN и иностранный номер для регистрации. Для качественного результата следует использовать платную продвинутую версию 4.0, которая имеет базу знаний до декабря 2023 года. У ChatGPT 3.5 качество генерации ниже, и он не обновлялся с 2022 года.

Нейросети для решения задач по программированию на русском

Для тех, кому использовать ассистентов через VPN или GitHub неудобно, есть отечественные предложения:

1. GigaCode

Сервис разработан Сбером. По описанию умеет то же самое, что Copilot. Но обучается программа на собственной базе, подобно GigaChat. Устанавливается на большинство популярных IDE.

GigaCode

Плюсы: GigaCode понимает более 15 языков программирования, создан для русскоязычной аудитории.

Минусы: Пока доступен ограниченному числу пользователей, которые подали заявку на получение раннего доступа. Для стабильной работы рекомендуется установка сертификатов НУЦ Минцифры России.

2. YandexGPT

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

YandexGPT

Плюсы: Не нужна регистрация, полностью бесплатен.

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

3. MITUP AI

Русскоязычный сервис на базе ChatGPT.

MITUP AI

Плюсы: Не нужно подключаться к VPN. Неавторизованным пользователям доступны 3 бесплатные генерации в день, а за регистрацию зачисляются бонусные 100 руб. на счет. Представлены версии ChatGPT-3,5 Turbo и ChatGPT-4.

Минусы: Пользоваться версией 4.0 можно только, подключив соответствующий тариф.

Эксперимент: насколько качественно нейросети генерируют код

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

Мы провели эксперимент, чтобы выяснить: способен ли искусственный интеллект облегчить разработчикам их повседневные задачи.

Чат-бот для программирования

Сначала взялись за проверку ChatGPT 3.5. Нейросеть известна как многофункциональный чат-бот, один из самых популярных на базе ИИ.

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

Тест №1

Профильный язык первого специалиста – Kotlin. Сначала он задал чат-боту несколько теоретических вопросов об особенностях языка, затем попросил сгенерировать метод, который будет скрывать клавиатуру на android, и поставить оценку выполненной работе.

Результат:

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

Вот скриншоты из переписки с чат-ботом:

Скрин1
Скрин2
Скрин3
Скрин4
Скрин5
Скрин6

Опытный разработчик не оценил такой подход:

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

Тест №2

Начинающий программист работает с языком гипертекстовой разметки HTML, CSS и JS. Он использовал ChatGPT для создания простого веб-приложения для учета клиентов в автосервисе. Первым делом, описал задачу в общих чертах, затем давал чат-боту уточнения, какие блоки и элементы из гиперразметки убрать или, наоборот, добавить.

Результат:

Бот быстро генерировал код, но не обошлось без ошибок. Приходилось перепроверять и просить нейросеть исправить неточности.

Скриншоты части переписки:

Скрин1
Скрин2
Скрин3
Скрин4

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

– дал оценку работе с чат-ботом программист.

Нейросеть для IDE для решения задач разработки

Интересно было проверить, как работают плагины на базе ИИ для редакторов кода и сред разработки.

Вышеупомянутый опытный разработчик установил TabNine в свою AndroidStudio. Он проверял, как нейросеть пишет документацию и генерирует тесты для кода.

Нейросеть генерирует тесты для кода

Результат:

Документацию нейросеть написала довольно поверхностно, не проанализировав код.

Нейросеть умеет переписывать код на другой язык программирования

С тестом TabNine справился лучше, но пропустил поле comment: и в csv не добавил, и в модели прописал «comment=""».

Нейросеть умеет переписывать код на другой язык программирования

Удобство нейросети, интегрированной в среду разработки, программист оценил выше, чем чат-бота, но качество выполнения работ эксперта также не впечатлило:

“Из плюсов могу отметить наличие плагина, с которым не нужно копипастить в браузер, а можно сосредоточиться на ревью нагенерированного кода. Минусы: русского языка – нет, комментарии – поверхностные, тесты – лучше чем ничего, но максимально примитивно :)”

Отметим, что эксперимент проводился на бесплатных версиях продуктов. Разработчики, которые положительно отзываются о возможностях нейросетей, используют платные версии, которые обучены на новых данных и дают более качественные результаты.

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

Программирование с помощью нейросети: да или нет?

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

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