нормальный такой сервер, действительно один из самых продвинутых на сегодняшний день и развивающихся.
но вот писать html на сommon lisp не очень удобно, было бы лучше если бы был какой-то хороший template toolkit, который видимо никогда не появится, потому как «s-expressions это же так удобно для написания html. они же тоже имеют древовидную структуру!»
Статичные страницы можно и просто в html отдавать, а шаблоны всё-равно в каждом фреймворке свои, просто hunchentoot+who меняет синтаксис чуть сильнее, чем большинство.
Во-первых, про дизайнеров тут уже всё сказали. Но даже если в роли дизайнера выступает программист, то всё равно использование системы шаблонов намного более эффективно. При использовании cl-who происходит жуткое раздувание основного кода, потом по нему надо тыкаться и исправлять логику. Это очень не эффективно.
Во-вторых, cl-who (если не лезть в кишки) не позволяет эффективно составлять страницы из разных частей.
Шаблонизаторы это сейчас единственный приемлемый способ генерации контента, как бы доказано всей практикой веб-разработки. Та же E-factory из lxml (Python) будет, например, удобней, чем cl-who, но никто не использует её для генерации веб-страниц.
Знаете, я использовал CL-WHO долго и всерьёз, и скажу вам следующее. Структура html и любых других теговых языков этого типа объективно сложнее структуры без закрывающих тегов — закрывающие теги скорее для машины, для её удобства парсинга. А то что сегодня попсовое направление за php или python совсем не означает что обучаемому человеку это будет трудно освоить.
Теперь о модульности и разбухании кода. Построение web-страницы при помощи CL-WHO прекрасно разбивается на функции, которые повторно используются, не говоря уже о Lisp-макросах, которые генерируют обширные фрагменты кода с нетривиальной логикой на основании короткой спецификации по-сути.
lisper.ru я сначала так и писал. Потом передела на шаблонах и насколько же всё стало проще. Закрывающиеся тэги здесь вообще не при чём, редактируйте шаблоны в нормальном редакторе (Emacs) и не будете иметь с ними никаких проблем.
> Построение web-страницы при помощи CL-WHO прекрасно разбивается на функции
Нет, не разбивается, ибо cl-who специальным образом перерабатывает дерево с кодом и генерирует на его основании новый код, вы не сможете разбить шаблон на несколько функций (если не использовать недокументированные возможности).
> не говоря уже о Lisp-макросах
А, так дизайнер должен ещё и макросы освоить? Для такой тривиальной задачи как генерация html не имеет никакого смысла привлекать тяжёлую артиллерию. Иначе идёт усложение простейших вещей, которые решаются элементарно за счёт шаблоново.
Кроме того, при использовании cl-who происходит смешивание логики приложения с логикой представления и править это потом просто кошмар, особенно учитывая какие простыни кода при этом получаются при генерации реальный веб-страниц.
Нет, не разбивается, ибо cl-who специальным образом перерабатывает дерево с кодом и генерирует на его основании новый код
> меня мало волнует то, что там генерируется, меня волнует лишь то, что фрагменты CL-WHO DSL прекрасно разбиваются на функции и прекрасно генерируются макросами, а внутренняя кухня с записью строк в поток вывода меня не волнует, если нет проблем с производительностью (а их почти никогда не бывает в этом месте).
А, так дизайнер должен ещё и макросы освоить?
> Не должен, мы все должны стремиться к отделению кода от стилей (хотя это не всегда возможно). Дизайнеру дизайнерово — править стили и статические ресурсы.
Кроме того, при использовании cl-who происходит смешивание логики приложения с логикой представления
> Не происходит, если использовать CL-WHO по назначению, а именно строго разделять бизнес логику (чистый CL) от построения html/xml (вот тут CL-WHO). CL-WHO не претендует на роль языка бизнес-логики — это всего лишь удобный способ записи SGML-выражений, XML-подмножество которого, к сожалению, сейчас правит миром.
Ладно, в мире CL есть такая болезнь, над которой смеются все веб-разработчики: старание генерировать html/xml через s-выражения и cl-who часть этой болезни. Веб-разработка на CL становится значительно проще если от этой болезни избавиться.
У меня нет какого либо желания переубеждать конкретно вас, в конце концов, это ваш личный выбор. Но в подобных статьях, цель которых, насколько я понимаю, — популяризация, нельзя обходиться только cl-who, ибо это производит очень негативное впечатление на опытных веб-разработчиков.
Я на Lispe делал презентацию в университете. Уж Вы меня извините, но template язык, типа, velocity куда проще, нежели приведённый вами пример. Показываю:
То есть, Вы утверждаете, что примером приведённым Вами в главе «генерация HTML» может заниматься любой дизайнер и делает это с лёгкостью? Фуф… ню тогда успехов Вам, что ещё можно тут сказать.
Дизайнер не сможет править cl-who, ибо там код на CL. Что, дизайнер должен изучить CL? И при этом его надо пускать в код с логикой? Лучше дизайнеров держать подальше от таких вещей. А сами шаблоны не должны быть частью кода. Всем будет от этого лучше, и прежде всего самим разработчикам.
Если человек умеет хорошо верстать/ рисовать, но не умеет программировать/ никогда не программировал/ программировал, но не на этом языке/ недостаточно опыта для Вашего проекта/ тут допишите сами, то Вы не научите его этому, хоть лоб разбейте — для этого нужно много времени. В условиях бизнеса времени никогда не достаточно. Вы богатый человек/ у Вас богатая фирма которая занимается благотворительностью?
Разработка web-приложений на языке Common Lisp (часть третья)