Написание кода с помощью искусственного интеллекта: советы от разработчиков и лучшие практики

Написание кода с помощью искусственного интеллекта: советы от разработчиков и лучшие практики

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

Генеративный ИИ захватил воображение людей и положил начало новой золотой лихорадке в сфере технологий. Сейчас большое внимание уделяется инструментам ИИ, создающим прозу и изобразительное искусство, но в ИТ-сфере ИИ популярен из-за написания кода. Например, вы можете описать чат-боту ИИ нужный вам результат, и он вернет готовый код в течение нескольких секунд. Эти возможности интригуют и пугают программистов.

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

Как ИИ помогает программистам

Разработчики чаще всего используют два инструмента генеративного ИИ: ChatGPT широко известный чат-бот ИИ от OpenAI и GitHub Copilot, который интегрируется в Visual Studio и другие ИСР (интегрированные среды разработки). Оба инструмента могут генерировать код на основе голосовых запросов, но Copilot и его экспериментальный преемник Copilot X могут выйти за рамки разговорной модели, выступая в качестве усовершенствованного автозаполнения ИСР, которое предугадывает задачу разработчика.

Ванесса Фройденберг, соучредитель и главный архитектор Croquet.io, говорит, что использует GitHub Copilot в своей повседневной работе с Visual Studio Code. Она объясняет, как это работает.

Если я напишу строчку:

let x = this.leftMargin + this.width / 2;

программа автоматически предложит следующую строку:

let y = this.topMargin + this.height / 2;

она знает, что нужно заменить «width» и «left» на «height» и «top». Это экономит время при вводе текста.

Паникос Неофиту, соучредитель и технический директор NetBeez использует Copilot X и ChatGPT каждый раз, когда пишет код. Он описывает два разных подхода к автозаполнению с помощью этих инструментов. Первый систематический. «Опишите очень четко определенную функцию с конкретными показателями, примерами ожидаемых результатов, а также моделями, которые включают таблицы базы данных с ассоциациями», говорит он. «ИИ, как правило, может сформулировать такие ассоциации. Попросите его реализовать это на конкретном языке программирования. 

Неофиту также считает, что более непринужденная и разговорная манера речи может дать хорошие результаты. В этом режиме, «во время выполнения задания вы задаете рандомные вопросы. Представьте, что рядом находится опытный программист, который отвечает на ваши вопросы и помогает вам на всех этапах выполнения задачи».

Независимо от того, какую технику вы используете, научиться правильно подсказывать ИИ это своего рода искусство. «Я использую технику цепочки рассуждений (chain of thought prompting), чтобы убедиться, что я правильно выбрал глагол и уточнил свою подсказку», говорит Шанеа Левен, основатель и генеральный директор компании CodeSee, предоставляющей программное обеспечение. 

Преимущества создания кода с ИИ

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

Создание документации на основе кода

Документация по программному обеспечению представляет собой структурированный формат, и это та область, в которой ИИ преуспевает. «Мне нравится использовать ChatGPT для написания документации или комментариев в коде», говорит Крис Лав, основатель веб-консалтинговой компании Love2Dev. «Уходит слишком много времени, чтобы делать это вручную. Но как только у меня есть готовая функция, я могу дать ей название и за секунду-другую написать документацию на целую страницу». 

...и наоборот

ИИ также может генерировать код на основе комментариев или документации. Фройденберг из Croquet.io привела простой пример того, как Copilot генерирует код на основе всего одной строки, в которой содержится следующий комментарий:

// get file name from our url

результат:

  let fileName = window.location.pathname.split("/").pop();

«Я бы, наверное, написала это по-другому я любительница регулярных выражений, но это простое и, возможно, более читабельное решение, так что я просто приму его», говорит она. «Это не только экономит время, но и иногда учит меня формулам, которые я, возможно, сама бы не открыла».

Решение решенных задач

Разработчики знают, что программирование это постоянное изобретение колеса. Бывает неприятно работать над проблемой, которую кто-то уже решил. Джефф Уиллс, руководитель инженерной практики в компании Rise8, занимающейся разработкой программного обеспечения, считает, что эта область как раз подходит для ИИ. «Допустим, я создаю метод для расчета расстояния между двумя точками на сфере», объясняет он. «Copilot автоматически найдет алгоритм Хаверсина и сгенерирует весь код».

Уиллс считает этот вариант особенно удобным в тех случаях, когда альтернативой коду, сгенерированному искусственным интеллектом, является добавление большой библиотеки. «Скажем, я не хочу добавлять в свой код целую библиотеку геометрии и раздувать кодовую базу», объясняет он. «Мне нужен только один алгоритм. Я просто напишу его сам и включу в код  или воспользуюсь ChatGPT или Copilot, которые помогут мне его создать. Сейчас это очень просто для ИИ».

Обновление или очистка кода

Крис Лав из Love2Dev считает ChatGPT особенно полезным для обновления уже написанного кода. «Я взялся за обновление старых модулей Node.js, которые я не обновлял только потому, что время, затрачиваемое на ввод кода, превышает его ценность», говорит он. «Чаще всего я обращаю внимание на преобразование старых функций, основанных на promises, в функции, использующие async/await. Последний вариант более чистый синтаксис, но он не был так распространен, когда я писал модуль. Я также заставляю его использовать более современный синтаксис, такой как деструктуризация и преобразование объявленных заранее переменных из var в const и let».

Ускоренное написание кода (возможно)

Многие разработчики, с которыми мы беседовали, говорили, что работа с Copilot или ChatGPT помогает им чувствовать, что они могут выполнять свою работу быстрее, хотя, по их признанию, они не всегда могут оценить это количественно. «Я думаю, что в конечном итоге это помогает мне писать более качественный код немного быстрее», говорит Лав. «Трудно сказать, на сколько процентов быстрее, но для меня это ощутимо».

«Мне кажется, что я могу быстрее перебирать возможные решения», говорит Уиллс из Rise8. «Теоретически это должно ускорить меня, но, возможно, я просматриваю больше возможных решений! Так что, я получаю выигрыш не во времени, а в качестве, потому что я смог сделать больше итераций».