Во-первых, то его приложение было гвоздями прибито к CLisp, медленной реализации.
Во-вторых, оно использовало «продолжения», т.е. просто не было масштабируемым.
Естественно, когда встал вопрос о другой нагрузке, то приложение надо было переписывать фактически полностью. На чём переписывать? Поскольку Грэма уже не было, то язык выбирали заново. Выбрали что знали лучше и что знали, что будет работать.
Ну, конечно, Грэм подаёт эту историю несколько по другому.
Я когда писал lisper.ru, то дизайнера у меня не было и я сначала делал именно на встроенном языке. По результатам этого опыта и я пришел к шаблонам, как к оптимальному решению )
У генерации контента с помощью встроенного eDSL фактически вообще нет никаких преимущества. Я только для демонстрационных приложений объёмом в 10 строк использую cl-who.
Дизайнеру, как и самому программисту, проще и удобней редактировать код, максимально приближенный к целевой разметке.
Кроме того, в данном приложении автор использует библиотеку cl-closure-template. которая имеет ещё и совсем другие преимущества (хотя это и не важно для данного приложения), я писал об этом здесь
Я пробовал так. В итоге когда перешёл на шаблоны, то был просто счастлив от того, насколько всё стало проще и яснее.
Вообще, с мнением, что контент надо генерировать через шаблоны я думаю согласится любой нормальный веб-разработчик, не зависимо от используемого им языка.
Безусловно. Только это другие языки. Не такие как CL. И сделано там метапрограммирование совсем по другому. Я говорю о том, что конкретно CL практически не реально сделать на основе другого синтаксиса.
> Если очень надо, то есть QVariant / boost::variant
> Но практика показывает, что для большинства прикладных
> задач это не так уж и важно :(.
Нет, макросы всего лишь один из элементов CL. Это делают жизнь лучше. Но даже без них CL был бы лучше больше современных языков.
> знанием других языков программирования
А у вас кажется не хватает знаний о CL ))
> динственное отличие современного C++ от Lisp в плане встроенных в язык
> функций — это отсутствие доступа к AST.
Ну что вы такое говорите. Как насчёт мультиметодов, рестартов, динамических переменных, MOP? Поверьте, разница огромна.
Ну да пустой разговор. Вряд ли кто-либо из программистов на CL согласится с тем, что Clojure хоть что-нибудь исправляет.
О чем речь?
Во-первых, то его приложение было гвоздями прибито к CLisp, медленной реализации.
Во-вторых, оно использовало «продолжения», т.е. просто не было масштабируемым.
Естественно, когда встал вопрос о другой нагрузке, то приложение надо было переписывать фактически полностью. На чём переписывать? Поскольку Грэма уже не было, то язык выбирали заново. Выбрали что знали лучше и что знали, что будет работать.
Ну, конечно, Грэм подаёт эту историю несколько по другому.
У генерации контента с помощью встроенного eDSL фактически вообще нет никаких преимущества. Я только для демонстрационных приложений объёмом в 10 строк использую cl-who.
Кроме того, в данном приложении автор использует библиотеку cl-closure-template. которая имеет ещё и совсем другие преимущества (хотя это и не важно для данного приложения), я писал об этом здесь
Вообще, с мнением, что контент надо генерировать через шаблоны я думаю согласится любой нормальный веб-разработчик, не зависимо от используемого им языка.
На практике получается просто жуть.