Archiv 14. März 2007

Bericht: OpenBSD-Entwickler wollten kritische Lücke kleinreden - peinlich, weil Theo immer wieder auf anderen Systemen rumhackt, weil diese ja genau das gleiche machen. Scheinheilig, weil so wohl einfach nur die weisse Weste von OpenBSD bezüglich Sicherheitslöcher hochgehalten werden soll - auf Kosten der Offenheit. Lächerlich, weil OpenBSD immer noch die beste Security-History hat und es wohl eher anstehen würde, einen Fehler zuzugeben und offen zu kommunizieren.

Gen-Mais: Ratten zeigen Schäden an Leber und Nieren - CRIIGEN schließt ihren Untersuchungsbericht mit der Feststellung ab, dass nach den zur Verfügung stehenden Daten der Gen-Mais als nicht sicher bewertet werden kann . Schert ja keinen, wenn der Umsatz stimmt.

Mono on Nokia 770/800 - gut. Damit bestehen Chancen die libSL Geschichten (z.B. Sleek?) auf dem Nokia zum Fliegen zu kriegen. Und damit gibts Chancen für einen minimalen SL Client auf dem Tablett! (ganz abgesehen von der Vielzahl interessanter Programmiersprachen die jetzt auch für das Nokia verfügbar werden)

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.

Polen: Minister will "homosexuelle Agitation" verbieten - Polen, das europäische Amerika. Genauso gaga.

SCIgen - Ein automatischer CS-Papiergenerator - urkomisch!