javascript

Нейросети в разработке: мощный инструмент или слепая вера?

  • суббота, 8 марта 2025 г. в 00:00:06
https://habr.com/ru/articles/888670/

Привет, коллеги! Сегодня хочу поделиться осторожным оптимизмом по поводу нейросетей в программировании. Нейросети не только ускоряют процесс разработки, но и помогают находить ошибки, улучшать качество кода, писать хорошо оптимизированный код самостоятельно и изучать новые технологии. Да, они революционны, но слепое доверие к их «интеллекту» может стоить вам часов дебаггинга. Почему 80% восторженных статей пишутся по маркетинговым шаблонам, и как отделить реальные возможности от рекламной шелухи — давайте разбираться.

Из чего на самом деле слеплены нейросети?

Главный секрет ИИ — не магия, а данные. Нейросети «кормят» датасетами, собранными:

  • Из открытых источников (GitHub, Stack Overflow, форумы) через парсинг.

  • Через пользовательские взаимодействия (ваши запросы в ChatGPT — это новый «корм»).

Ключевая проблема данных, в их качестве. Нет гарантий, что информация:

  • Актуальна (например: код на устаревшей версии React, использование устаревших библиотек, отсутствие поддержки браузерами).

  • Корректна (35% решений на Stack Overflow содержат ошибки, по данным исследования университета Оттавы, а о содержимом GitHub страшно даже думать).

  • Непредвзята (алгоритмы наследуют человеческие стереотипы, как показал скандал с Tay от Microsoft).

Также стоит отметить главную проблему ИИ на сегодняшний день - Катастрофическую забывчивость. Катастрофическая забывчивость — ключевой недостаток: нейросеть не накапливает опыт, как человек, она не видит закономерностей. Решив задачу А, она может полностью забыть её при обучении задаче Б. Это как переучить повара готовить суши, после чего он забудет, как делать пиццу.

Практический разбор: когда ИИ подводит

Рассмотрим задачу с Яндекс.Практикума. В примере будем использовать DeepSeek, с включенными функциями «Глубокого мышления» и «Поиска». Дадим ей условие задачи в том варианте, который есть на странице, и мы видим что ИИ поняла, что задача сводиться к одному из самых популярных вопросов на собеседованиях для Frontend-разработчиков, к замыканиям.

Исходный код от нейросети:

function createCountdown(n) {
    let start;
    if (typeof n === 'number' && Number.isInteger(n) && n >= 0) {
        start = n;
    } else {
        start = 0;
    }
    let current = start;
    return function() {
        const value = current >= 0 ? current : 0;
        if (current >= 0) {
            current--;
        }
        return value;
    };
}

Проблемы:

  • Избыточные переменные (start, current).

  • Валидация во внешней функции усложняет логику.

  • Игнорирование условия о проверке чётности числа (требовалось в задаче).

Давайте доведем код до ума самостоятельно.

Код после рефактора:

function createCountdown(num = 0) {
  if (!Number.isInteger(num)) num = 0;
  return () => num >= 0 ? num-- : 0;
};

Улучшения:

  • Сокращение кода на 60% без потери читаемости.

  • Валидация перенесена в возвращаемую функцию.

  • Устранён баг с отрицательными значениями.

Вывод: 

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

Как правильно «разговаривать» с ИИ

Эффективность нейросети на 80% зависит от качества вашего промпта. Основные принципы:

  • Конкретность: Вместо "Напиши функцию счетчика" используйте "Напиши функцию обратного отсчета на JS, которая возвращает следующее значение при каждом вызове, начиная с целого числа ≥0".

  • Контекст: Указывайте фреймворки, версии, ограничения ("Используй React 18 без сторонних библиотек, с поддержкой IE11").

  • Итеративность: Просите уточнять шаги, как ученика ("Почему ты использовал let вместо const здесь?").

  • Пример из практики: Запрос "Сгенерируй валидацию email на JS с учетом Unicode-символов" снизил количество ошибок в форме на 40%.

5 реальных сценариев, где нейросети незаменимы

  • Оптимизация кода - нейросети способны улучшить написанный код, сделать его короче, быстрее, понятнее. Пример: DeepSeek сократил цикл обработки данных с O(n²) до O(n) в моём проекте, убрав вложенные массивы.

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

  • Документирование – нейросети способны оставлять комментарии к коду, что очень упрощает жизнь другим разработчикам. Лайфхак: Использую DeepSeek для генерации JSDoc — он анализирует типы параметров и предлагает описания.

  • Изучение технологий - очень полезно задать вопрос и сразу получить на него ответ. Личный опыт: Разобрался с Framer-motion через серию уточняющих вопросов DeepSeek, когда официальная документация казалась филькиной грамотой.

  • Генерация контента - положа руку на сердце, я не умею рисовать svg, а большая часть svg иконок платная, и тут на помощь приходит нейросеть, которая быстро сможет отрисовать иконку и даже анимировать её. А с помощью генеративной модели Kadinsky можно генерировать изображения, анимации, видео, которые в дальнейшем можно использовать в рамках своих проектов. Личный опыт: Мне было необходимо добавить иконку приложения телеграм на страницу, и добавить к ней анимацию при нажатии.

Осторожно, подводные камни!

  • Слепая вера в корректность. Всегда тестируйте код ИИ — в 30% PR которые я получал с использование ИИ были с ошибками.

  • Утечки данных. Не передавайте нейросетям чувствительную информацию, например: запросы в ChatGPT могут стать частью её обучения (см. политику OpenAI).

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

Заключение

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

А как вы используете ИИ в работе? Доверяете ли вы нейросетям «с закрытыми глазами»? Давайте обсудим в комментариях!