The Elephant Persistent Object Metaprotocol and Database - für Common Lisp. Ja, ich hab mal wieder Klammersucht. Sorry.
lisp - 23.9.2004 - 4.4.2007
Scheme 48 - neues Release 1.6. Sehr interessante Elemente für die Programmierung mit Threads. Sieht so aus, als ob da jemand in allen möglichen Konzepten wildern gegangen ist.
Emergent Technologies Inc. -- LMI K-Machine - Lisp-Folklore.
Nochmal PicoLisp
Also nach etwas gewühlen und geblätter und gelese: PicoLisp ist genial. Was es ist: einfach ein primitives Lisp mit einem sehr kompakten Sprachkern und einigen sehr ungewöhnlichen Design-Entscheidungen.
Ganz vorne: kein Compiler, nicht mal ein Bytecode-Compiler. Die "virtuelle Maschine" von PicoLisp ist einfach ein effizienter Lisp-Interpreter für Lisp-SEXPRs (die verketteten Listen die man so aus alten Lisp-Interpretern kennt).
Ein weiterer Punkt: nur Listen, Symbole und Zahlen als Datentypen. Keine Floatingpoints (statt dessen einfache Wege skalierte Integer zu benutzen) und Strings sind entweder Listen von Zeichen (die wiederum Symbole sind) oder einfach Symbole.
Auch eher ungewöhnlich: konstant dynamisches Binden von Symbolen, nicht lexikalisches Binden. Alte Lisp-Systeme hatten auch nur dynamisches Binden. Lexikalisches Binden macht Compiler einfacher und beseitigt einige lästige Fehlerquellen, dynamisches Binden aber ermöglicht einige sehr interessante Programmiertechniken (weshalb es in vielen Lisps fluids gibt - dynamisch gebundene Variaben - wie z.B. die globalen Parameter in Common Lisp).
Weitere Besonderheiten: von vornherein auf die Anwendungsentwicklung datenbankgestützer Programme ausgelegt. Es ist eine eigene Datenbank enthalten die alle Merkmale typischer Objekt-Relationaler Datenbanken enthält und eine eigene GUI-Bibliothek, die auf verschiedene HTML-Varianten (HTML pur, HTML mit Java und HTML mit JavaScript) absetzt.
Der Datenbank dann Prolog als Abfragesprache zu verpassen ist nur konsequent weitergedacht - generell ist die Integration von Prolog und Lisp ja nicht neu. Das ganze aber dann wieder derart kompakt hinzubekommen, ist smart.
Was mich daran so begeistert? Nunja, wer von Paul Graham seine Artikel über Arc gelesen hat - die 100-Jahre-Sprache, an der er werkelt - wird erstaunliche Parallelen sehen. Auch PicoLisp beschränkt sich auf das notwendigste, und benutzt recht kompakte Darstellungen und hat auch nur stark reduzierte Datentypen. Bei beiden ist die Idee die gleiche: zurück zur sauberen Abstraktion auf den bekannten Konzepten, nicht die Darstellung des Source durch vorweggenommene Optimierung (Datentypenauswahl) verwässern.
Das Ergebnis? Ein kompakter Lisp-Kern mit sehr interessanten Eigenschaften und einer recht einfachen Möglichkeit Webanwendungen zusammenzudengeln. Aber auch geeignet für typische Scripting-Geschichten (wenn man mal rausgefunden hat, wie man z.B. Programme integriert bekommt). Zusätzlich ein Interpreter mit überschaubarem Source (keine 14000 Zeilen C-Source!), den man leicht um die für eigene Projekte notwendige Funktionen erweitern kann. Insgesamt erinnert mich das stark an die alten TCL-Versionen, nur das hier ein richtiges Lisp unten drin steckt.
Wer selber lesen will, hier ein paar Dokumentationslinks:
Allerdings sind alle Dokumentationen nicht so ganz vollständig - immer wieder tauchen Funktionen in einem der Dokumente auf, die in der Referenz fehlen, oder es werden Funktionen benutzt, die nirgendwo erwähnt werden und deren Funktionsweise nicht ganz klar ist. Aber dazu gibts ja auch noch den kompletten (und nur spärlich) dokumentierten Sourcecode aller Library-Module. Ja, klingt etwas nach Text-Adventure, ist mir klar. Andererseits ist das Volumen an Source gut überschaubar.
Pico Lisp - mini-Lisp-Interpreter, der seit 1988 im praktischen Einsatz für Anwendungsentwicklung ist. Interessantes Konzept - zurück zu Lisp 1.5, schneller Interpreter statt Compiler, hohe Dynamik.
new snapshot tarballs finally - OpenMCL bekommt Unicode-Support.
DrScheme - von der besten Scheme-Implementation der Welt gibts jetzt die neue Version 350. Diese hat - neben diversen anderen Änderungen - einen Just-in-Time-Compiler für Intel und PPC.
Allegro Common Lisp Express - die aktuelle freie (wie Freibier) Version 8.0 davon ist jetzt raus.
Clim-Desktop project - erste Ansätze für eine integrierte Common Lisp Entwicklungsumgebung auf Basis der freien CLIM Implementierung.
Igel - Unterschätze nie die Macht eines kleinen taktischen Lisp-Interpreters.
A P R E S S . C O M : Practical Common Lisp - gibts jetzt auch als freien PDF Download (auf die Free Download Seite gehen und dort runterladen).
Lisp at Light Speed - ein wirklich interessantes Lisp-Blog
Taste for the Web - nette Karrikatur von Paul Graham Artikeln. Ja, sein manchmal recht onkelhafter Stil mit ständigen Plugs von Yahoo Stores kann einem ab und an ganz schön auf den Keks gehen.
LTK - The Lisp Toolkit - wenns mal nur einfach ein bischen GUI sein soll, aber nicht unbedingt die grosse Keule nötig ist - LTK bietet einfache Bindings für TK in Common Lisp. Arbeitet auch hervorragend mit OpenMCL zusammen, sogar CLISP mag damit.
Scatha and Glaurung sind zwei Schachprogramme in OpenMCL geschrieben, mit dem Cocoa-Support von OpenMCL. Nette Beispiele dafür, wie man mit OpenMCL native OS X Anwendungen bauen kann - und interessant zu spielen sind sie auch, vor allem die hexagonal-Schach-Version.
call of the noodle
Da schreibt einer an einem Lisp-Compiler für Python-Bytecode - sehr interessant, da man damit die Python Libraries unter einem Lisp-Dialekt benutzen könnte. Mal schauen wenn der erste Release kommt, wie der Lisp-Dialekt aussehen wird und was für Features er abdecken wird. Mit Unterstützung für Lisp-Makros wäre es sehr interessant.
OpenMCL 1.0 ist raus - nach einer doch recht langen Zeit endlich mal ein anständiger Versionssprung
Retrocomputing - MIT CADR Lisp Machines
Yeeeehaaaa! Der Sourcecode der MIT CADR Lisp Machines - dem Vorläufer der meisten High-End-Lispmaschinen - ist unter einer BSD-Lizenz freigegeben worden!
Das dürfte hoffentlich dem CADR Lisp Emulator weiteren Auftrieb geben. In letzter Zeit wars ja etwas ruhig um den Emulator geworden.
Wenn jetzt sich endlich Symbolics dazu durchringen könnte ihre OpenGenera-Plattform auf OS X zu portieren, wäre ich noch glücklicher
Und noch ein paar weiter Neuigkeiten zum Emulator - es gibt den ersten Support für ChaosNet, inclusive einem Fileserver für Linux. Und das im Link angesprochene Lispmachine-Board fänd ich ziemlich cool ...
I want one!
Erste Lebenszeichen von Open Genera auf PowerMac - das wäre echt ein Hammer, wenn Open Genera nicht mehr nur auf seltsamen OpenVMS Kisten liefe, sondern auch auf einem PowerMac - da würd ich mir glatt doch noch einen Desktop-Rechner für kaufen
ObjectiveCLIPS
Way cool: Objective CLIPS ist eine neue Entwicklungsumgebung für OS X. Aus der Beschreibung:
Using Objective C runtime introspection, CLIPS, and FScript, it is possible to write intelligent Cocoa applications. Any Objective C object can be asserted as a fact in CLIPS, however, CoreData provides an additional meta model along with object persistence.
CLIPS ist eine Expertensystemumgebung die im Prinzip auf einem Lisp-Dialekt aufbaut und die Verwaltung von Regeln und Fakten ermöglicht, sowie das Reasoning darüber. FScript ist eine an Smalltalk angelehnte Scriptsprache die direkt mit den ObjectiveC-Klassen im OS X zusammenarbeitet. Beides zusammen sollte ziemlich coole Sachen ermöglichen, zumal mit CoreData auch einfach Datenbanken und Dokumente erstellt werden können. Und beide Sprachen (CLIPS und FScript) fand ich bei meinen Spielereien damit recht interessant - CLIPS war sogar längere Zeit bei mir als "Lisp-Ersatz" im Einsatz, weil es zwar ein recht altmodisches Lisp ist, aber dafür eben mit mächtigen zusätzlichen Abstraktionsmöglichkeiten ausgestattet ist.
wxWindows jetzt auch für Common Lisp
wxCL bietet Common Lisp Libraries für die Nutzung der genialen wxWindows GUI Bibliothek. Sehr schön - ich habe wxWindows in seiner Python-Inkarnation schon zu schätzen gelernt, auch in Scheme (über DrScheme) ist es sehr hilfreich, jetzt dürfen auch Common Lisper. Ich weiss das bei Common Lisp natürlich CLIM (heute oft in der Form von McCLIM) das Toolkit der Wahl ist, zumal es wesentlich mächtiger als wxWindows ist. Aber trotzdem ist es schon nett eine Cross-Plattform GUI Bibliothek zu haben, auch und gerade weil es diese eben für mehr als eine Programmiersprache gibt.
Emacs on the metal
Aus der Movitz Mailingliste: Emacs on the metal. Jemand hat einen Emacs-Clone in Common Lisp geschrieben und diesen dann bootfähig als Movitz-Kernel-Image erstellt. Movitz ist ja ein System zur Programmierung von Embedded Applications in Common Lisp - und damit ist der Emacs-Clone somit der erste wirklich bootfähige Emacs geworden. Krank
LispWorks Personal 4.4.5
LispWorks Personal - die freie (Freibier-freie) LispWorks-Version ist in der neuen 4.4er Release verfügbar und läuft auch mit Tiger. LispWorks ist im Moment die interessanteste Lisp-Umgebung für den Mac, da sie sich relativ gut in das System integriert. Und zum Spielen reicht die Personal Version ohne weiteres.
TBNL - A Toolkit for Dynamic Lisp Websites ermöglicht es mit Common Lisp dynamische Inhalte zu generieren. Im Prinzip sowas wie eine FastCGI-Lösung für Common Lisp.
Das .emacs File von Bill Clementson. Zeigt sehr schön warum man eigentlich überhaupt drüber nachdenken sollte Emacs zu benutzen. Besonders interessant für Common Lisp User natürlich sein Customizing für Slime zur Integration diverser Common Lisps.
Practical Common Lisp ist ein neues Buch über Common Lisp mit vielen praktischen Beispielen. Endlich mal ein Common Lisp Buch das sich nicht nur in eher theoretischen Beispielen ergeht sondern sich so praktischen Themen wie Spam-Filter, Webserver, HTML Generierung, ID3 Tags und anderem Kram widmet. Der Buchinhalt ist online lesbar.
Wer mit XMLHTTPRequest und Common Lisp spielen will, CLiki : cl-ajax liefert das dafür nötige Framework zur einfachen Integration von Common Lisp Funktionen in Webanwendungen auf Araneida-Basis.
ParenScript ist ein Compiler der Lisp nach JavaScript umwandelt. Für Lisp-basierte Webserver und Anwendungsframeworks sicherlich eine ziemlich geniale Sache, weil der Programmierer in seinen gewohnten Sprachmitteln arbeiten kann. Clientside Lisp auf Umwegen halt ...
UnCommon Web Tutorial
Der Artikel hyper-cliki : Web/Continuation beschreibt wie man mit dem Continuation-basierten Webframework UnCommon Web in Common Lisp Webanwendungen schreibt. Sehr interessant, da Common Lisp selber ja bei Continuations deutlich mehr gehandicaped ist als Scheme - in Scheme sind Continuations per Standard first-class Objekte, in Common Lisp nicht.
Continuation-basierte Webserver haben den Vorteil das der eigentliche Code sehr ähnlich klassischen Anwendungen strukturiert werden kann. Man muss sich viel weniger auf das Event-Modell der klassischen Webprogrammierung einlassen und hat viel seltener mit expliziten Session-Konstrukten zu tun, weil die Session bei einem continuation-basierten Websystem implizit ist.
Continuation-basierte Web-Frameworks gibt es für folgende Sprachen:
- [Smalltalk][1]
- [Common Lisp][2]
- [Scheme][3] (leider kein direkter Link auf den Webserver selber)
- [SISC Scheme][4]
- [Ruby][5] gleich [zweimal][6]
- [Python (über CherryPy und entweder Stackless oder StateSaver)][7]
Sicherlich gibt es noch mehr, aber das sind die die ich auf die Schnelle finden konnte.
Hedgehog ist ein netter kleiner Lisp-Compiler und Bytecode-Interpreter mit speziellem Fokus auf geringem Resourcenverbrauch. Leider leidet die Interaktivität und das Debugging darunter: keine Tracebacks und keine REPL, nur Scripts laufenlassen und über grep im Pseudo-Assembler-Source nach der Abbruchstelle suchen. Da wäre es schön wenn die Sprache diese interaktiven Features per Option bieten könnte - in kleinen Kisten kann man das dann ja weglassen.
cyrusharmon.org: More GCC-XML (new and improved -- now with pr0n!) - bekloppter Titel, aber geniale Sache: SBCL kriegt native Bindings zum Carbon API. Und stellt damit das zweite Open Source Lisp-System mit Integration in die OS X Welt dar (wobei Cocoa-Bindings natürlich noch cooler wären - aber das bietet bis jetzt im Open Source Bereich nur OpenMCL).
symbolics.com ist die älteste noch registrierte Domain. Very cool. Ich hab übrigens eine Symbolics bei mir im Zimmer stehen
SLIME: The Superior Lisp Interaction Mode for Emacs - Common Lisp Systeme in Emacs einbetten
Arachnids and Pachyderms - Wie man ein einfaches Blogsystem mit Common Lisp bauen kann
CLiki : Araneida - Noch ein Webserver in Common Lisp - dieser ist sehr klein
Chapter 2. Building OpenMCL from its Source Code - OpenMCL vom Source erstellen (auch für die 0.14-dev)
mel-base - Basislibrary für eMail-Handling in Common Lisp
Bayescl -- cvs-prerelease - Bayesian-Filter in Common Lisp
CL-PREVALENCE - In-Memory-Database und Serialization sowie Deserialization für Lisp
Lispix Table of Contents - Bildbearbeitungssystem in Common Lisp
Persistent Lisp OBjects - Persistente Lisp Objekte - aktuelle Version, Client-Server Architektur
Pg: a Common Lisp interface to PostgreSQL - PostGreSQL Client komplett in Common Lisp
Projects at Common-Lisp.net - Noch ein Haufen mehr Projekte in Common Lisp
AllegroServe - a Web Application Server - Homepage des originalen AllegroServe Webservers - mit Dokumentation die auch für Portable AllegroServe relevant ist
Common Lisp Hypermedia Server (CL-HTTP) - der klassische Common Lisp HTTP Server
Common Lisp Opensource Center - diverse Allegro Open Source Projekte - z.B. ein FTP und ein NFS Server
lisp tools for xml - Noch ein XML Parser - dieser hier ist sehr vollständig, die gängigen Modelle werden unterstützt. Auch ein SOAP Parser soll dabei sein.
Portable AllegroServe - Kompatibilitätslayer für Allegro CL Netzwerk und Threading code für den AllegroServe Webserver
S-XML - Einfacher XML Parser für Common Lisp
S-XML-RPC - XML-RPC für Client und Server in Common Lisp