Oczywiście możliwe jest napisanie prawie każdego rodzaju aplikacji w prawie każdym języku programowania, szczególnie w tak potężnym języku jak Lisp (czy to Scheme, czy Common Lisp). Ale czy praktyczne jest używanie go do tworzenia stron internetowych? Jeśli tak, co powinno być dobrym punktem wyjścia? Gdzie można znaleźć odpowiednie zasoby (narzędzia, biblioteki, dokumentację, najlepsze praktyki, przykłady itp.) Dla projektu tego rodzaju?
100
Odpowiedzi:
Tak, tworzenie stron internetowych jest obecnie jedną z mocnych stron Common Lisp.
Jako serwer WWW użyj Hunchentoot , wcześniej znanego jako tbnl, autorstwa dr Edmunda Weitza.
Możesz go uruchomić jako zaplecze Apache, używając mod_proxy jako odwrotnego proxy lub jako samodzielny serwer.
Dostępne są różne rozwiązania do generowania HTML, od szablonów w stylu PHP po hacki makr Lisp do XSLT. Po prostu wybierz.
Przykładem jest HTML-TEMPLATE .
Zamknięcie XML jest dostępne do analizowania XML, serializacji, XPath 1.0, XSLT 1.0. Istnieje również kod HTML zamknięcia do analizowania zup tagów HTML.
(Pełne ujawnienie: jestem opiekunem Closure XML i Closure HTML.)
Jeśli chcesz, Parenscript może sprawić, że korzystanie z JavaScript będzie słabsze, ale możesz oczywiście samodzielnie napisać zwykły stary JavaScript.
Kolejne fajne rozwiązanie ulepszające JavaScript w jwacs , które zostało napisane w Common Lisp i przekształca JavaScript, aby dodać obsługę kontynuacji.
Projekty usług sieci Web mogą wymagać klienta HTTP oprócz serwera.
Drakma to dziś biblioteka, której można do tego używać.
PURI jest przydatne do manipulacji identyfikatorem URI.
Jest tego więcej! Punktem wyjścia jest cliki, na przykład cliki.net/web .
W sieci nikt nie wie, że twój serwer jest napisany w Common Lisp :-)
źródło
Tworzenie stron internetowych w Common Lisp jest zarówno efektywne, jak i przyjemne.
Kilka przykładów:
CL-WHO pozwala na pisanie HTML bez zapominania o zamykającym tagu.
Weblocks pozwala definiować formularze deklaratywnie z wbudowaną walidacją:
Obsługuje również AJAX w sposób w pełni automatyczny, wracając do zwykłych linków, jeśli przeglądarka go nie obsługuje.
Cl-prevalence to niezwykle prosta alternatywa dla SQL.
Całkiem sporo osób używa ostatnio tych technologii w zastosowaniach o znaczeniu krytycznym - z powodzeniem.
W rzeczywistości najważniejsze projekty CL open-source mają doskonałe wsparcie społeczności.
źródło
Istnieje kilka frameworków internetowych do tworzenia stron internetowych. Spójrz na:
Jeśli chcesz dobrze obsługiwanych narzędzi Lisp, musisz za nie zapłacić. Po prostu nie ma bardzo dużej społeczności wokół narzędzi open source, więc nie mają one takiego samego poziomu dokumentacji / adopcji jak, powiedzmy, Django w Pythonie.
Oto kilka komercyjnych produktów Lisp:
Warto również zauważyć, że Reddit został początkowo zbudowany w Lispie, ale później autorzy przenieśli się do Pythona, powołując się na brak dobrze używanych i udokumentowanych bibliotek. ( link )
źródło
Nie mogę rozmawiać z innymi frameworkami, ale miałem bardzo dużo szczęścia, używając Hunchentoot na serwerze internetowym (działa dobrze samodzielnie lub możesz umieścić go za Apache ). To, co naprawdę sprawia, że świeci (dla niektórych prawdopodobnie będzie to szok), to biblioteki!
To, co naprawdę podoba mi się w używaniu CL w Internecie, to fakt, że można go modyfikować podczas działania. Zawsze masz REPL, który uruchamia kod serwera, możesz następnie połączyć się z tym REPL i zmienić lub sprawdzić, jak działa kod, wszystko bez konieczności zatrzymywania czegokolwiek. Przedefiniowałem funkcje, gdy witryna jest uruchomiona, przy następnym wywołaniu funkcji po prostu pobiera nowy kod i działa.
źródło
Aby jeszcze bardziej pomóc rozwiać mit, że nie istnieją frameworki internetowe Lisp, oto te, które nie zostały jeszcze wymienione:
Oczywiście wiele osób uważa, że Lisp jest wystarczająco dobry do pisania wielu frameworków internetowych.
Nie używam ani nie polecam żadnych frameworków internetowych. Wolę budować aplikacje internetowe, łącząc ze sobą narzędzia ortogonalne (David Lichteblau wspomniał o kilku dobrych) przy użyciu wzorców projektowych w sposób, który jest faktycznie odpowiedni dla aplikacji, którą budujesz, i to jest podejście, które polecam. Common Lisp zapewnia zarówno bogactwo takich narzędzi, jak i niezrównaną możliwość ich łączenia.
Adam Petersen opublikował w zeszłym roku doskonały samouczek wprowadzający, jak zacząć budować aplikacje internetowe Lisp w tym stylu:
http://www.adampetersen.se/articles/lispweb.htm
źródło
Myślę, że można powiedzieć tak bez większego zamglenia.
jednym z pierwszych serwerów HTTP był cl-http
Program ludzie wokół DrScheme spędzili nad nim niezwykłą ilość czasu:
www.franz.com działa na własnym serwerze WWW (AllegroServer) i platformie internetowej (interakcje)
Jeśli masz wątpliwości, sprawdź popularne pakiety lisp od Edi Weitz. Zwykle działają.
Więc tak, można zrobić "poważne" programowanie internetowe za pomocą Common Lisp. Ja ze swojej strony jestem obecnie niezdecydowany, aby podążać drogą Common Lisp lub Ruby on Rails. Wolę oba rozwiązania od wszystkiego .NET ....
źródło
Firma Paula Grahama Viaweb napisała produkt w Common Lisp, który później stał się Yahoo Shops. Najwyraźniej Yahoo później przepisał go w C ++. Istnieje sporo zasobów internetowych dotyczących programowania w Lispie.
źródło
W tym pytaniu możesz znaleźć trochę informacji na temat narzędzi do aplikacji internetowych Lisp .
Warto też posłuchać Stack Overflow Podcast 27, w którym goście z Reddit opowiadają trochę o swoich doświadczeniach związanych z prowadzeniem strony internetowej na Lispie (i przejściu na Pythona).
źródło
Opinie są różne. Powszechna mądrość jest taka: lepiej używaj innego języka, a raczej innego stosu internetowego, takiego jak LAMP, .NET, Ruby on Rails, Java. Dobrze znanym, odnoszącym sukcesy projektem internetowym w trakcie lispu był ViaWeb Paula Grahama . Reddit został początkowo zaimplementowany w lisp, ale potem przeszedł na Pythona . Jeśli zdecydujesz się użyć lisp, wypróbuj książkę Seibel: Practical Common Lisp .
źródło
Wygląda na to, że wiele Orbitza było lub jest napisane w LISP-ie .
źródło
Spójrz na Allegro Common Lisp. Ma kilka bibliotek, w tym serwer WWW, specjalnie do tworzenia stron internetowych.
źródło