Czy możliwe jest (poważne) tworzenie stron internetowych w Lisp? [Zamknięte]

100

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?

Leonardo
źródło
2
Zależy, co masz na myśli mówiąc „praktyczny”. Możliwe, tak. Praktyczne, prawdopodobnie nie dla większości. Czy planujesz hostować swoją witrynę? Czy zamierzasz obsługiwać własne dedykowane urządzenie, w którym będziesz mieć kontrolę nad rootem? Ile wysiłku jesteś gotów w to włożyć?
rdzeń
Leonardo, tworzę teraz książkę na ten temat i chciałbym uzyskać opinie od twórców stron internetowych, którzy są zainteresowani Lispem. Jeśli chcesz, czy możesz dać mi znać, jak wpadłeś na pomysł użycia Lispa i co chciałbyś zobaczyć w takiej książce? [email protected]
vsedach
@chris - Niedawno skonfigurowałem hosting Scheme dla niektórych moich pobocznych projektów; to było łatwiejsze niż myślałem - gcbhacks.dreamhosters.com/scheme-web-apps
gcbenison
2
Przeczytaj eseje Paula Grahama. Wątpię, by było coś, czego przegapił w dyskusji o używaniu LISP-a w aplikacjach internetowych, a ponadto jest świetnym pisarzem. paulgraham.com/avg.html jego strona domowa to: paulgraham.com/index.html
Kelly S. French
Inni pracownicy Google: na niesamowitej liście CL jest coraz więcej aktualnych odpowiedzi .
Ehvince

Odpowiedzi:

82

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 :-)

David Lichteblau
źródło
1
a to dotyczy tylko zwykłego seplenienia i tylko jednego zestawu narzędzi ...
Attila Lendvai
1
@MattBall woof. szczekać. wycie.
niezsynchronizowany
W Internecie nikt nie może usłyszeć krzyku twojego serwera lisp.
kd4ttc
31

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ą:

(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))

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.

Leslie P. Polzer
źródło
19

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 )

d4nt
źródło
Mówi, że biblioteki były „największym problemem”, ale tuż przed tym powiedział, że „reddit nie będzie działał na moim Macu”; w tamtym czasie istniał tylko jeden wątkowy kod CL dla komputerów Mac, który nie mógł uruchomić kodu gniazda niskiego poziomu. Brzmi to jak przełom.
Ken
3
Jestem wielkim fanem Lispa, zastępuje mi Pythona. Ale pracuję w C ++. Mogę znaleźć innych programistów Pythona, którzy zrozumieją prototypy Pythona, ale dopóki obecne odrodzenie Lispa nie odniesie większego sukcesu, nie mogę go używać w pracy bez niekończących się pytań "dlaczego nie użyłeś Pythona lub Rubiego?"
Aaron
11

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!

  • Użyj CL-WHO do łatwego pisania HTML w składni w stylu lisp
  • Parenscript umożliwia pisanie kodu, który kompiluje się do javascript
  • Do połączenia z bazą danych użyj Postmodern, aby porozmawiać z PostgreSQL

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.

Chris
źródło
Czy wiesz o czymś, co sprawi, że LISP będzie współpracował z MongoDB?
MadPhysicist
9

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

vsedach
źródło
8

Myślę, że można powiedzieć tak bez większego zamglenia.

  1. jednym z pierwszych serwerów HTTP był cl-http

  2. Program ludzie wokół DrScheme spędzili nad nim niezwykłą ilość czasu:

  3. www.franz.com działa na własnym serwerze WWW (AllegroServer) i platformie internetowej (interakcje)

  4. 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 ....

Friedrich
źródło
4

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.

ConcernedOfTunbridgeWells
źródło
1
Jeśli to prawda w przypadku Yahoo, niektórzy mogą postrzegać to jako niepowodzenie CL jako języka internetowego. Ale uznałbym to za sukces CL jako języka do tworzenia prototypów w sieci.
gcbenison,
3
Prawie nie uważałbym przepisania za porażkę, jak powiedział sam Paul Graham w notatkach do Beating the A Average: „W styczniu 2003 r. Yahoo wydało nową wersję edytora napisaną w C ++ i Perlu. Trudno powiedzieć, czy program nie jest jednak dłużej napisane w Lisp, ponieważ aby przetłumaczyć ten program na C ++, musieli dosłownie napisać interpreter Lispa: pliki źródłowe wszystkich szablonów generujących strony są nadal, o ile wiem, kodem Lispa. "
protista
viaweb nie został prototypowany w zwykłym seplenieniu w celu przepisania go w innym języku, c ++. jest zamierzone przez producentów do pisania i uruchamiania w trybie lisp z różnych oczywistych powodów przez niego podanych, moc języków, szybkość, tak prototypowanie i szybka produkcja, znał bardzo dobrze seplenienie itp. uruchamiają go z wersją, którą napisałem w języku lisp, a jego część faktycznie była w języku lisp. po przejęciu go, według plotek, przepisali go, nie jestem pewien. jest to wybór nabywcy, możesz nawet wirte in vbasic lub pascal fortran.
sçuçu,
2

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).

Dave Webb
źródło
2

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 .

Yuval F.
źródło
1
Czy jest szansa, że ​​mógłbyś dodać trochę więcej FUD do swojego postu?
jrockway
@Yuval ma rację. To powszechna mądrość. Reddit się zmienił. Myślę, że post zawiera pytanie, czy za tą powszechną mądrością kryje się jakaś prawda.
Steve Rowe
1
@jrockway i Steve Rowe - Powszechna mądrość nie bez powodu. Nie sądzę, żeby to było FUD. Nie słyszałem o udanej stronie internetowej napisanej w LISP od czasu ViaWeb. Proszę mnie poprawić, jeśli się mylę. Uważam, że język programowania powinien być używany zgodnie z ich zaletami, a nie ideologią.
Yuval F
0

Spójrz na Allegro Common Lisp. Ma kilka bibliotek, w tym serwer WWW, specjalnie do tworzenia stron internetowych.


źródło