
... или может ли ИИ заменить программиста? Сейчас со всех сторон долбят про то, как ИИ помогает в жизни и вообще, если ты не используешь ИИ, то ты в отстающих и лузер. Я к этому отношусь спокойно, ибо мои занятия совершенно не допускают использование ИИ из-за очень большой цены ошибки, но долбежка все-таки делает свое дело. Плюс как-то внезапно обнаружил, что у (не реклама) cloud.ru доступны Foundation Models (они же БЯМ, они же LLM) без оплаты. Понятное дело, тестовый период и прочее, но использовать можно. Но просто мучать модельки вопросами уровня «сколько цифр в слове» смысла мало, поэтому решил попробовать сделать что-то хоть капельку полезного и получить собственный ответ на вопрос пригодности БЯМ. Результат для нетерпеливых тут https://github.com/kiltum/zxgo
Далее несколько абзацев истории, чтобы просто было понятно, каким путем я шел до результата. Скажу честно, выбор места приложения сил БЯМки был сделан довольно быстро: напиши мне много кода. Раз пока все бесплатно, выбрал самый большой Qwen и предложил ему написать эмулятор КР580ВМ80А (он же Intel 8080), причем на питоне. И внезапно, он с первой попытки сгенерил что-то очень похожее на правду. Хмыкнув, я нашел образ ПЗУ от Радио-86 и зарядил еще пару десятков запросов. Вскоре я с глубоким удовлетворением увидел в окошке заветное «РАДИО 86-РК» и следом «-->».
Немного порадовавшись результату, я преисполнился энтузиазма и решил поднять ставки. Z80 и ZX Spectrum! Культовая машина, все нюансы которой разложены по полочкам и по которой документации на порядки больше, чем для «радио»,«микроши» и «специалиста» вместе взятых. А чтобы было совсем хардкорно, основным языком я выбрал С++.
Первый подход оказался полным провалом. На выходе у БЯМки получилась какая-то каша, которая походила на эмулятор Z80 меньше, чем я на программиста. Скажу честно, это было крайне неожиданно для меня: ведь обучающих материалов (читай: готовых и работающих эмуляторов, написанных на С или С++) для Z80 гораздо больше. Бери и копипасти! В смысле, генерируй. Но нет, БЯМка не осилила.
Второй подход вместе с третьим тоже завершился пшиком. Нет, эмулятор научился выполнять простейшие опкоды типа “LD A,(HL)” но дальше был затык. Попытавшись разобраться в нагенерированном коде, я признал полный провал: даже на мой неопытный взгляд, там были собраны все самые худшие практики программирования. Как говорится, на чем научился, так и пишем.
Вскоре я плюнул и решил начать очередной этап «начинаем все с чистого листа». Задача та же, но язык меняю на Go. Там, как и на питоне, чтобы писать криво, надо специально постараться. Попутно, уже набравшись опыта общения с БЯМкой и вспомнив все пройденные курсы, начинаю делать все маленькими шажочками.
Буквально пара недель по вечерам и результат может оценить любой. Эмулятор ZX Spectrum 48k. Практически 100% эмуляция Z80, со всеми скрытыми флагами и недокументированными особенностями. Почему практически? Один тест все-таки падает, но он совершенно не критичный. Честная эмуляция ULA с правильным расчетом таймингов, поэтому «те самые полоски» можно увидеть. Умеет читать и запускать TAP, но с TZX пока засада. Ну и самое больное это звук, я там уперся в приоритеты потоков. Как оказалось, Go совершенно не имеет нормальной многозадачности, но это тема для какой-либо другой статьи.
Ну а теперь то самое, ради чего была написана эта статья. Может ли БЯМ заменить программиста
БЯМ это джун. Причем джунистый джун. Не стоит давать ему задачи, которые хоть чуть-чуть требуют масштабности или глубины. Он теряется и начинает гнать дичь. Если надо что-то большое сделать, то бьем на мелкие подзадачи и заставляем фокусироваться только на этом. Реально, пишем «Focus on … , ignore others».
БЯМ это очень усидчивый джун. Просите поменять 400 кусков кода, попадающих под единый шаблон (у меня это длинный switch...case с опкодами команд) и он с очень большой вероятностью сделает все без единой помарки.
БЯМ это очень любопытный джун. Он обожает лезть во все места под предлогом «мне необходимо посмотреть существующую реализацию». И, что самое неприятное, он игнорирует при этом прямые запреты. В результате контекстное окно переполняется или он просто не может прочитать файлы из-за их размеров. Или попросту не поймет в них ничего. Решение тут только одно: создавать минимально возможное окружение для задачи. Лишние файлы убирать, большие исходные данные для тестов обрезать и так далее.
БЯМ это очень «начитанный» джун. Базовые алгоритмы на любом языке он генерит не приходя в «сознание». Из-за этого он практически идеально подходит для написания короткоживущих скриптов-оберток. К примеру, взял кусок лога, описал формат и через 5 минут у тебя написан скрипт, выдирающий нужное. Да кривой, да неоптимальный, но зато очень быстро.
БЯМ ну очень «начитанный» джун. Из-за этого он иногда начинает генерить крайне переусложненное решение. Там, где грубо говоря, надо просто сложить 2+2, он генерит здоровенный класс с геттерами и сеттерами на все случаи жизни. Если упустить этот момент, то выкусить подобное становится очень сложно.
БЯМ взял все от реальных джунов. Он обожает лениться, срезать углы и заниматься не тем, чем надо. Просишь написать "рабочий код" и в результате видишь "тут потом должен быть работающий код, сейчас заглушка". Просишь написать одну функцию и в итоге обнаруживаешь его, переписывающем совершенно другой модуль. Даешь ему рабочий тест и просишь поправить ошибку, а он тупо берет и вставляет хардкор "так хочет тест".
БЯМ это реально джун. Что бы правильно поставить ему задачу, вы просто обязаны быть на уровень-другой выше его. Иначе вы получите фигню.
Если резюмировать все вышенаписанное, то сейчас ИИ даже близко не способен заменить программиста. Его топовый уровень - это «макака». Извините, если кому разрушил иллюзии.
P.S. На написание эмулятора со всеми подходами было потрачено около 120 миллионов токенов. При цене 400 рублей за 1 миллион это 48 тысяч рублей. Дорого это или нет - решать вам.
Комментарии (20)

zeblong
14.10.2025 09:09я верно понял - за 48 тыс рублей и пару недель по вечерам получаем полноценный эмулятор ZX Spectrum и это считается плохим результатом? Это уровень "макака"? Да нифига же себе. Я думаю у меня бы вышло сильно дольше и сильно дороже. Да ему нужен еще один человек - сеньор ставящий задачи и проверяющий что вышло. Но по моему это все равно быстро дешего и вообще лет 5 назад казалось бы басней

Shoman
14.10.2025 09:09К хорошему быстро привыкаем) и начинает казаться что «так оно и было». Вообще «ии» сейчас хороший инструмент в умелых руках. А что будет дальше посмотрим.

kiltum Автор
14.10.2025 09:09Очень почти полноценный. Плюс оплата моего времени и опыта не учтены :)

vmx
14.10.2025 09:09Насколько я понимаю, получаем чей-то эмулятор ZX Spectrum, уже написанный. Робот просто заимствует код.
Сможет ли нейронка написать эмулятор для несуществующей архитектуры?
И вообще, сделать то, чего раньше не существовало?
Я видел со стороны несколько попыток заставить LLM написать нетривиальное, все провальные.

kiltum Автор
14.10.2025 09:09Напишет. Только надо доку под нее сформатировать. В смысле минимум воды, максимум "вот это делает это"

qiper
14.10.2025 09:09Ну и самое больное это звук, я там уперся в приоритеты потоков. Как оказалось, Go совершенно не имеет нормальной многозадачности, но это тема для какой-либо другой статьи
Но Z80 же однопоточный
Честная эмуляция ULA с правильным расчетом таймингов
Сборщик мусора не мешает?

kiltum Автор
14.10.2025 09:09Z80 да, однопоточный. Но эмулятору-то никто не мешает пользовать больше потоков. Проблема, в которую я уперся, состоит в том, что в го все потоки равноправные и нельзя им приоритеты менять. Плюс буфферизация в выводе звука больно делает. В итоге в идеале Запись/Чтение должны быть так ЗЧЗЧЗЧЗЧЗЧ, а в гошечке ЗЗЗЗЗЗЧЧЧЧЧЗЗЗЗЗЧЧЧЧ

SkalolazOther
14.10.2025 09:09Насчёт «надо оооочень хорошо быть в теме…» — не согласен, многое зависит от сложности задачи, наверное. Мой опыт, не программиста, а любителя (в качестве хобби) показывает, что всё можно реализовать, не имея углублённых знаний в выбранном языке программирования или даже в самой тематике. Я сам решил, с помощью LLM, написать код для редактора (по типу Nano). С первого же запроса получил рабочее подобие Nano. Постепенно наращивал функционал и сейчас полностью отказался от ранее использовавшегося VS Code. Весь код «пишу» только в своём редакторе. Сейчас, в качестве pet‑проекта, делаю игру‑рогалик и с помощью LLM двигаюсь семимильными шагами. Самостоятельно, без LLM, я даже не приближался к подобным проектам. Мой уровень программирования до этого ограничивался небольшими расчётами в кандидатской диссертации. Как близко современные LLM находятся к настоящему ИИ — не знаю, но уверен, что они позволяют обычному человеку реализовать свои задумки.

kiltum Автор
14.10.2025 09:09Ну для простых, всем известных задач да, БЯМки подходят очень хорошо. Редактирование текста - это совсем базовая задача, которая решалась вместе с первыми компьютерами. Ну и да, опять же , ваш опыт подтверждает, что вы очень хорошо знаете тему "текстовые редакторы" и знаете, что конкретно вам надо и когда :)

Bardakan
14.10.2025 09:09у меня нейросеть не смогла даже камеру добавить на экран без вопросов, а вы хотите, чтобы у вас она сходу написала эмулятор z80

error911
14.10.2025 09:09По моему автор не правильно отвечает на свой же вопрос. Он ждёт от ИИ готового проекта, выполнения аромата вроде - "напиши эмулятор" или "напиши игру". И тут не в компетенции ИИ дело. Для такой задачи ИИ отводят ПАРУ минут, за которые он должен это сделать. Он и делает это соответственно. Никакой Джун даже близко так не сможет, и даже мидл. Ну и про ароматы. Чтоб не увязнуть в написанном ИИ коде, дробить задачу. Так будет легче и ИИ и вам тестировать.

rbdr
14.10.2025 09:09Грубо $600? Это полгода приличного Anthropic Claude, однако (Max5, $100/мес). Конечно, Соннет 4.5 с размышлятором совсем недавно появился, но был и Опус, который как раз некоторые моменты неплохо пробирает вглубь. То есть надо чередовать вопросы и более механическое оставлять для Соннета, а какие-то решения прогонять через Опус и, кстати, просить у него составлять план как раз для Соннета.
А сейчас в 4.5 можно включать и выключать "на ходу" расширенное думание - процесс немного замедляется и также затягивается, но результаты другие по уровню.
dlinyj
Я тоже для ретрокодинга использовал ИИ. Надо оооочень хорошо волочь в теме, чтобы это использовать. В какой-то момент меня задолбало воевать с ИИ и я стал писать руками. Использовал ИИ от Cloude (но не тот что вы скинули).
kiltum Автор
Ну пока с ИИ вообще надо очень хорошо волочь в той теме, в которую его пускаешь