Как искусственный интеллект меняет способ написания кода разработчиками

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

Помните, как CoPilot от GitHub впервые произвел фурор, автоматически генерируя исходный код в 2021 году? Все это казалось отличным способом оптимизировать процесс, пока исследователи CCS не обнаружили, что 40% сгенерированного кода были крайне уязвимы, поскольку содержали недостатки дизайна и ошибки.

Но GitHub быстро извлек уроки из своих ошибок — как и многие другие модели кодирования ИИ.

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

Генеративный ИИ в кодировании

Благодаря быстрому развитию и повышению надежности генеративного ИИ многие разработчики используют такие платформы, как Amazon CodeWhisperer, Tabnine и обновленную версию Copilot, для автоматизации своих рабочих процессов кодирования. Такие инструменты, как проверки безопасности на основе машинного обучения, также используются для оценки конвейеров CI/CD.

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

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

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

Интеграция помощников на основе искусственного интеллекта

Такие LM, как GPT-4 от OpenAI, формируют основу для помощников по кодированию ИИ, приводя в действие базовую технологию инструментов, разработанных для создания функционального компьютерного кода. Эти модели были обучены на огромном количестве языков программирования, документации и реальных примерах кода, что позволяет им понимать намерение, стоящее за подсказкой разработчика, и структуру правильно сформированного кода.

Такие инструменты, как GitHub Copilot, строятся на этой основе, активно помогая разработчикам в режиме реального времени . Пока разработчики печатают, Copilot отслеживает нажатия клавиш и контекст в файле. Затем он использует возможности прогнозирования GPT-4, чтобы сделать вывод о том, чего пытается достичь разработчик, будь то написание функции, отладка или завершение класса. Основываясь на этом понимании, он генерирует релевантные и пригодные для использования фрагменты кода на лету.

Другие помощники ИИ, такие как Meta's Code Llama и Stability AI, предлагают ряд возможностей, разработанных для разработчиков. Code Llama предоставляет бесплатную модель генерации кода для разработчиков всех уровней квалификации, StableCode от Stability AI помогает разработчикам автоматизировать процесс кодирования, а такие модели, как ChatGPT, могут помочь писать, оптимизировать и отлаживать код.

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

Глубокое обучение и LLM

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

Большие языковые модели (LLM) также привели к заметным достижениям в области ИИ, обработки естественного языка (NLP) и кодирования. Эти модели могут понимать вводимые данные на естественном языке и генерировать текст и код, похожие на человеческие. Их результаты основаны на огромных объемах данных, на которых они были обучены.

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

Эти платформы используют данные из частных и публичных репозиториев кода для улучшения своих предложений и возможностей с течением времени. По мере обучения они генерируют все более контекстно точный код для разработчиков. Большинство инструментов поддерживают широкий спектр языков программирования, от Python, Java, JavaScript и C++ до C#, TypeScript, Rust, Kotlin, Perl, R и других.

Коллективные преимущества ИИ для кодирования

Генеративные платформы ИИ, ИИ-помощники и модели глубокого обучения предлагают ключевые преимущества для рабочих процессов кодирования.

Повышение производительности

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

Более быстрое развертывание

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

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

Расширенное сотрудничество

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

Постоянное повышение квалификации

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

Основные направления для использования ИИ

Генерация кода

Нейронные сети, обученные на данных по работе с кодом, могут создавать их фрагменты или создавать полноценные функции в соответствии с заданным программистом текстовым описанием. Обучение нейронных сетей на данных по работе с кодом, проходит в несколько этапов. Эти этапы включают сбор данных, предварительную обработку, обучение модели и тестирование.

Сбор данных:

- Источники данных: Нейронные сети обучаются на данных из различных источников, таких как репозитории кода на GitHub, вопросы и ответы на форумах вроде StackOverflow, а также на других открытых ресурсах, связанных с программированием.

- Типы данных: Включаются примеры кода, комментарии к коду, обсуждения проблем и решений, документация и учебные материалы.

Предварительная обработка данных

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

- Разметка данных: Код размечается с учетом синтаксиса и семантики. Это включает идентификацию структур кода, таких как функции, классы, переменные и комментарии.

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

Обучение модели

- Архитектура модели: Выбирается архитектура нейронной сети, подходящая для задач обработки естественного языка и программного кода.

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

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

Тестирование и валидация

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

- Исправление ошибок: Модель тестируется на способности обнаруживать и исправлять ошибки в коде. Проверяется, насколько эффективно она может предложить правильные исправления.

- Итеративное улучшение: На основе результатов тестирования модель дорабатывается и дообучается для повышения ее точности и надежности.

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

Поиск ошибок и исправление синтаксиса

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

Вот более конкретные аспекты этой технологии:

- Контекстуальный анализ: Нейронные сети, такие как Codex и Copilot, анализируют весь доступный кодовый контекст, включая предыдущие строки, функции и комментарии. Это позволяет им понимать, как каждая часть кода взаимодействует с остальными частями программы, что особенно важно при поиске ошибок.

- Распознавание языка программирования: Нейросети обучены на огромном количестве данных, включающих множество языков программирования, таких как Python, JavaScript, Java, C++, Go и другие. Это позволяет им автоматически распознавать язык программирования и применять соответствующие правила синтаксиса и семантики.

- Обнаружение синтаксических ошибок: При анализе кода нейросети могут обнаруживать синтаксические ошибки, такие как неправильное использование скобок, отсутствие точек с запятой или некорректное объявление переменных. Например, если в коде на Python пропущен двоеточие после конструкции if, нейросеть может это заметить и предложить исправление.

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

- Точность и ошибки: Хотя нейросети обладают высокой точностью при обнаружении и исправлении ошибок, они не безупречны. В некоторых случаях они могут ошибаться, предлагая некорректные исправления или не замечая более сложные логические ошибки. Поэтому разработчики должны проверять предложенные изменения и использовать их с осторожностью.

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

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

Рефакторинг

Нейросети могут использоваться и при работе с уже работающим кодом. Рефакторинг кода - это по сути его оптимизация и улучшение. Как говорится, нет предела совершенству. ИИ помощник на основе анализа может помочь сделать уже написанный код лучше, надежнее, более читаемым, например, указать на некие спорные моменты, которые разработчик мог пропустить (предложить более подходящий пакет, указать на наличие существующей похожей функции в другой части кода, которую можно переиспользовать вместо написания новой и т.п.). Оптимизируя код, нейронная сеть улучшает программный продукт, подстраивая его под потребности и интересы потенциальных пользователей. Кроме того, рефакторинг позволяет сделать конечный код более структурированным и не загруженным – в дальнейшем с ним будет удобнее работать.

Подведение итогов

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

Однако по мнению специалистов DST Global, этот подход, с низким кодом не отнимает у разработчиков работы. Он дает им возможность оптимизировать рабочие процессы и завершать проекты быстрее и эффективнее.

Как искусственный интеллект меняет способ написания кода разработчиками
Получить консультацию у специалистов DST
Напишите нам прямо сейчас, наши специалисты расскажут об услугах и ответят на все ваши вопросы.
Комментарии и отзывы экспертов
RSS
Что думаете насчет Copilot?
15:22
+3
Copilot позволяет разработчикам значительно сократить затраты времени на выполнение многих рутинных задач, поиску документации и информации по использованию отдельных команд, синтаксиса и принципов работы различных функций и модулей. Copilot также будет крайне полезен начинающим программистам, поможет избежать множества распространенных ошибок и быстрее разобраться с незнакомыми ранее аспектами разработки.

Создает ли GitHub Copilot идеальный код? К сожалению, нет. На официальном сайте можно прочитать, что, хотя создатели прилагают все усилия, чтобы инструмент предлагал наилучшее соответствие, нет гарантии, что предложенные решения будут работать на практике. Так, в рамках тестирования на языке Python, программа эффективно справилась с 43% запросов с первого раза и сгенерировала правильный работоспособный код после 10 попыток в 57% случаев. По этой причине очень важно тщательно проверять и тестировать каждое решение, предложенное нейросетью перед эксплуатацией.

Помимо Copilot также существует масса других специализированных ИИ-сервисов, таких как StarCoder, Wolverine, Blackbox AI. Эти инструменты предназначены для поддержки разработчиков в различных аспектах программирования, включая написание кода, автоматическую отладку, анализ и предложения по улучшению кода. Я с ними ознакомился лишь поверхностно, а потому буду признателен, если поделитесь своими впечатлениями и опытом работы в комментариях!
Заключение

Искусственный интеллект, даже на текущем этапе развития, становится неотъемлемой частью профессиональной деятельности, особенно в сфере программирования. Примеры использования ИИ у нас в компании показывают, что это может улучшить рабочие процессы, сократить время на выполнение рутинных задач и повысить общую продуктивность. Но разумеется, мы будем продолжать интеграцию в рабочие процессы и обучать сотрудников эффективному использованию, иначе можно остановиться на чат-ботах, а возможности гораздо шире, т.к. даже интеграция в IDE – это лишь верхушка айсберга.
Наша компания задумала интеграцию на основе GitHub Copilot, как самого популярного на текущий момент инструмента, но конечно возникает вопрос — как использование GitHub Copilot может помочь разработчикам?
Среди огромного разнообразия нейросетей, количество которых только увеличивается с каждым днём, можно выделить несколько технологий, способных качественно обрабатывать и дорабатывать код. Одним из самых популярных и известных AI помощников безусловно является GitHub Copilot. Это современный инструмент, предназначенный для программистов, использующих технологию искусственного интеллекта. Он помогает создавать код быстрее с минимальными усилиями.

Ядром GitHub Copilot является алгоритм OpenAI Codex — новая система искусственного интеллекта. Авторы программного обеспечения подчеркивают, что оно «понимает» контекст гораздо лучше, чем другие продукты этого типа, предлагаемые на рынке. Независимо от того, работает ли разработчик над документом, комментарием или функцией, GitHub Copilot предоставляет контекстно-зависимые предложения на основе собранных данных. Буквально через секунды GitHub может представить пример использования новой функции или объекта.

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

Серьезным плюсом является то, что GitHub Copilot доступен для установки в качестве расширения во многих широко используемых IDE, включая такие продукты, как Visual Studio Code, Neovim и JetBrains. Такая интеграция даёт возможность с удобством пользоваться всеми функциями и преимуществами ИИ непосредственно во время привычного процесса разработки без необходимости отвлекаться на обращение к сторонним ресурсам, отдельным чат-ботам и вебсайтам.

А вот насчет как использование Copilot может помочь разработчикам?

Использование Copilot предполагает ряд полезных возможностей для облегчения и упрощения работы программиста:

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

— генерация кода на основе повторяющегося шаблона

— проверка работоспособности кода

— проверка на наличие ошибок и варианты их исправления

— предложения оптимизации и замещающего контента для указанных фрагментов кода

— объяснение принципов работы кода и его отдельных фрагментов с учётом анализа кодовой базы текущего проекта

— поиск и вывод необходимой документации

— автоматическое написание документации к программным кодам

Очень удобно, что подсказки от ИИ предлагаются непосредственно в процессе разработки. Это позволяет сразу оценить их полезность и воспользоваться предложенными решениями, либо продолжить дальнейшее написание кода самостоятельно.
Совершенно потрясающая статья, хоть и очень небольшая, от того не сильно содержательная, но отлично передающая дух надвигающейся эпохи — я с автором 100% согласен! За программированием с применением искуственного интеллекта (недалёакое) будущее — хотя оно уже наступает — всё-таки, я думаю это станет очевидным лишь ближе к середине века — а расцвет случится уже к концу века (или в начале следующего) — и всё что мы имеем сейчас, после данного этапа эволюции — покажется лишь детским лепетом — а кульминацию стоит ждать ещё через одно-два столетия (хотя может и существенно дольше — это как пойдёт) — когда программисты, в нынешнем их понимании — уже будут практически не нужны — ИИ сами будут писать свой код (и все прикладные и системные приложения будут функционировать и обновляться на основе AI). По оптимистическим мои прогнозам к XXV-век Останется только 3 класса не сильно многочисленных (может пара сотен ярдов) людей-программистов (это при условии развития общества в экспансию рождаемости — на триллионы в год) и удлинение периода активной жизни (на сотни, а затем тысячи лет), и, вероятно, применение технологий компактификации содержания органической жизни (от Матрицы… до… жизни в «пробирке» (колбе) — не помню сейчас у кого из фантастов была такая идея) и расселению людей хотя бы по Солнечной системе; хотя может быть и обратное (существенное сокращение числа людей до золотого миллиарда/триллиона, а то и ещё мельче — при жёстком контроле за рождаемостью, сокращению стремления размножаться и ограниченных ресурсах) — но это всё лирика! И так три класса будущих программистов:

— Исследователи — кто будут исследовать новые пути развития кодовой базы AI — в довесок к аналогичной деятельности самого ИИ

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

— Аудиторы — это ещё не выросшие Кураторы — занимаются периодическим аудитом всего кода, что генерирует ИИ, от корректности до производительности — делают настройки и баг фиксы на местах — являются прямыми помощниками Кураторов

Но это всё ещё не скоро (XXV век или ещё гораздо позже — если к тому моменту ИИ не запретят вовсе (вспоминаю Френка Герберта) или он не уничтожит всё человечество, или оно само не вымрет или просто станет отупеет до обезьяньего уровня — в т.ч. как раз из-за того, что ИИ всё будет за них делать).

А в XXI и XXII веке — ещё очень как нужны будут программисты (и не только системные или нейро-программисты). В этих периодах ИИ ещё будет достаточно слаб, на фоне своего дальнейшего развития — и им нужно будет ещё очень специфически управлять (давать задачи), и контролировать его результат.

И тут я уже несколько лет пропагандирую, что грядёт эпоха ЯП 5-го поколения, которые будут спроектированы изначально под глубокое взаимодействие с ИИ, продвинутые IDE и последующую кодогенерацию. Их синтаксис, семантика и фреймворки — будут специально разработаны так, чтобы писать код наиболее обобщённо и абстрактно, но в то же время — оптимально для быстрого эффективного разбора для глубокого понимания целей и формирования деталей реализации!

На мой взгляд все актуальные ЯП — для этого не очень подходят — они проектировались для людей, а не для машин!

А ЯП 5-го поколения, с моей точки зрения, должен быть исходно — декларативным, но при этом гибким, и привычным для программистов привыкших императивному, ООП и функциональному стилям программирования. Но код — всё же должен скорее декларировать описание целей того, что надо сделать — как можно менее (но не исключая) затрагивая детали того — как это сделать! Всё остальное — уже дело ИИ-компилятора!

Код будет мало привяз и к платформам и к языкам и к фреймворкам — единая кодовая база — для кодогенерации подовсё!

Само собой, не всегда всё можно реализовать на абсолютно всех платформах — но это уже подскажет ИИ — не стоит писать игру Doom — для калькулятора (хотя — это уже сделали — но не на каждом калькуляторе она, всё-таки, запустится)! Не стоит писать программу расчёты космических полётов для умных лампочек (хотя… распределённая сеть умных лампочек в многоквартирном/офисном доме вполне себе может очень эффективно справляться с такой задачей)!

Само собой — для эффективной кодогенерации нужны хинты — для явного целеуказния ИИ — по-потребности!

Само собой — сама IDE должна активно содействовать как на этапе постпроцессинга, так на этапе ввода программного кода прям «на лету» — сразу проводя анализ и давая подсказки (всё это есть уже сейчас), предлагая хинты настроек конфигурации текущего контекста и дальнейшей кодогенерации! Так же IDE должна иметь средства по умному рефакторингу, применению шаблонов и встраиванию кода из базы знаний в текущий контекст с адаптацией под него. И средства глубокого анализа и подготовки тестирования программного кода! И быстрого предпросмотра генерируемого кода!

Ну и средства отладки таких программ должны быть тоже — особыми — адаптированными под декратаивный исходный код и последующую кодогенерацию
15:27
+1
В 1983 году поляки сняли весьма умную комедию «Сексмиссия» (поскольку в СССР секса, как известно, не было, то фильм — разумеется, с купюрами — крутили под названием «Новые амазонки»). Если коротко — в результате глобальной катастрофы передохли все мужики. Остались только двое, которые выжили благодаря эксперименту по замораживанию. Женщин катастрофа не затронула. Итого, на немеряную толпу женщин всего два самца. И понеслось…

Весьма отдаленно, но это проецируется на Ваш богатый мыслями и фантазией пост. Надеюсь, не обижу такой параллелью )
Данный фильм я уже очень давно видел — и всё давно хочу пересмотреть — лежит уже пару лет на винте (кстати на схожу тему — есть серия книг и недавний сериал «Укрытие»)

Но… есть куда более современны фильм, показывающий один из вариантов будущего — «Дитя робота» / «I Am Mother» — но — это лишь один из возможных сценариев! Как вариант будущего — это показанное в мультфильме «Валл-И». Но могут быть и другие сценарии… не обласканные кинорежиссёрами, а порой и не обласканные даже писателями фантастами (хотя те уже столько всего на прогнозировали — что тут уже сложно быть уверенным, что ещё придумаешь что-то оригинальное для всего человечества) — кстати все эти с материалы 100% послужат исходной базой обучения ИИ — который учтёт и проанализирует такие сценарии развития — и будет вести свою деятельность опираясь на эти знания (уж в какую строну — не знаю).

Но, всё-таки, во всех этих фильмах не про программирование и не про программистов (простите Сексмиссию в деталях не помню).

Всё же я выше написал пост в рамках сабжа статьи — про развитие технологий программирования с применением ИИ на ближайшие несколько столетий! А, в первую очередь, именно на вторую половину XXI века! Тут пока ещё не до роботов и продвинутых ИИ систем, с интеллектом, близким к человеческому!

Ещё на тему стратегий развития человечества и ИИ можно вот тут мой комментарий глянуть (да и другие комментарии, и всю статью )
Результат может быть разным. Разные модели данных, и даже та же самая модель данных и алгоритм — могут по-разному формировать результат. Так же как и люди. Но один код может стать лучше, другой нет. Даже один и тот же код на разных прогонах может быть лучше и хуже даже на одной модели!

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

Главная дилемма — сейчас ИИ очень сложно оценивать исходный (в т.ч. в базе данных) и сгенерированный код на предмет его эффективности (по набору параметров). Пока только, относительно доступный критерий — это «повторяемость»/«распространённость» частей кода. Но и плохой код может быть очень широко распространён. Более того — как раз эффективный и сложный код распространён очень мало — люди просто мало его пишут, тем более в публичных источниках!

А, вот ИИ — как раз наоборот — может генерировать сложный и очень хитрый код — на котором потом и обучаться!

Но ИИ всё-равно не хватает критериев эффективной оценки кода по целому набору параметров и способов проводить эту оценку — но подход «синтетических данных» может включать в себя не только банальную обработку текстов — но и фактическую проверку программ в режиме исполнения — что позволит собрать больше сведений параметров эффективности!

Но вторая дилемма — эффективность кода очень сильно зависит от контекста и среды применения (входных данных и иных условий эксплуатации) — и вот это ИИ генераторам пока вообще не по зубам — а именно готовность эффективно работать в заданной среде — и определяет конечную эффективность программы — а не её математическая красота!

Вообще — я пропагандирую ЯП 5-го поколения — где написанный/сгенерированный код вообще не является статическим — он постоянно тестируется, профилируется и переоценивается — именно в реальной (снача, конечно, в тестовой) среде эксплуатации. Кстати, а в будущем — ИИ может ещё и сам создавать отдельные тестовые контуры из продуктивной среды — и устраивать там свои эксперименты по разным сценариям эксплуатации и разным видам данных. И по результатам собранных данных генерировать новые версии кода — это и есть динамическое программирование! И, само собой, помещать собранную статистику и версии кода в общую базу знаний — чтобы последующие генерации учитывали этот опыт.

И, кстати, зачатки такой стратегии перекомпилирования уже появились даже сейчас — NET 8 уже так умеет — его JIT-компилятор сначала может генерировать менее оптимальный код (но быстро) — затем запускать его — профилировать на реальном выполнении — и на основе карты быстродействия — параллельно компилировать (уже более длительно и вдумчиво) — новую версию коду. В дальнейшем код снова мог бы снова профилироваться — если будут предпосылки — он мог бы снова перекомпилироваться! Помоем и в Java такое тоже уже есть или ожидается (не помню точно)!
Вам может быть интересно
Полное руководство по защите данных, моделей и пользователей в эпоху GenAI. В этой статье от разработчиков компании DST Global, приведены практические контрольные списки, которые помогут предприятиям ...
Узнайте о достижениях искусственного интеллекта на устройствах и о том, как он п...
Что такое рекомендательные системы и как они работ...
В последние годы веб-разработка переживает настоящ...
В этой статье, специалисты компании DST Global рас...
Не секрет, что в настоящее время идет золотая лихо...
В разработке интеллектуальных приложений наблюдало...
Искусственный интеллект (ИИ) - это быстро развиваю...

Новые комментарии

На чистом PHP уже почти никто не пишет. Вместо этого используют фреймворки — наб...
На чистом PHP уже почти никто не пишет. Вместо этого используют фреймворки — наб...
На чистом PHP уже почти никто не пишет. Вместо этого используют фреймворки — наб...

Заявка на услуги DST

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

Адрес

Ижевск, ул. Воткинское шоссе, д. 170 Е, Технопарк Нобель, офис 1117

8 495 1985800
Заказать звонок

Режим работы: Пн-Пт 10:00-19:00

info@dstglobal.ru

Задать вопрос по почте

Укажите ваше имя
Укажите ваше email
Укажите ваше телефон