Очевидно, что можно написать практически любое приложение практически на любом языке программирования, особенно на таком мощном, как Lisp (будь то Scheme или Common Lisp). Но практично ли его использовать для веб-разработки? Если да, то что должно быть хорошей отправной точкой? Где можно найти подходящие ресурсы (инструменты, библиотеки, документацию, передовой опыт, примеры и т. Д.) Для проекта такого рода?
100
Ответы:
Да, веб-разработка сегодня является одной из сильных сторон Common Lisp.
В качестве веб-сервера используйте Hunchentoot , ранее известный как tbnl от доктора Эдмунда Вайца.
Вы можете запустить его как серверную часть Apache, используя mod_proxy в качестве обратного прокси, или как автономный сервер.
Доступны различные решения для генерации HTML, от шаблонов в стиле PHP до макросов Lisp и XSLT. Просто сделай свой выбор.
HTML-TEMPLATE - один из примеров.
Замыкание XML доступно для синтаксического анализа XML, сериализации, XPath 1.0, XSLT 1.0. Также есть Closure HTML для разбора супа HTML-тегов.
(Полное раскрытие: я сопровождаю Closure XML и Closure HTML.)
Если хотите, Parenscript может сделать ваш опыт работы с JavaScript более шепотливым, но, конечно, вы также можете написать простой старый JavaScript.
Еще одно классное решение для улучшения JavaScript в jwacs , которое написано на Common Lisp и преобразует JavaScript для добавления поддержки продолжения.
Для проектов веб-сервисов в дополнение к серверу может потребоваться HTTP-клиент.
Дракма - это библиотека, которую можно использовать сегодня.
PURI полезен для манипулирования URI.
И это еще не все! Отправной точкой является клики, например cliki.net/web .
В сети никто не знает, что ваш сервер написан на Common Lisp :-)
источник
Веб-разработка на Common Lisp одновременно эффективна и увлекательна.
Некоторые примеры:
CL-WHO позволяет писать HTML, никогда больше не забывая закрывающий тег.
Weblocks позволяет декларативно определять формы с помощью встроенной проверки:
Он также поддерживает AJAX полностью автоматически, возвращаясь к обычным ссылкам, если браузер его не поддерживает.
cl-prevalence - невероятно простая альтернатива SQL.
В последнее время довольно много людей успешно используют эти технологии для критически важных приложений.
Наиболее важные проекты CL с открытым исходным кодом действительно имеют отличную поддержку сообщества.
источник
Есть несколько веб-фреймворков для веб-разработки. Посмотри на:
Если вам нужны хорошо поддерживаемые инструменты lisp, вам придется за них заплатить. Просто нет очень большого сообщества вокруг инструментов с открытым исходным кодом, поэтому они не имеют такого же уровня документации / принятия, как, скажем, Django на Python.
Вот несколько коммерческих продуктов Lisp:
Также стоит отметить, что Reddit изначально был построен на Lisp, но позже авторы перешли на Python, сославшись на отсутствие хорошо используемых и документированных библиотек. ( ссылка )
источник
Я не могу говорить с другими фреймворками, но мне очень повезло с использованием Hunchentoot для веб-сервера (он отлично работает сам по себе, или вы можете поставить его за Apache ). Что действительно заставляет его сиять (это, вероятно, кого-то шокирует), так это библиотеки!
Что мне действительно нравится в использовании CL для Интернета, так это то, что вы можете настраивать все это во время работы. У вас всегда есть REPL и выполняется ваш серверный код, затем вы можете подключиться к этому REPL и изменить или проверить, как работает код, и все это без необходимости что-либо останавливать. Я переопределил функции во время работы сайта, при следующем вызове функции она просто берет новый код и работает.
источник
Чтобы еще больше помочь развеять миф об отсутствии веб-фреймворков Lisp, вот те, которые еще не были упомянуты:
Очевидно, что многие люди думают, что Lisp достаточно хорош для написания множества веб-фреймворков.
Я не использую и не поддерживаю какие-либо веб-фреймворки. Я предпочитаю создавать веб-приложения, комбинируя вместе ортогональные инструменты (Дэвид Лихтеблау упомянул несколько хороших), используя шаблоны проектирования таким образом, который действительно соответствует создаваемому вами приложению, и это подход, который я рекомендую. Common Lisp предоставляет как множество таких инструментов, так и уникальную возможность их комбинировать.
Адам Петерсен опубликовал отличное вводное руководство о том, как начать создавать веб-приложения на Lisp в этом стиле в прошлом году:
http://www.adampetersen.se/articles/lispweb.htm
источник
Я думаю, что можно сказать «да» без особых хлопот.
одним из первых HTTP-серверов был cl-http
Схема, которую люди из DrScheme потратили на нее много времени:
www.franz.com работает на собственном веб-сервере (AllegroServer) и веб-фреймворке (веб-действия)
Если вы сомневаетесь, проверьте распространенные пакеты lisp от Эди Вейца. Обычно они работают.
Так что да, с Common Lisp можно заниматься «серьезным» веб-программированием. Я, со своей стороны, в настоящее время не решился пойти по пути Common Lisp или Ruby on Rails. Я предпочитаю и то, и другое .NET ....
источник
Компания Пола Грэма Viaweb написала продукт на Common Lisp, который впоследствии стал Yahoo Shops. Судя по всему, Yahoo впоследствии переписал его на C ++. Существует довольно много веб-ресурсов для программирования на Лиспе.
источник
Вы можете найти кое-что об инструментах для веб-приложений Lisp в этом вопросе .
Также, возможно, стоит послушать Stack Overflow Podcast 27, где ребята из Reddit немного рассказывают о своем опыте запуска веб-сайтов на Lisp (и о своем переходе на Python).
источник
Мнения разные. Распространенная мудрость такова: лучше использовать другой язык или, скорее, другой веб-стек, такой как LAMP, .NET, Ruby on Rails, Java. Хорошо известным успешным веб-проектом на лиспе был ViaWeb Пола Грэма . Reddit изначально был реализован на lisp, но затем перешел на python . Если вы все же решите использовать Lisp , попробуйте книгу Seibel: Practical Common Lisp .
источник
Похоже, что многие Orbitz были написаны или написаны на LISP .
источник
Взгляните на Allegro Common Lisp. В нем есть несколько библиотек, в том числе веб-сервер, специально для веб-разработки.
источник