Claude и другие LLM помогли собрать эмулятор ZX Spectrum
Автор год назад уже писал эмулятор ZX Spectrum на Go, потом критиковал этот язык для подобных задач, а теперь неожиданно показал обратное: с помощью Claude, Qwen, GLM, Sol и других моделей проект удалось заметно ускорить и довести до рабочей версии. История полезна всем, кто делает софт: она показывает, где ИИ реально помогает в разработке, а где без ручной проверки все ломается.
Как ИИ помог переписать эмулятор
Сначала автор собрал архитектуру новой версии эмулятора с помощью Qwen, а затем отдал этот план на ревью GPT, Sol и deepseek. По его словам, модели быстро ушли от старой схемы со «спагетти-кодом» и предложили более аккуратную блочную структуру, где каждый компонент эмулятора отвечает за свою часть.
Дальше ИИ уже писал конкретные куски кода: deepseek занялся Z80 и обвязкой по шине, портам и памяти, а Sol доработал ULA и клавиатуру. В результате за пару часов появился эмулятор, который уже умел сохранять изображение с классической надписью Sinclair Research Ltd. Для разработчиков это хороший пример: ИИ может быстро собрать каркас проекта, если правильно разбить задачу на части.
Где начались проблемы и что с ними сделали
Первую версию снова подвели задержки. Автор выяснил, что виноват не сам эмулятор, а библиотека fyne для фронтенда: внутри нее оказалось слишком много буферизации, из-за которой появлялись лишние лаги. После этого фронт перенесли на SDL3, и работа пошла быстрее.
Потом автор подключил MCP-сервер и фактически превратил ИИ в команду помощников: модели компилировали код, сравнивали результаты и исправляли ошибки. Появились пошаговое исполнение, дизассемблер и OCR, а эмулятор дорос до чтения кассетных образов и проигрывания музыки. Для обычного пользователя это значит, что ИИ полезен не только для текста, но и для сложных технических задач, если есть четкие тесты и контроль человека.
Что ИИ пока делает плохо
Самым сложным местом стал дисковый контроллер WD1793, он же КР1818ВГ93. Здесь модели внезапно перестали помогать: не смогли ни написать рабочую реализацию, ни найти ошибки в чужом коде. Даже с даташитами и примерами из других эмуляторов результат сначала был красивым, но нерабочим.
Лишь после ручной проверки через другие эмуляторы и добавления референсов модели смогли продвинуться дальше. Но и тут всплыла новая проблема: ИИ не всегда понимает разницу между обычным вводом с клавиатуры и токенизированным вводом в MCP. Вывод простой: LLM уже могут быть полезными «джунами» в разработке, но сложные аппаратные детали, нестандартные протоколы и тонкие баги все еще требуют человека с опытом.