Очевидно, что можно писать практически любые приложения практически на любом языке программирования, особенно в таком мощном, как Lisp (будь то Scheme или Common Lisp). Но практично ли использовать его для веб-разработки? Если да, то что должно быть хорошей отправной точкой? Где можно найти подходящие ресурсы (инструменты, библиотеки, документацию, лучшие практики, примеры и т.д.) Для такого проекта?
Можно ли сделать (серьезное) веб-разработку в Lisp?
Ответ 1
Да, веб-разработка сегодня является сильной стороной Common Lisp.
-
Как веб-сервер, используйте Hunchentoot, ранее известный как tbnl, доктор Эдмунд Вейц.
Вы можете запустить его как фоновый сервер для Apache с использованием mod_proxy в качестве обратного прокси-сервера или в качестве автономного сервера.
-
Различные варианты генерации HTML доступны из шаблонов стиля PHP до Lisp макросов для XSLT. Просто сделайте выбор.
HTML-TEMPLATE является одним из примеров.
-
Closure XML доступен для синтаксического анализа XML, сериализации, XPath 1.0, XSLT 1.0. Существует также Closure HTML для разбора суффикса HTML-тегов.
(Полное раскрытие: я являюсь хранителем XML Closure и Closure HTML.)
-
Если вам нравится, Parenscript может сделать ваш JavaScript более незаметным, но вы также можете написать простой старый JavaScript самостоятельно, Конечно.
Еще одно замечательное решение для улучшения JavaScript в jwacs, которое написано в Common Lisp и преобразует JavaScript для добавления поддержки продолжения.
-
Для проектов веб-служб может потребоваться HTTP-клиент в дополнение к серверу.
Drakma - это библиотека, используемая для этого сегодня.
PURI полезен для манипуляции с URI.
И есть еще! Одной отправной точкой является cliki, например cliki.net/web.
В Интернете никто не знает, что ваш сервер написан в Common Lisp: -)
Ответ 2
Веб-разработка в Common Lisp эффективна и увлекательна.
Некоторые примеры:
CL-WHO позволяет писать HTML, не забывая при этом закрывать тег.
Weblocks позволяет декларативно определять формы со встроенной проверкой:
(defview signup (:type form :caption "Sign up")
(username :satisfies #'valid-username)
(password :present-as dual-password :parse-as dual-password)
(receive-newsletter-p :present-as checkbox :parse-as predicate))
Он также полностью поддерживает AJAX, возвращаясь к нормальным ссылкам, если браузер не поддерживает его.
cl-prevalence - невероятно простая альтернатива SQL.
Довольно много людей используют эти технологии в последнее время для критически важных приложений - с успехом.
Самые важные проекты с открытым исходным кодом CL на самом деле имеют отличную поддержку сообщества.
Ответ 3
Есть несколько веб-фреймворков для веб-разработки. Посмотрите:
Если вы хотите хорошо поддерживаемые инструменты lisp, вам нужно будет заплатить за них. Там просто не очень большое сообщество вокруг инструментов с открытым исходным кодом, поэтому они не имеют того же уровня документации/принятия, как, скажем, Django на Python.
Вот некоторые коммерческие lisp продукты:
Также стоит отметить, что Reddit был первоначально построен в Lisp, но позже авторы перешли на Python, сославшись на отсутствие хорошо используемых и документированных библиотек. (ссылка)
Ответ 4
Я не могу говорить с другими фреймворками, но мне очень повезло с помощью Hunchentoot для веб-сервера (он отлично работает самостоятельно, или вы можете установить его за Apache). Что действительно заставляет его сиять (это, вероятно, станет для кого-то шоком) - это библиотеки!
- Используйте CL-WHO, чтобы написать легкий HTML-код в синтаксисе lisp
- Parenscript позволяет писать код, который компилируется в javascript
- Для подключения к базе данных используйте Postmodern, чтобы поговорить с PostgreSQL
Что мне действительно нравится в использовании CL для Интернета, так это то, что вы можете настроить все, как оно работает. У вас всегда есть REPL и работает ваш код сервера, вы можете подключиться к этому REPL, а также изменить или проверить, как работает код, без необходимости ничего останавливать. Я переопределял функции во время работы сайта, при следующем вызове функции он просто подбирает новый код и работает.
Ответ 5
Чтобы еще больше помочь развеять миф о том, что нет веб-фреймворков Lisp, вот те, о которых еще не упоминалось:
Очевидно, что многие люди думают, что Lisp достаточно хорош для написания множества веб-фреймворков.
Я не использую и не поддерживаю никаких веб-фреймворков. Я предпочитаю создавать веб-приложения, объединяя вместе ортогональные инструменты (Дэвид Лихтеблау упомянул о некоторых хороших), используя шаблоны проектирования таким образом, который действительно подходит для приложения, которое вы строите, и это тот подход, который я рекомендую. Общий Lisp обеспечивает как множество таких инструментов, так и непревзойденную способность их комбинировать.
Адам Петерсен опубликовал отличный вводный учебник о том, как начать создавать веб-приложения Lisp в этом стиле в прошлом году:
Ответ 6
Я думаю, что можно сказать "да" без особого шума.
-
одним из первых HTTP-серверов был cl-http
-
Схема людей вокруг DrScheme потратила на это замечательное количество времени:
-
www.franz.com работает на своем собственном веб-сервере (AllegroServer) и webframework (webactions)
-
Если у вас есть сомнения, проверьте общие пакеты lisp от Edi Weitz. Они обычно работают.
Итак, да, можно сделать "серьезное" веб-программирование с помощью Common Lisp. В свою очередь, я, в свою очередь, в настоящее время не решил следовать примеру Common lisp или Ruby on Rails. Я предпочитаю как над чем-то .NET....
Ответ 7
компания Paul Graham Viaweb написал продукт в Common Lisp, который впоследствии стал Yahoo Shops. По-видимому, Yahoo впоследствии переписал его на С++. Для Lisp progamming существует немало веб-ресурсов.
Ответ 8
В разделе этот вопрос можно найти материал о инструментах для Lisp веб-приложений.
Возможно, также стоит прослушать Qaru Podcast 27, где ребяты Reddit немного рассказывают о своем опыте запуска веб-сайта на Lisp (и их переход на Python).
Ответ 9
Похоже, много Orbitz было или написано в LISP.
Ответ 10
Мнения различны. Общая мудрость: лучше использовать другой язык, или, скорее, другой веб-стек, такой как LAMP,.NET, Ruby on Rails, Java. Известным успешным веб-проектом в lisp был Пол Грэм ViaWeb. Reddit изначально реализован в lisp, но затем переключается на python. Если вы решите использовать lisp, попробуйте книгу Seibel: Практическое общее Lisp.
Ответ 11
Посмотрите на Allegro Common Lisp. В нем есть несколько библиотек, в том числе веб-сервер, специально для веб-разработки.