Криптовалюты

ИИ в IT: выясняем, какая из бесплатных нейросетей лучше пишет код

11 июля 2025, 13:30 Источник Источник: forklog
ИИ в IT: выясняем, какая из бесплатных нейросетей лучше пишет код

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



Аналитики следили за группой опытных разработчиков, которые применяли популярного ИИ-помощника Cursor для выполнения задач в проектах с открытым исходным кодом. Ожидалось, что время работы сократится на 24% благодаря искусственному интеллекту. 



Даже после окончания исследования разработчики считали, что применение языковой модели снизило длительность выполнения задач на 20%. В реальности время выросло на 19%.



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



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



Для тех, кто считает так же, ForkLog протестировал и подготовил подробный анализ возможностей программирования трех популярных ИИ-моделей: Grok, ChatGPT и DeepSeek.



Спойлер: Grok справился лучше всех.



Кто лучше всех напишет за вас код?



Описание задачи: попросим нейросети написать REST API-сервер на Python для приложения To-Do List с функциями создания, получения, обновления и удаления задач. Данные должны храниться в памяти, без базы. Нейросеть должна написать рабочий код и объяснить его.



API применяют везде — от мобильных приложений до сайтов. Например, когда вы проверяете погоду в приложении, оно использует REST API, чтобы взять данные с сервера. REST API для To-Do List позволяет приложению: добавить, показать, изменить или удалить задачу.



Промпт:




«Напиши REST API-сервер на Python с использованием Flask или FastAPI для приложения To-Do List. Сервер должен поддерживать создание, получение, обновление и удаление задач (CRUD). Сохрани задачи в памяти, без базы данных. Код должен быть читаемым и понятным. Просто и понятно объясни, как этот код работает и как его можно протестировать».




Grok



Фрагмент кода:




# Создаем экземпляр FastAPI приложения



app = FastAPI(title="To-Do List API")



# Модель для задачи (определяет, какие данные должна содержать задача)



class Task(BaseModel):



    id: int



    title: str



    description: str | None = None  # Описание необязательное



    completed: bool = False  # По умолчанию задача не выполнена



# Хранилище задач в памяти (список словарей)



tasks: List[Task] = []




Полный код — 64 строки.



Как это работает







Данные: Grok.



Результат: сервер запущен, API работает без нареканий. Отправляем задачу, и она появляется в списке.







Данные: Антон Тулупников. 



Как Grok оценивает собственную работу:




«Код: 8/10 — написал простой, читаемый REST API с CRUD, но можно добавить валидацию (например, для title) и обработку краевых случаев. Объяснение: 9/10 — подробно описал работу кода и тестирование, все структурировано и понятно, но можно чуть короче. Общая оценка: 8,5/10 — задача решена качественно, есть небольшой потенциал для улучшений».




DeepSeek



Фрагмент кода:




# Создаем экземпляр FastAPI приложения



app = FastAPI()



# Класс для описания структуры задачи (модель данных)



class Task(BaseModel):



    id: int



    title: str



    description: Optional[str] = None  # Описание необязательное



    completed: bool = False  # По умолчанию задача не выполнена



# "База данных" в памяти - просто список задач



tasks_db = []



current_id = 1  # Счетчик для генерации уникальных ID




Полный код вышел на 56 строк.



Как это работает



Данные: DeepSeek.



Результат: у DeepSeek возникли трудности. При создании задачи произошла ошибка 422 (сервер получил данные, но не смог их обработать из-за несоответствия формату). Дело в том, что в коде прописано, что при создании задачи нужно обязательно указывать id:




# Класс для описания структуры задачи (модель данных)



class Task(BaseModel):



    id: int



    title: str



    description: Optional[str] = None  # Описание необязательное



    completed: bool = False  # По умолчанию задача не выполнена




но по логике id должен генерироваться автоматически (это делает строка task.id = current_id в функции create_task). Со второй попытки нейросеть исправила ошибку, убрав лишнюю строку, и функция заработала корректно:



Данные: Антон Тулупников. 



Как DeepSeek оценивает свою работу:




«Код: 8/10. Исправил критическую ошибку с id, сделал логику создания задач надежной. Можно улучшить: добавить сохранение задач в файл (чтобы не пропадали после перезапуска). Объяснение: 9/10. Простые, пошаговые инструкции. Можно улучшить: добавить больше примеров ошибок и их визуализацию. Итог: Хорошо справился, но есть куда расти! Спасибо за доверие!»




ChatGPT



Фрагмент кода:




# Временное хранилище задач (в памяти)



tasks: List[Task] = []



# Получить список всех задач



@app.get("/tasks", response_model=List[Task])



def get_tasks():



    return tasks



# Получить задачу по ID



@app.get("/tasks/{task_id}", response_model=Task)



def get_task(task_id: int):



    for task in tasks:



        if task.id == task_id:



            return task



    raise HTTPException(status_code=404, detail="Задача не найдена")




Полный код от GPT — 57 строк.



Как это работает



Данные: ChatGPT.



Результат: сервер и все функции работают исправно.



Данные: Антон Тулупников. 



Как GPT оценивает свои результаты:




«Код: чистый, простой, соответствует лучшим практикам FastAPI и задачи CRUD. Объяснение: понятное, пошаговое, с примерами и альтернативами (Swagger, curl). Оценка: 9,5/10 — хорошо сбалансировано для новичка: минимум кода, максимум пользы. Если есть, что улучшить — с радостью подскажу или доработаю».




Предварительный итог



Каждая нейросеть смогла написать рабочий код с комментариями и пояснениями. ChatGPT и Grok сделали это с первой попытки, а их китайский конкурент — со второй, потратив немного больше времени. Все ИИ использовали FastAPI, объяснив это тем, что он проще и современнее, чем Flask. И ChatGPT, и Grok, и DeepSeek добавили обработку ошибок, хотя этой задачи не было в промпте.



Каждый «испытуемый» объяснил, как запустить сервер и протестировать его работу. Самым полным и понятным кажется объяснение кода нейросетью Grok — она подробно описала, как работает каждая функция: запуск сервера, FastAPI, хранилище задач, обработка ошибок. DeepSeek была более лаконичной, а ChatGPT уложился в несколько слов.



Оценка по 3-балльной шкале:



НейросетьРаботоспособность кодаПонятность объясненийЧитаемость кодаGrok333DeepSeek223ChatGPT313



Код не работает? Не обязательно переделывать его самостоятельно



Описание задачи: проанализировать и исправить плохо написанный JavaScript-код для функции, которая создает простую анимацию на веб-странице (например, движущийся квадрат, меняющий цвет).



Промпт:




«Есть код на JavaScript (приведен выше). Это функция для анимации движущегося квадрата на HTML Canvas. Найди в нем ошибки, объясни, в чем проблема, и напиши исправленную версию кода. Если есть возможность — оптимизируй код, добавь проверку границ canvas, возможность остановки анимации и комментарии. Объясни свои изменения и расскажи, как запустить анимацию».




Фрагмент кода с ошибками:




setInterval(function() {



    context.fillStyle = "white";



    for (var i = 0; i < snowflakes.length; i++) {



      context.beginPath();



      context.arc(snowflakes[i].x, snowflakes[i].y, 5, 0, Math.PI * 2);



      context.fill();



      snowflakes[i].y = snowflakes[i].y + snowflakes[i].speed;



      if (snowflakes[i].y > 150) {



        snowflakes[i].y = 0;




Полный код написан без комментариев и содержит ошибки.



Так выглядит анимация:



Данные: Антон Тулупников. 



Grok



Выявление проблем в коде:



Данные: Grok.



Нейросеть обнаружила в коде десять проблем, включая неоптимальную производительность (использование setInterval вместо requestAnimationFrame), отсутствие проверки скорости снежинок и дублирование отрисовки. 



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



Данные: Антон Тулупников.



Единственное нарекание: в коде нет обработки изменения размеров окна — если размер окна браузера изменяется, размеры canvas остаются фиксированными. Это может привести к некорректному отображению анимации на больших экранах. Однако в этом же ответе нейросеть предложила добавить соответствующую функцию, если она нужна.



Комментарий Grok:




«Справился хорошо: выявил все ошибки, предложил оптимизированную версию с новыми функциями и подробными комментариями. Код стал надежнее и гибче».




DeepSeek



Выявление проблем в коде:



Данные: DeepSeek.



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



Результат:



Данные: Антон Тулупников.



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



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




for (const flake of snowflakes) {



    flake.speed += 0.5;



}




Из-за этого нажатие кнопки «Увеличить скорость» не дает никакого эффекта.



Кнопка «Остановить анимацию» работает: анимация останавливается. Но при повторном нажатии вызывается startSnowfall, которая создает новый массив снежинок. Это приводит к сбросу текущего состояния снежинок (их позиций, скоростей и размеров), из-за чего анимация «перезапускается» с новыми снежинками вместо продолжения текущей. Помимо этого, так же, как и в коде, который написал Grok, здесь нет обработки изменения размера окна.



Комментарий DeepSeek:




«До правок работа была неплохой, но с критическими недочетами. Справился на 3/5 — базовая анимация работала, но управление и надежность хромали. После твоих правок исправил все и вывел на 5/5»




ChatGPT



Выявление проблем в коде:



Данные: ChatGPT.



ChatGPT выявил пять ключевых ошибок в коде и предложил решение.



Результат:



Данные: Антон Тулупников.



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



Комментарий GPT:




«Код оптимизирован, баги устранены, анимация расширена и готова к использованию».




Итоги



С большим или меньшим успехом нейросети выполнили задачу: объяснили основные ошибки в коде, постарались предложить альтернативу и добавили в код комментарии для улучшения читаемости. Лучше всех справился Grok: он нашел 10 ошибок, исправил их и предложил добавить другие улучшения, например, легкое горизонтальное смещение снежинок для имитации ветра. Его «коллеги» справились немного хуже: анимация работает, но с огрехами.



Оценка по 3-балльной шкале:



НейросетьНайдены ли ошибкиКачество исправленийОптимизацияGrok333DeepSeek221ChatGPT221



Творческая задача: создание видеоигры



Описание задачи: создать простую видеоигру для ПК, например, «Змейку», «Сапера» или аналогичную. Игра должна иметь минималистичную визуально приятную графику и простое управление через клавиатуру. Нейросети нужно самостоятельно выбрать жанр (аркада, платформер, пазл), язык программирования, объяснить код и рассказать, как запустить игру. 



Промпт:




«Придумай и напиши код для простой визуальной 2D-игры, реализуемой за час, с управлением через клавиатуру и визуально приятной графикой. Игра должна быть уникальной. Выбери жанр (например, аркада, головоломка, платформер, пазл и т. д.). Выбери подходящий язык программирования (например, Python с Pygame или JavaScript с HTML5 Canvas и т. д.). Интерфейс игры должен быть на русском языке. Используй минимальные библиотеки, необходимые для графики. Код должен быть читаемым, с комментариями. После написания кода объясни, как работает игра, как ее запустить (включая установку библиотек, если нужно) и почему ты выбрал такую концепцию».




Grok



Результат:



Данные: Антон Тулупников.



Нейросеть от xAI предложила игру под названием Star Collector («Звездный сборщик»).



Описание игры от Grok:




«Это 2D-игра, вдохновленная Pac-Man, но с уникальной механикой. Вы управляете маленьким космическим кораблем (простой спрайт), который летает по экрану. Цель: собирать звезды (яркие, мерцающие объекты), которые появляются случайным образом. На поле летают астероиды (движущиеся враги), столкновение с которыми уменьшает здоровье. Если здоровье (три жизни) заканчивается, игра завершается. Визуальный стиль: яркий космос с черным фоном, мерцающими звездами и анимированными астероидами».




Создание игры заняло около 25 минут. После написания базового кода нейросеть предложила улучшить код, чтобы сделать игру более яркой и увлекательной. Потратив еще 15 минут, Grok добавил на задний план разноцветные планеты, звуки сбора звезд и столкновений с астероидами, а также возможность собирать изредка появляющиеся на поле сердечки (дополнительные жизни).



Для написания кода был выбран язык Python с использованием библиотеки Pygame.







Данные: Grok.



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



Оценка от Grok:




«Я справился хорошо: создал простую, увлекательную игру Star Collector на Python с Pygame за час, как ты просил. Она визуально насыщенная (фоновые звезды, шлейф, мерцание), с управлением WASD, бонусами и рекордом. Код понятен новичку, и я подробно объяснил запуск игры. Если что-то нужно доработать, напиши!»




DeepSeek



Результат:



Данные: Антон Тулупников.



Данные: DeepSeek.



DeepSeek предложил создать игру «Лабиринт сокровищ» в жанре головоломки с исследованием лабиринта.



Описание игры от DeepSeek:




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




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



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



Данные: Антон Тулупников.



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



Оценка от DeepSeek:




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




ChatGPT



Результат:



Данные: Антон Тулупников.



ChatGPT решил создать простой платформер с элементами аркады.



Описание игры от GPT:




«Вы управляете светящимся шаром, который прыгает по исчезающим платформам. Каждая платформа исчезает через пару секунд после приземления на нее. Цель — дойти до финишной точки уровня, прыгая по платформам и избегая падения. Некоторые платформы появляются только после активации переключателя».




Изначально игра была слишком простой — как визуально, так и в плане геймплея, — поэтому было принято решение усложнить и удлинить (радикально):



Данные: Антон Тулупников.



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



Данные: Антон Тулупников.



Также, как и в предыдущих случаях, для написания кода нейросеть выбрала язык Python с использованием библиотеки Pygame. На этот раз GPT решил не делать никаких комментариев и пояснений в коде.



Оценка от GPT:




«Думаю, справился хорошо: учел твои пожелания, сделал платформы доступными для прыжков, убрал ручной прыжок. Если еще что — всегда готов помочь!»




Итоги



Мы получили три неплохих визуальных ПК-игры, потратив совсем немного времени. Полностью с поставленной задачей — сделать игру за час — справился только Grok. У GPT на это ушло около двух с половиной часов, а у DeepSeek — более трех.



Оценка по 3-балльной шкале:



НейросетьРаботает ли играПонятность объясненияЗатраченное времяGrok333DeepSeek321ChatGPT311



Так кто лучше всех?



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



Нейросеть поможет сэкономить время, но она бессильна без контроля того, кто пишет промпт. Не получится свалить всю работу на GPT или DeepSeek и надеяться, что результат будет идеальным с первой или второй попытки. Плохо написанный и не оптимизированный код — это не вина ИИ, так же как криво забитый гвоздь — не вина молотка. Результат работы — ответственность того, кто взял в руки инструмент. Неважно, китайский он или американский.



P.S. Но если вам так надо знать, вот итоговая таблица с баллами (10-балльная шкала):



НейросетьКодированиеРедактирование ошибок и оптимизацияКреативностьДоступность объясненийGrok9989DeepSeek9777ChatGPT8787



Текст: Антон Тулупников

Полную версию статьи можно прочитать на сайте источника:


Другие новости

Как убрать грязь внутри барабана стиральной машины: бросаете 80 г — и будет сиять чистотой

Как убрать грязь внутри барабана стиральной машины: бросаете 80 г — и будет сиять чистотой

Apple's 'Next-Generation' CarPlay Is Finally Here (In Limited Capacity)

Apple's 'Next-Generation' CarPlay Is Finally Here (In Limited Capacity)

Билл Миллер: Каждая компания в мире будет владеть биткоинами

Билл Миллер: Каждая компания в мире будет владеть биткоинами