← На главную

Почему ИИ-генерацию кода доверяют Common Lisp: макросы и REPL

12.08.2026 08:40 · hackernews

Генерировать код с помощью ИИ лучше всего на Common Lisp, а не на Python, TypeScript или Java. Автор объясняет: популярность языка — плохой показатель его пользы. Выбор в пользу массовых языков — это логика менеджера, которому нужно всегда найти человека на поддержку, а не логика сильного разработчика.

Во-первых, он десятилетиями пишет на Common Lisp и знает его до тонкостей. Vibe coding требует, чтобы человек-архитектор надзирал за машиной: только так можно за долю секунды понять, генерирует модель хороший код или галлюцинирует тупик. Нельзя управлять ИИ в языке, которого не понимаешь глубоко.

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

Главный технический козырь — гомоиконичность. Код Lisp — это те же структуры данных, которыми он манипулирует. Когда LLM генерирует Python или Java, ей приходится предсказывать поверхностный синтаксис: отступы, скобки, точки с запятой, жёсткие каркасы классов. Когда LLM генерирует Lisp, она работает прямо на уровне AST — Abstract Syntax Tree — и предсказывает чистую структуру. Снятие синтаксического трения — огромное преимущество.

Ещё макросы. В vibe coding контекстное окно — самый ценный ресурс. Макросы позволяют сжать контекст: вместо повторяющегося многословия модель использует макрос и экономит тысячи токенов. Так можно удержать большие архитектуры в памяти модели.

Автор работает с LLM не в текстовом редакторе, а из Lisp REPL. Модель может интроспектировать программу прямо во время разработки: запросить состояние нужного объекта или функции, общаться с живой системой, а не писать мёртвый текст. Когда ИИ выдаёт плохой код, condition system в Lisp ловит ошибку, и модель анализирует стек и отлаживает код интерактивно, в точке сбоя, без жёсткого краха и перезапуска.

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

Читать оригинал →