it-roy-ru.com

Возможно ли заняться (серьезной) веб-разработкой на Лиспе?

Очевидно, что написать практически любое приложение можно практически на любом языке программирования, особенно на таком мощном, как LISP (будь то Scheme или Common LISP). Но практично ли использовать его для веб-разработки? Если так, что должно быть хорошей отправной точкой? Где можно найти подходящие ресурсы (инструменты, библиотеки, документация, лучшие практики, примеры и т.д.) Для проекта такого рода?

96
Leonardo

Да, веб-разработка - одна из сильных сторон Common LISP сегодня.

  • В качестве веб-сервера используйте Hunchentoot , ранее известный как tbnl, доктором Эдмундом Вайцем.

    Вы можете запустить его как серверную часть Apache, используя mod_proxy в качестве обратного прокси-сервера или в качестве автономного сервера.

  • Доступны различные решения для генерации HTML, от шаблонов в стиле PHP до макрокоманд LISP и XSLT. Просто сделай свой выбор.

    HTML-ШАБЛОН является одним из примеров.

  • Closure XML доступно для разбора XML, сериализации, XPath 1.0, XSLT 1.0. Также есть HTML-код Closure для разбора супа HTML-тега.

    (Полное раскрытие: я поддерживаю Closure XML и Closure HTML.)

  • Если вам нравится, Parenscript может сделать ваш JavaScript более приятным, но вы, конечно же, можете написать и простой старый JavaScript.

    Другое классное решение для улучшения JavaScript в jwacs , написанное на Common LISP и преобразующее JavaScript для добавления поддержки продолжения.

  • Проектам веб-служб может потребоваться HTTP-клиент в дополнение к серверу.

    Drakma это библиотека, которую можно использовать сегодня.

    PURI полезно для манипулирования URI.

    И это еще не все! Например, отправной точкой является клики cliki.net/web .

В Интернете никто не знает, что ваш сервер написан на Common LISP :-)

80
David Lichteblau

Веб-разработка в 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.

В последнее время многие люди используют эти технологии для критически важных приложений - с успехом.

Наиболее важные проекты с открытым исходным кодом на самом деле имеют отличную поддержку сообщества.

30
Leslie P. Polzer

Есть несколько веб-фреймворков для веб-разработки. Посмотри на:

Если вам нужны хорошо поддерживаемые инструменты LISP, вам придется заплатить за них. Просто вокруг инструментов с открытым исходным кодом не очень большое сообщество, поэтому они не имеют такого уровня документации/принятия, как, скажем, Django на Python.

Вот некоторые коммерческие продукты LISP:

Также стоит отметить, что Reddit изначально был построен на LISP, но позже авторы перешли на Python, ссылаясь на отсутствие хорошо используемых и документированных библиотек. ( ссылка )

19
d4nt

Чтобы еще больше помочь развеять миф об отсутствии веб-фреймворков LISP, вот те, которые еще не были упомянуты:

Очевидно, что многие люди думают, что LISP достаточно хорош для написания множества веб-фреймворков.

Я не использую и не поддерживаю никаких веб-фреймворков. Я предпочитаю создавать веб-приложения, комбинируя вместе ортогональные инструменты (Дэвид Лихтеблау упомянул несколько хороших), используя шаблоны проектирования таким образом, который действительно соответствует приложению, которое вы создаете, и этот подход я рекомендую. Common LISP предоставляет как множество таких инструментов, так и непревзойденную возможность их комбинировать.

Адам Петерсен опубликовал отличное вводное руководство о том, как начать создавать веб-приложения LISP в этом стиле в прошлом году:

http://www.adampetersen.se/articles/lispweb.htm

9
vsedach

Я не могу говорить с другими фреймворками, но мне очень повезло, используя Hunchentoot для веб-сервера (он отлично работает сам по себе, или вы можете оставьте его позади Apache знак равно Что действительно заставляет его сиять (это, вероятно, будет шоком для некоторых), так это библиотеки!

  • Используйте CL-WHO для написания легкого HTML в синтаксисе в стиле LISP
  • Parenscript позволяет писать код, который компилируется в javascript
  • Для подключения к базе данных используйте Postmodern для общения с PostgreSQL

Что мне действительно нравится в использовании CL для веба, так это то, что вы можете настроить его во время работы. Вы всегда имеете REPL и ​​запускаете код своего сервера, затем вы можете подключиться к этому REPL и ​​изменить или проверить, как работает код, и все это без необходимости что-либо останавливать. Я переопределил функции во время работы сайта, при следующем вызове функции он просто выбирает новый код и работает.

9
Chris

Я думаю, что можно сказать "да" без особых усилий.

  1. один из первых HTTP-серверов был cl-http

  2. Схема людей вокруг DrScheme потратила немало времени на это:

  3. www.franz.com работает на своем собственном веб-сервере (AllegroServer) и веб-фреймворке (веб-действия)

  4. Если у вас есть сомнения, проверьте общие пакеты LISP от Edi Weitz. Они обычно работают.

Так что да, с Common LISP можно заниматься "серьезным" веб-программированием. Я, со своей стороны, в настоящее время не могу выбрать какой-нибудь общий маршрут LISP или Ruby на Rails. Я предпочитаю и то, и другое .NET ....

8
Friedrich

Paul Graham's компания Viaweb написала продукт в Common LISP, которая впоследствии стала Yahoo Shops. Очевидно, Yahoo впоследствии переписал его на C++. Существует довольно много веб-ресурсов для программирования LISP.

4
ConcernedOfTunbridgeWells

Похоже, много Orbitz было или написано в LISP .

2
mqp

Вы можете найти кое-что об инструментах для веб-приложений LISP в этот вопрос .

Возможно, также стоит послушать Stack Overflow Podcast 27 , где ребята из Reddit немного рассказывают о своем опыте запуска сайта на LISP (и их переходе на Python).

2
Dave Webb

Мнения разные. Общая мудрость такова: лучше использовать другой язык или, скорее, другой веб-стек, такой как LAMP, .NET, Ruby на Rails, Java. Хорошо известным успешным веб-проектом в LISP был Пол Грэм ViaWeb . Reddit изначально был реализован в LISP, но затем переключен на python . Если вы решили использовать LISP, попробуйте книгу Сейбеля: Practical Common LISP .

2
Yuval F

Посмотрите на Allegro Common LISP. Он имеет несколько библиотек, в том числе веб-сервер, специально для веб-разработки.

0
Ian Jack