Содержание
О чем статья?
Искусственный интеллект с каждым днем поглощает все больше сфер. Сначала нейросети продвинулись в создании текстов и иллюстраций, теперь на очереди – программный код.
Несмотря на то, что первые нейросети для программирования были представлены еще в прошлом году, специалисты продолжают смотреть на них скептически.
Но такой настрой разделяют не все. В октябре 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.
Плюсы: Copilot регулярно обновляется, поэтому знаком со всей актуальной повесткой в программировании. Умеет писать код по референсу.
Минусы: Программа доступна только разработчикам, которые имеют регистрацию на Github. Есть бесплатный период, но понадобится ввести номер банковской карты. Код, написанный с применением Copilot, попадает в огромную базу Microsoft и, вероятно, будет использован для дальнейшего обучения нейросети.
2. TabNine
Аналог Копилота, который доступен как расширение для большинства редакторов кода и сред разработки. Продолжает код, пишет комментарии, генерирует тесты.
Плюсы: Программу можно попробовать бесплатно, но функционал демо-версии ограничен короткими подсказками, не больше трех слов. Без согласия разработчика не обучается на введенном коде.
Минусы: По отзывам опытных программистов качество генерации несколько ниже, чем у Copilot.
3. Stenography
Нейросеть для написания документации к коду. Быстро и качественно справляется с задачей.
Плюсы: Берет информацию из Stack OverFlow, знает актуальные методы программирования. Не хранит введенный код.
Минусы: Нет бесплатной версии. Плагин только для Visial Studio Code и Google Chrome.
4. Snyk на базе DeepCode AI
Нейросеть для решения задач по программированию, представленная как инструмент для безопасной разработки. Помогает программистам находить ошибки и потенциальные проблемы в коде. Доступна как плагин для Visual Studio Code, IntelliJ IDEA и других сред.
Плюсы: Использует несколько моделей ИИ и обучается на данных, отобранных ведущими специалистами по безопасности кода. Имеет демо-версию.
Минусы: Нет русскоязычного сайта, поэтому сложно быстро разобраться, какой продукт из предлагаемых выбрать.
5. ChatGPT
Чат-бот не является профильным продуктом для разработчиков, тем не менее его база данных позволяет использовать нейросеть для программирования на Python, Java, С, JavaScript и других языках.
ChatGPT поможет в поиске ответов на вопросы по разработке, анализу кода и исправлению ошибок, написанию документации. Использовать бота можно только в браузере, плагинов для редакторов и IDE нет.
Плюсы: С чат-ботом можно общаться онлайн, он понимает естественный язык и дает быстрые ответы.
Минусы: Нужен VPN и иностранный номер для регистрации. Для качественного результата следует использовать платную продвинутую версию 4.0, которая имеет базу знаний до декабря 2023 года. У ChatGPT 3.5 качество генерации ниже, и он не обновлялся с 2022 года.
Нейросети для решения задач по программированию на русском
Для тех, кому использовать ассистентов через VPN или GitHub неудобно, есть отечественные предложения:
1. GigaCode
Сервис разработан Сбером. По описанию умеет то же самое, что Copilot. Но обучается программа на собственной базе, подобно GigaChat. Устанавливается на большинство популярных IDE.
Плюсы: GigaCode понимает более 15 языков программирования, создан для русскоязычной аудитории.
Минусы: Пока доступен ограниченному числу пользователей, которые подали заявку на получение раннего доступа. Для стабильной работы рекомендуется установка сертификатов НУЦ Минцифры России.
2. YandexGPT
Русский аналог ChatGPT. Доступен онлайн в браузере, а также в качестве расширения в нем. Отвечает на любые вопросы, в том числе по программированию, может написать простой код и найти ошибки.
Плюсы: Не нужна регистрация, полностью бесплатен.
Минусы: Нейросеть не подойдет для решения сложных задач по программированию.
3. MITUP AI
Русскоязычный сервис на базе ChatGPT.
Плюсы: Не нужно подключаться к VPN. Неавторизованным пользователям доступны 3 бесплатные генерации в день, а за регистрацию зачисляются бонусные 100 руб. на счет. Представлены версии ChatGPT-3,5 Turbo и ChatGPT-4.
Минусы: Пользоваться версией 4.0 можно только, подключив соответствующий тариф.
Эксперимент: насколько качественно нейросети генерируют код
Мнения специалистов IT-сферы сильно разнятся: одни говорят, что нейросети действительно помогают в работе, другие – что их возможности сильно преувеличены.
Мы провели эксперимент, чтобы выяснить: способен ли искусственный интеллект облегчить разработчикам их повседневные задачи.
Чат-бот для программирования
Сначала взялись за проверку ChatGPT 3.5. Нейросеть известна как многофункциональный чат-бот, один из самых популярных на базе ИИ.
Протестировать нейросеть и ее возможности для программирования дали опытному программисту из сферы банковских приложений и начинающему Frontend-разработчику.
Тест №1
Профильный язык первого специалиста – Kotlin. Сначала он задал чат-боту несколько теоретических вопросов об особенностях языка, затем попросил сгенерировать метод, который будет скрывать клавиатуру на android, и поставить оценку выполненной работе.
Результат:
Нейросеть несколько раз путалась в ответах, создавала некорректный код, исправляла свои ошибки и допускала их в других местах.
Вот скриншоты из переписки с чат-ботом:
Опытный разработчик не оценил такой подход:
“Если бы я не знал, как этот метод должен выглядеть, то бот, несомненно, сэкономил бы моё время на начальном этапе, но потом пришлось бы разбираться, почему первая версия кода не работает.”
Тест №2
Начинающий программист работает с языком гипертекстовой разметки HTML, CSS и JS. Он использовал ChatGPT для создания простого веб-приложения для учета клиентов в автосервисе. Первым делом, описал задачу в общих чертах, затем давал чат-боту уточнения, какие блоки и элементы из гиперразметки убрать или, наоборот, добавить.
Результат:
Бот быстро генерировал код, но не обошлось без ошибок. Приходилось перепроверять и просить нейросеть исправить неточности.
Скриншоты части переписки:
“Спустя несколько вопросов и правок, я понял, что мне быстрей самому написать код, чем объяснять нейросети, какой результат нужен. В целом, можно использовать, но больше для мелких задач, где не требуется творческий подход. В противном случае, нужно досконально расписывать все требования, – опять-таки время,”
– дал оценку работе с чат-ботом программист.
Нейросеть для IDE для решения задач разработки
Интересно было проверить, как работают плагины на базе ИИ для редакторов кода и сред разработки.
Вышеупомянутый опытный разработчик установил TabNine в свою AndroidStudio. Он проверял, как нейросеть пишет документацию и генерирует тесты для кода.
Результат:
Документацию нейросеть написала довольно поверхностно, не проанализировав код.
С тестом TabNine справился лучше, но пропустил поле comment: и в csv не добавил, и в модели прописал «comment=""».
Удобство нейросети, интегрированной в среду разработки, программист оценил выше, чем чат-бота, но качество выполнения работ эксперта также не впечатлило:
“Из плюсов могу отметить наличие плагина, с которым не нужно копипастить в браузер, а можно сосредоточиться на ревью нагенерированного кода. Минусы: русского языка – нет, комментарии – поверхностные, тесты – лучше чем ничего, но максимально примитивно :)”
Отметим, что эксперимент проводился на бесплатных версиях продуктов. Разработчики, которые положительно отзываются о возможностях нейросетей, используют платные версии, которые обучены на новых данных и дают более качественные результаты.
Чтобы понять, способны ли нейросети для программирования облегчить работу, рекомендуем каждому IT-специалисту самостоятельно потестировать хотя бы один-два инструмента на базе искусственного интеллекта.
Программирование с помощью нейросети: да или нет?
Игнорировать ИИ сегодня – означает терять карьерные возможности. Пока нейросети не заменяют разработчиков, а оптимизируют процесс создания ПО, но какой прогресс их ждет в ближайшем будущем – вопрос открытый.
Нейросеть для написания кода помогает сэкономить время, автоматизировать набор, выполнить отладку и создать документацию. Поэтому востребованы будут специалисты, умеющие работать с ИИ и делегировать ему часть рутинной работы, повышая тем самым свою эффективность и стоимость на рынке труда.