Возможно ли это сделать (серьезно) веб-разработку в Лиспе? [закрытый]


11 95

11 ответов:

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

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

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

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

    HTML-TEMPLATE это один из примеров.

  • закрытие XML доступно для синтаксического анализа XML, сериализации, XPath 1.0, XSLT 1.0. Существует также закрытие HTML для разбора HTML-тегов супа.

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

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

    еще одно классное решение для улучшения JavaScript в jwacs, который написан на Common Lisp и преобразует JavaScript для добавления поддержки продолжения.

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

    Drakma библиотека, чтобы использовать для этого сегодня.

    Пури полезно для манипуляции URI.

    и там еще! Одной из отправных точек является cliki, например cliki.net/web.

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

Веб-разработка в Common Lisp одновременно эффективна и увлекательна.

примеры:

КЛ-КТО позволяет писать 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 в полностью автоматическом режиме, возвращаясь к обычным ссылкам, если браузер не поддерживает оно.

СL-Распространенность это невероятно простая альтернатива SQL.

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

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

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

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

вот некоторые коммерческие продукты сюсюкать:

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

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

  • использовать КЛ-КТО чтобы написать легкий HTML в синтаксисе lisp-стиля
  • Parenscript позволяет писать код, который компилируется в javascript
  • для подключения к базе данных используйте постмодерн поговорить с PostgreSQL

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

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

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

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

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

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

Я думаю, что можно сказать, да без hazzle.

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

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

  3. www.franz.com работает на собственном веб-сервере (AllegroServer) и webframework (webactions)

  4. Если вы сомневаетесь, проверьте пакеты common lisp от Edi Weitz. Они обычно работать.

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

Пол Грэм компания Viaweb написала продукта в Common Lisp, который впоследствии стал магазинами Yahoo. По-видимому, Yahoo впоследствии переписал его на C++. Существует довольно много веб-ресурсов для программирования Lisp.

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

возможно, также стоит послушать Переполнение Стека Подкаст 27 где ребята Reddit немного рассказывают о своем опыте работы с сайтом runnig на Lisp (и их переключении на Python).

мнения меняются. Общая мудрость заключается в следующем: лучше использовать другой язык или, скорее, другой веб-стек, такой как LAMP, .NET, Ruby on Rails, Java. Известным успешным веб-проектом в lisp стал Paul Graham's ViaWeb. Reddit первоначально был реализован в lisp, но затем переключился на python. Если вы все же решите использовать lisp, попробуйте книгу Сейбеля: Практический Common Lisp.

похоже, что много Orbitz был или пишется на LISP.

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