Es ist offensichtlich möglich, fast jede Art von Anwendung in fast jeder Programmiersprache zu schreiben, insbesondere in einer so mächtigen wie Lisp (sei es Scheme oder Common Lisp). Aber ist es praktisch, es für die Webentwicklung zu verwenden? Wenn ja, was sollte ein guter Ausgangspunkt sein? Wo finden Sie die richtigen Ressourcen (Tools, Bibliotheken, Dokumentationen, Best Practices, Beispiele usw.) für ein Projekt dieser Art?
99
Antworten:
Ja, Webentwicklung ist heute eine der Stärken von Common Lisp.
Verwenden Sie als Webserver Hunchentoot , früher bekannt als tbnl, von Dr. Edmund Weitz.
Sie können es als Back-End für Apache ausführen, indem Sie mod_proxy als Reverse-Proxy oder als eigenständigen Server verwenden.
Es stehen verschiedene Lösungen zur HTML-Generierung zur Verfügung, von Vorlagen im PHP-Stil über Lisp-Makro-Hacks bis hin zu XSLT. Treffen Sie einfach Ihre Wahl.
HTML-TEMPLATE ist ein Beispiel.
Closure XML ist für XML-Analyse, Serialisierung, XPath 1.0, XSLT 1.0 verfügbar. Es gibt auch Closure HTML für das Parsen von HTML-Tag-Suppen.
(Vollständige Offenlegung: Ich bin der Betreuer von Closure XML und Closure HTML.)
Wenn Sie möchten, kann Parenscript Ihre JavaScript-Erfahrung lispiger machen, aber Sie können natürlich auch selbst einfaches altes JavaScript schreiben.
Eine weitere coole Lösung zur Verbesserung von JavaScript in jwacs , die in Common Lisp geschrieben ist und JavaScript transformiert, um die Unterstützung für die Fortsetzung hinzuzufügen.
Für Webdienstprojekte ist möglicherweise zusätzlich zu einem Server ein HTTP-Client erforderlich.
Drakma ist die Bibliothek, die heute dafür verwendet wird.
PURI ist nützlich für die URI-Manipulation.
Und es gibt noch mehr! Ein Ausgangspunkt ist Cliki, zum Beispiel cliki.net/web .
Im Web weiß niemand, dass Ihr Server in Common Lisp geschrieben ist :-)
quelle
Die Webentwicklung in Common Lisp ist sowohl effektiv als auch unterhaltsam.
Einige Beispiele:
Mit CL-WHO können Sie HTML schreiben, ohne jemals wieder ein schließendes Tag zu vergessen.
Mit Weblocks können Sie Formulare mit integrierter Validierung deklarativ definieren:
Es unterstützt AJAX auch vollautomatisch und greift auf normale Links zurück, wenn der Browser dies nicht unterstützt.
Cl-Prävalenz ist eine unglaublich einfache Alternative zu SQL.
In letzter Zeit setzen sehr viele Menschen diese Technologien für geschäftskritische Anwendungen ein - mit Erfolg.
Die wichtigsten CL-Open-Source-Projekte haben tatsächlich eine hervorragende Community-Unterstützung.
quelle
Es gibt einige Web-Frameworks für die Webentwicklung. Schauen Sie sich an:
Wenn Sie gut unterstützte Lisp-Tools wünschen, müssen Sie dafür bezahlen. Es gibt einfach keine sehr große Community um die Open Source-Tools, daher haben sie nicht den gleichen Dokumentations- / Akzeptanzgrad wie beispielsweise Django unter Python.
Hier sind einige kommerzielle Lisp-Produkte:
Es ist auch erwähnenswert, dass Reddit ursprünglich in Lisp erstellt wurde, die Autoren jedoch später zu Python migrierten, da es an gut genutzten und dokumentierten Bibliotheken mangelte. ( Link )
quelle
Ich kann nicht mit anderen Frameworks sprechen, aber ich hatte sehr viel Glück mit Hunchentoot für einen Webserver (es funktioniert von alleine gut, oder Sie können es hinter Apache stellen ). Was es wirklich zum Leuchten bringt (dies wird für manche wahrscheinlich ein Schock sein), sind die Bibliotheken!
Was ich an der Verwendung von CL für das Web wirklich mag, ist, dass Sie alles optimieren können, während es ausgeführt wird. Sie haben immer eine REPL, die Ihren Servercode ausführt. Anschließend können Sie eine Verbindung zu dieser REPL herstellen und die Funktionsweise des Codes ändern oder überprüfen, ohne dass Sie etwas stoppen müssen. Ich habe Funktionen neu definiert, während die Site ausgeführt wird. Wenn die Funktion das nächste Mal aufgerufen wird, nimmt sie einfach den neuen Code auf und funktioniert.
quelle
Um den Mythos, dass es keine Lisp-Webframeworks gibt, weiter zu zerstreuen, sind hier einige, die noch nicht erwähnt wurden:
Offensichtlich scheinen viele Leute zu denken, dass Lisp gut genug ist, um viele Web-Frameworks zu schreiben.
Ich verwende oder unterstütze keine Web-Frameworks. Ich bevorzuge es, Webanwendungen zu erstellen, indem ich orthogonale Werkzeuge (David Lichteblau hat einige gute erwähnt) unter Verwendung von Entwurfsmustern auf eine Weise kombiniere, die tatsächlich zu der Anwendung passt, die Sie erstellen, und das ist der Ansatz, den ich empfehle. Common Lisp bietet sowohl eine Fülle solcher Tools als auch eine unübertroffene Möglichkeit, sie zu kombinieren.
Adam Petersen hat im vergangenen Jahr ein hervorragendes Einführungs-Tutorial veröffentlicht, wie Sie mit dem Erstellen von Lisp-Webanwendungen in diesem Stil beginnen können:
http://www.adampetersen.se/articles/lispweb.htm
quelle
Ich denke, man kann ohne viel Blendung ja sagen.
Einer der ersten HTTP-Server war cl-http
Die Mitarbeiter von DrScheme haben bemerkenswert viel Zeit damit verbracht:
www.franz.com läuft auf einem eigenen Webserver (AllegroServer) und Webframework (Webactions)
Wenn Sie Zweifel haben, überprüfen Sie die gängigen Lisp-Pakete von Edi Weitz. Sie arbeiten normalerweise.
Also ja man kann mit Common Lisp "ernsthafte" Webprogrammierung machen. Ich für meinen Teil bin derzeit unentschlossen, einer Common Lisp-Route oder Ruby on Rails zu folgen. Ich bevorzuge beides gegenüber allem .NET ....
quelle
Paul Grahams Firma Viaweb schrieb ein Produkt in Common Lisp, das später zu Yahoo Shops wurde. Anscheinend hat Yahoo es später in C ++ neu geschrieben. Es gibt einige Webressourcen für Lisp-Programme.
quelle
In dieser Frage finden Sie einige Informationen zu Tools für Lisp-Webanwendungen .
Es könnte sich auch lohnen, sich Stack Overflow Podcast 27 anzuhören, in dem die Reddit-Leute ein wenig über ihre Erfahrungen beim Ausführen einer Website auf Lisp (und ihren Wechsel zu Python) sprechen.
quelle
Meinungen gehen auseinander. Die allgemeine Weisheit ist: Verwenden Sie besser eine andere Sprache oder einen anderen Webstack wie LAMP, .NET, Ruby on Rails, Java. Das bekannte erfolgreiche Webprojekt in lisp war Paul Grahams ViaWeb . Reddit wurde ursprünglich in lisp implementiert, dann aber auf Python umgestellt . Wenn Sie sich für Lisp entscheiden, probieren Sie Seibels Buch: Practical Common Lisp .
quelle
Es sieht so aus, als ob viel Orbitz in LISP geschrieben wurde oder wird .
quelle
Schauen Sie sich Allegro Common Lisp an. Es verfügt über einige Bibliotheken, einschließlich eines Webservers, speziell für die Webentwicklung.
quelle