Вопрос звучал уже дважды: если сгенерированный код не имеет значения — если всю тяжёлую работу по написанию синтаксиса берёт на себя ИИ, — зачем вообще выбирать Common Lisp для vibe coding?
Почему не Python, TypeScript или Java? Это мейнстримные языки с огромными обучающими выборками, модели генерируют на них код с высокой статистической точностью. Так почему целевым языком для генерации кода выбран нишевый Common Lisp?
Причин много, и все они сводятся к одному старому вопросу: зачем использовать Lisp, если можно взять более популярный язык? Ответ прост — популярность языка плохо отражает его полезность и выразительность. Сообщество Lisp знает это давно — именно поэтому Lisp когда-то и был выбран. Ориентация на популярность — это то, чем занимаются менеджеры среднего звена, чтобы гарантированно найти тёплое тело для поддержки кода. Элитные хакеры так не поступают.
- Базовый уровень экспертизы. Программирование на Common Lisp ведётся десятилетиями, язык знаком до мелочей. Vibe coding требует, чтобы человек-архитектор контролировал машину. Глядя на сгенерированный моделью код, за долю секунды можно понять, хорош он или модель галлюцинирует, заходя в тупик. Успешно управлять ИИ на языке, который не понимаешь глубоко, невозможно.
- Абстракция вместо реализации. Большинство современных языков заставляют описывать в точности, как машина должна перекладывать биты. Lisp изначально создавался как язык для выражения высокоуровневых абстракций, а не утомительных деталей реализации. От ИИ хочется получать архитектурную логику, а не борьбу с шаблонным кодом ради управления элементарным состоянием.
- Создан для элиты. Если честно, Lisp — язык, созданный элитными хакерами для элитных хакеров, а не для массового программиста. Он не ведёт за руку и не подстраивается под шаблоны программистских буткемпов, рассчитанные на наименьший общий знаменатель. Используя его как целевой язык, работаешь в среде, построенной для максимальной выразительности.
- Гомоиконность и AST. Пожалуй, самое большое техническое преимущество. Lisp гомоиконен — код структурирован как те же данные, которыми он оперирует. Когда LLM генерирует Python или Java, ей приходится предсказывать поверхностный синтаксис: пробелы, скобки, точки с запятой, жёсткую структуру классов. Когда LLM генерирует Lisp, она работает напрямую на уровне абстрактного синтаксического дерева (AST) — предсказывает чистую структуру. Устранение синтаксического трения даёт огромное преимущество для генерации кода ИИ.
- Макросы как сжатие контекста. В vibe coding самый ценный ресурс — контекстное окно LLM. Система макросов Lisp позволяет эффективно сжимать контекст: вместо того чтобы ИИ раз за разом генерировал многословный шаблонный код, этот шаблон можно спрятать за макросом. Модель изучает макрос, использует его и экономит тысячи токенов, что позволяет удерживать в памяти масштабные архитектуры в рамках ограничений модели.
- Интроспекция в REPL. LLM работает не в стерильном текстовом редакторе, а внутри Lisp REPL. Это позволяет модели заглядывать внутрь программы прямо во время разработки. Если нужно узнать состояние конкретного объекта или функции, модель может опросить работающее окружение. Это не работа с мёртвым текстом — это диалог с живой системой.
- Продвинутая обработка ошибок. Когда ИИ пишет плохой код (а это случается), система условий (condition system) Lisp обеспечивает продвинутую обработку ошибок и отладку. Вместо жёсткого краха, требующего полной перезагрузки, ошибка перехватывается, и модель может проанализировать стек вызовов и отладить сгенерированный код интерактивно, прямо в точке сбоя.
- Никаких перезапусков ab initio. Работа в REPL означает, что не нужно запускать программу ab initio (с самого начала) каждый раз, когда требуется проверить изменение. В компилируемом мейнстримном языке однострочное исправление от ИИ требует полной пересборки и сброса состояния. В Lisp достаточно переопределить конкретную функцию и сразу проверить её в REPL, пока остальное состояние приложения остаётся нетронутым. Скорость итераций несравнима ни с чем другим.
Элитному хакеру не дают язык для программиста-подёнщика. ИИ должен быть элитным хакером, а не просто исполнителем рутинных задач. Если ожидать от ИИ работы на элитном уровне, то и инструменты ему нужно давать элитные, а не язык для code monkey.