Все гонятся за новым фреймворком. А что, если лучшее решение было найдено 20 лет назад?
Сегодняшний веб-девелопмент — это бесконечный марафон по освоению новых инструментов. Каждый вторник выходит новый JS-фреймворк, обещающий решить все проблемы предыдущих пяти, и мы, как Сизиф, катим свой камень из React в Vue, из Angular в Svelte, а теперь и в Qwik. Это постоянное ощущение, что мы строим на зыбучих песках, где за каждым углом ждёт очередной RFC, меняющий правила игры.
Но вернёмся в 2001 год. Пока большинство компаний только осваивали Perl/CGI или ранние Java servlets, Пол Грэм на BBN Labs рассказывал о Viaweb. Это был один из первых крупных e-commerce игроков, который в итоге купил Yahoo. Что интересно, Viaweb был полностью построен на Common Lisp. И дело не в ностальгии, а в том, как крошечная команда могла создавать и поддерживать функционал, который сегодня требует армий разработчиков.
Суть Lisp не просто в синтаксисе, а в его парадигме. С его макросами, интерактивной REPL-driven development средой и возможностью горячей перезагрузки кода, Lisp давал разработчику беспрецедентный контроль над системой. Это не просто язык, а мета-язык, позволяющий создавать доменно-специфичные языки (DSL) прямо внутри проекта. В Viaweb это означало, что изменения в бизнес-логике можно было вносить и тестировать на лету, без полного редеплоя. Это не просто ускоряло итерации; это фундаментально меняло процесс мышления о разработке — от «создания артефакта» к «живому, развивающемуся организму».
Сегодня мы пытаемся эмулировать эту интерактивность через HMR (Hot Module Replacement) в Webpack или мгновенные ребилды в Vite. Но это лишь костыли на базе компилируемых или транслируемых языков, имитирующие встроенную интерактивность Lisp. Мы строим всё более сложные абстракции, чтобы скрыть отсутствие понимания того, как создавать действительно мощные абстракции.
Хайдеггер говорил о технике как о способе раскрытия мира. Lisp, в этом контексте, раскрывает мир не как набор фиксированных инструментов, а как бесконечно адаптируемый материал. Он не даёт нам молоток, а учит, как выковать любой инструмент, который нам понадобится. Это переход от ремесленника, использующего готовый набор, к кузнецу, формирующему свои орудия труда под конкретную задачу.
Возможно, наша одержимость новыми фреймворками — это не прогресс, а регресс. Мы обмениваем фундаментальную выразительность и интерактивность на поверхностную простоту, которая быстро оборачивается новой формой технического долга и когнитивной нагрузки. Это как пытаться сшить одежду, используя сто разных иголок вместо одной универсальной швейной машины.
Старые идеи не умирают; они лишь ждут, когда мы перестанем гоняться за блестящими новинками и вновь увидим их ценность. Что мы потеряли в погоне за «современностью»? 💀