programmierung - 12.2.2007 - 23.4.2007

TextMate: Power Editing for the Mac - könnte ganz interessant sein, ein Buch über TextMate.

Freie Smalltalk Bücher - als PDFs

UseTheSource / Veröffentlichte Code-Snippets - soziale Quelle-Snippet-Seite.

Vista Smalltalk Wiki - hatte ich zwar schon mal, aber es gibt einen Grund für die Wiederholung: hab erst heute bemerkt, das Vista Smalltalk ein Smalltalk nicht nur in Flash (ActionScript) ist, sondern das es einen eigenen Lisp-Layer enthält, auf dem es aufbaut. Also ein Smalltalk in Lisp in ActionScript ...

Erlang Cookbook - noch ne Cookbook-Site für Erlang. Nett für erste Eindrücke der Sprache.

Kamelia - interessantes Konzept: Komponentenprogrammierung in Python. Komponenten werden über threads parallel betrieben und kommunizieren über ein einfaches Pipe-Interface. Ähnlich der Unix Shell, nur für Highl-Level Objekte und innerhalb einer Programmiersprache.

PragDave: Adding Concurrency to Our Erlang Program - zweite Runde. Wieder nicht wirklich praktischer Code - die Anwendung kann den Amazon Webservice überladen und den eigenen Key blockieren - aber nett als Demo, wie man einen sequentiellen Code in einen parallelen überführen kann. Wobei der Hinweis auf pmap als Alternative nicht ganz unwichtig ist ...

QuickCheck: An Automatic Testing Tool for Haskell - interessanter Ansatz für automatisches Testen. Die Eigenschaften von Funktionen werden direkt im Code abgelegt und der Test testet nicht einfach vordefinierte Testfälle, sondern durchläuft die Eigenschaftsdefinitionen mit zufällig generierten Werten.

(The Scheme Way): Erlang or Gambit-C/Termite? A practitioner's perspective - Erlang gewinnt den Vergleich. Einige gute Punkte - speziell die Infrastruktur von Erlang ist einfach besser und ausgereifter.

Wings3D - ist in Erlang geschrieben. Hier der Beleg als Link auf das Source-Repository. War mir vorher nicht bekannt - ein 3D Modeller, geschrieben in einer funktionalen Sprache.

CouchDb Project Website - hmm. hatte ich noch nicht. Replizierende, dokumentenorientierte Datenbank. REST API.

PragDave: A First Erlang Program - Amazon Webservices mit Erlang ansprechen. Basis-Tutorial, erwartet nix komplexes.

Doug's AppleScripts for iTunes - haufenweise Script rund um iTunes

Metalua - eine Erweiterung für Makros ala Common Lisp in Lua. Lua wird immer interessanter.

Write Your Own Automator Actions - wie der Name schon sagt: wie man selber Automator Actions schreibt.

5 Question Interview with Twitter Developer Alex Payne - interessante Kommentare zu Ruby on Rails unter Hochdampf. Twitter hatte massive Performanceprobleme und Alex gibt hier Einblicke in die durch Rails verursachten Probleme.

MogileFS - Anwendungsebene verteiltes Dateisystem.

RabbitMQ - Open Source Enterprise Messaging - klingt sehr interessant und der Message-Server ist in Erlang geschrieben.

IMified - Developer Community - API zur Erstellung eigener IMified Services.

BKNR - und sowas wie Lisp on Rails. Wobei das dann eher einem ICE mit doppeltem Triebwagen und extra Trasse gleichkommt.

CLiki : CommonLispPrevalence - interne Objekte durch parallel geschriebene Transaktionslogs absichern gegen Systembeendigungen. Im Prinzip das, was Smalltalk schon von Hause aus macht mit dem Changelog und dem Image.

HUNCHENTOOT - Der Common Lisp Webserver, der früher TBNL hieß - seltsamer Name, interessantes Paket.

Lispbox - mitlerweile sieht das richtig schick aus, fertige Pakete mit integriertem Lisp und Emacs zum Loslegen mit dem Buch. Da ich mir endlich das Buch (Practical Common Lisp) bestellt hab, werd ich mir das ganze wohl mal genauer angucken.

PLEAC - Programming Language Examples Alike Cookbook - die Probleme aus dem Perl Cookbook in einer Reihe anderer Sprachen. Nicht alle sind wirklich vollständig, aber das ganze ist offen und kann erweitert werden.

The Elephant Persistent Object Metaprotocol and Database - für Common Lisp. Ja, ich hab mal wieder Klammersucht. Sorry.

Locomotive - netter Weg Ruby on Rails auf dem Mac zu betreiben. GUI mit integriertem Ruby, getrennt vom System, so daß man in den Versionen unabhängig ist und mehrere parallel betreiben kann.

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.

Vista Smalltalk - eigentlich ein auf Windows Vista zielendes Smalltalk, jedenfalls nach der Doku. Nur ist es mit Flash lauffähig - und damit im Safar Browser oder mit auch mit der Apollo Runtime auf anderen Systemen. Und das Smalltalk ist nichtmal so übel - und enthält auch noch ein kleines Lisp. Witzige Sache.

DjangoKit - klasse Idee. Im Prinzip Apollo mit Python - Django-Anwendungen können einfach in echte OSX-Anwendungen gewandelt werden. Könnte durchaus interessant werden.

Open Croquet SDK 1.0 - nicht mehr Beta, sondern Release jetzt. Es bleibt spannend.

appscript - Python als Alternative zu AppleScript (hatte ich den nicht schon mal?)

Comprehensive Erlang Archive Network - geniale Methode um Erlang zu installieren - ein selbstextrahierendes shell archiv für verschiedenste Plattformen und eine gute Paketbibliothek um zusätzliche Pakete schnell zu installieren. Gut zum Ausprobieren.

google-code-prettify - Google Code - nettes Schnipsel vov JavaScript, mit dem code/pre Blöcke syntax-highlighted werden können.

LambdaVM - Der Haskell zu Java Übersetzer

Lift Web Framework - für Scala. Angelehnt an Ideen von Seaside, Rails, Django und Erlyweb. Klingt zumindestens gut.

The Scala Programming Language - klingt interessant. Nicht das es noch eine weitere Programmiersprache unbedingt braucht, aber diese hat einige interessante Ansätze und die wirklich glatte Integration in Java und .NET Welten hat einen echten Vorteil: die verfügbarkeit von vielen Bibliotheken. Ob allerdings der funktionale Charakter von Scala noch überlebt wenn man ihn mit diversen Java-Klassen verbindet?

HyperLook (aka HyperNeWS (aka GoodNeWS)) - wow. den kannte ich noch nicht. HyperCard in und mit PostScript - auf SUN OpenWindows mit NeWS. Faszinierende Sache - schade, das der ganze Kram irgendwann verschwunden ist.

[sugar] Ideas for Sugar development environment from HyperLookSimCity - noch mehr über HyperLook.

SQLite Introduction - nur gelinkt, weil ich es möglicherweise für ein Banalprojekt brauch (PHP5 und SQLite - ihgitt, muss mir danach die Tastatur reinigen).

Python, Django and DB2: we need your input! - klingt als ob es bald ein DBAPI2 modul für Python und DB/2 direkt von der Quelle geben wird.

LSL Module For BBEdit/TextWrangler - die besten Editoren der Welt für Linden Scripting Language (in SecondLife) benutzen.

Programming Erlang - klingt gut, und bisher waren die Bücher aus der Pragmatic Bookshelf Reihe ganz brauchbar. Könnte mal wieder eines sein, das man sich antun will.

Shill (LSL syntax files) - diverse Editoren für LSL benutzen. Irgendwas wird wohl für jeden dabei sein.

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.

soaplib - ab und an gibts doch mal was neues. Neben dem doch recht langsam daherdümpelnden SOAPpy und den meiner Meinung nach etwas overengeneered ZSI, gibts jetzt mit soaplib noch eine weitere Python-Bibliothek für SOAP Webservices. Mal angucken.

boto - eine Library zum Zugriff auf Amazon Webservices. Unterstützt werden S3, SQS und EC2 - genau das, was ich brauche. Dokumentation sieht auch ganz brauchbar aus.

Jython 2.2 Beta - endlich mal wieder was neues von Jython, der Python-Implementation für die Java VM. Immer noch Python 2.2 Syntax Stand, aber immerhin ein neuer Release. Allerdings liest sich die Roadmap etwas krass, wenn da von der Code-Qualität gesprochen wird ...