2012-05-08 23 views
6

Ich bin etwas vertraut mit Schema. Ich lese OnLisp und würde gerne ein echtes Weltprojekt darin machen. Höchstwahrscheinlich Web-Entwicklung. Ich würde gerne wissen, welche Art von Setup Menschen verwenden, um Websites in Lisp zu entwickeln. Ich habe ein paar Macs zu Hause und ich habe mir gedacht, dass ich clozure cl. Ich bin jedoch vorsichtig ein paar Dinge. Ich habe auf dem Internet gelesen, dass cl keine zuverlässige Threading-Einrichtung noch gute Vernetzung hat. Ist das wahr? Was war deine Erfahrung?Webentwicklung in Common Lisp

PS: Erzähl mir nicht von clojure :). Lisp ist ein Juckreiz, den ich kratzen muss.

+0

Auch die meisten Web-Anwendungen, die da draußen waren, scheinen ein bisschen antiquiert. Ich sage nicht "Haha .. schau ma .. keine Klamotten", aber kann mir jemand sagen, warum das der Fall ist, oder mir ein Gegenbeispiel zeigen? Gibt es auch ein Lisp zu Javascript-Übersetzer da draußen. Gibt es irgendeine Hilfe von Lisp am Frontend? – Ravi

+0

Ich vermute, es ist ein soziales Problem. Da es relativ wenige Lispers gibt, haben Lisp-basierte Webanwendungen im Allgemeinen nicht viele Mitwirkende. Daher müssen Entwickler sich darauf konzentrieren, die Grundlagen zu schaffen und Dinge wie auffällige AJAX-Funktionen zu vernachlässigen. –

+0

An andere Googler: Ich schlage vor, einen frischen Blick auf das [tolle gemeinsame Lispeln] (https: //codyreichert.github.io/awesome-cl /) Liste! – Ehvince

Antwort

6

Nicht sicher, warum es nicht "gute Vernetzung" hätte; Sie können sich nicht auf Threads verlassen, wenn Sie eine portable Common-Lisp-Anwendung schreiben möchten, da bestimmte Implementierungen sie nicht unterstützen (AFAIK, nur clisp, obwohl Sie es mit experimenteller Thread-Unterstützung kompilieren können). Wenn Sie eine Implementierung auswählen und dabei bleiben möchten, haben Sie dieses Problem nicht.

Die "Standard" CL Web Stack ist Hunchentoot/cl-who/clsql, obwohl Sie Tutorials, die laufen auf Araneida oder Portable AllegroServe finden.

Das Setup ich benutze, ist Debian/SBCLquicklisp und die oben genannten Systeme zusammen mit MySQL laufen (obwohl ich ernsthaft überlege mir einen Sprung über zu Postgres) für die Datenbank und nginx vor Hunchentoot dienen statische Inhalte zu laufen.

+0

Ich versuchte SBCL auf Mac, aber ich bekomme "Threading deaktiviert" Fehler, wenn ich versuchte, Weblocks zu laden. Ich habe Threading aktiviert, aber es sagt immer noch die gleiche verdammte Sache :). Wie auch immer, ich bleibe jetzt für den Augenblick. Danke für die Info. Ich denke, das ist ein guter Anfang. – Ravi

+0

@Ravi Meiner Erfahrung nach verhalten sich SBCL und Clozure CL sehr ähnlich in ihrem Verhalten, so dass es unwahrscheinlich ist, dass letztere Probleme verursacht. Ich neige dazu, Clozure CL unter Mac OS X und SBCL unter GNU/Linux zu benutzen, und ich habe noch keine Portabilitätsprobleme zwischen den beiden. (CLISP und ECL sind natürlich eine ganz andere Sache, aber wenn ich Web-Apps schreibe, ignoriere ich einfach ihre Existenz.) –

+0

Übrigens empfehle ich zusätzlich zu den in dieser Antwort erwähnten Bibliotheken, Postmodern (http://marijnhaverkeke.nl/postmodern/) für Ihre Datenbank benötigt. Ich habe festgestellt, dass es sehr flexibel und vorhersehbar ist. –

2

Das Problem mit Common Lisp ist "Networking" ist, wir haben keine Steckdosen in CL-Standard, so dass jede Implementierung hat seine eigene Socket-API ist. Wir haben einige Versuche, eine gemeinsame Schnittstelle zu geben, wie usocket. Sie können eine Liste der Netzwerk-bezogenen Pakete here finden. Wenn Sie ein Web-Framework benötigen, schauen Sie in Caveman. Ich habe es noch nicht benutzt, aber es sieht aus wie das vollständigste CL-Web-Framework, das ich je gesehen habe.

+0

Noch nie von Caveman gehört. Es sieht gut aus. – Ravi

8

Momentan verwende ich Restas ein Framework basierend auf Hunchentoot und inspiriert von dem Wegesystem von Rails. Ich benutze auch Postmodern, um mit einer PostgreSQL Datenbank zu interagieren, und ich erzeuge HTML mit cl-markup, obwohl ich über Wechsel zu cl-who denke, die anpassungsfähiger aussieht.

Als ich angefangen habe, habe ich auch Parenscript betrachtet mit den JavaScript zu erzeugen, aber ich bin jetzt einfach nur glücklich mit Mootools und schlicht JavaScript.

Alles läuft auf SBCL und ist mit Quicklisp verfügbar.

+0

Parenscript sieht interessant aus. Ihre Einrichtung sieht umfassend aus. Vielen Dank. – Ravi

+1

Ich spiele jetzt schon eine Weile mit Restas. Warum ich es mag: 1) Wie der Name andeutet, fördert es ein ruhiges Design 2) Es ist einfach, wenn man in MVC denkt, es ist ziemlich genau der C-Teil, und ziemlich gut gemacht. 3) Es ist sehr flexibel 4) Ich finde sein Konzept von Routen besser als die Art, wie Django seinen Versand mit regulären Ausdrücken durchführt (obwohl ich denke, dass es diese gute Idee von Rails bekommen hat) 5) Sie können Ihre Site in Modulen strukturieren und dann mounten spezifische URLs, wiederum besser als Djangos Art, Apps in einem Projekt mit einem Spaghetti-Bogen von url.py-Dateien zu organisieren. 6) es lisp :) –