programmierung - 19.11.2004 - 19.12.2004

Brian Mastenbrook: Old News

Interessante Info am Rande: der Xerox Lisp Emulator - ein von Xerox entwickelter Emulator für ihre Interlisp-Maschinen - ist als Bestandteil der Grammars Writer Workbench enthalten. Ich habe noch einen Diskettensatz Medley Lisp zu Hause rum liegen - und zwei Xerox Lisp Maschinen in der Ecke stehen. Schicke Geräte mit einem netten grafischen System. Ok, weit von der Leistungsfähigkeit einer Symbolics entfernt, aber da es meine ersten Lispmaschinen waren mag ich sie trotzdem irgendwie

Mit dabei bei den Files von Xerox sind die Emulatoren für DOS, Linux, SunOS und Solaris. Ich hätte also eine Chance vielleicht meine alten Medley Sysouts mit Linux zum Laufen zu kriegen.

Irgendwo da drin steckt auch das Medley Common Lisp - also nicht nur das Interlisp-D, welches ja doch ein bischen archaisch ist im Vergleich zu moderneren Lisps (da es z.B. nur dynamischen Scope hat). Ich müsste allerdings erstmal wieder meine alten Interlisp-D Kenntnisse rauskramen um rauszukriegen wie ich nochmal einen Common Lisp Listener auf der Kiste öffne, wenn er nicht im Rootmenü steckt ...

Bei Planet Lisp fand ich den den Originalartikel.

ReportLab - PyRXP - Sehr schneller validierender XML Parser für Python - baut auf RXP auf

GNU Development Tools for the Renesas H8/300[HS] Series - Dokumentation wie man einen Cross-Compiler für den RCX aufbaut

Lego-Mindstorms Simulator - Simulation von LeJOS programmierten RCXen in Java

Noch ein Update: wie man rcxcomm auch mit OS X 10.2 zum Laufen kriegt

Das Problem mit dem rcxcomm-Zeug unter 10.2 liegt daran, das die Header aus dem JNI unter 10.2 mit falschen Links hinterlegt sind und deshalb nicht funktionieren. Zur Reparatur muss man einfach im lejos_2 1 0/rcxcomm/src/Makefile die Zeile wo der CCOPT definiert wird ergänzen:

 CCOPT = -g -O ${JNILIB_TYPE} -framework IOKit -framework CoreFoundation -I/System/Library/Frameworks/JavaVM.framework/Headers -I/System/Library/Frameworks/JavaVM.framework/Versions/1.3.1/Headers

Der hintere Teil ist der neue - ich habe einfach den richtigen Include-Pfad mit eingetragen und schon findet er das jni.h auch. Und kann kompilieren. Ich habe allerdings noch nicht ausprobiert ob das ganze dann auch funktioniert.

The leJOS Tutorial

Wer sich mal angucken will was mit dem LeJOS alles machbar ist, kann sich das in diesem Tutorial zeigen lassen. Da die Dokumentation des LeJOS selber sich nur auf die API beschränkt ist das Tutorial um so wichtiger. Denn auch die beim LeJOS mitgelieferten Demorobots sind reichlich karg ...

Hier gibts den Originalartikel.

XS: Lisp on Lego MindStorms

Cool - ein komplettes Lisp das direkt auf dem RCX läuft. Ideal für die Weihnachtszeit

Leider keine OS X Version, sondern nur was für Windows oder Linux - und letzteres nur für den seriellen Tower. Mal gucken ob ich da was für OS X mit dem USB Tower hinbekomme. Ausserdem bin ich noch auf TinySOAR gestolpert, eine komplette AI Agent Runtime für den Mindstorms RCX Baustein. Auch sehr interessant - und durch die Einbettung in TCL hoffentlich auch in OS X lauffähig.Und ebenfalls für mich neu die Java VM für den RCX: LeJOS. Ich mag zwar kein Java, aber interessant ist das allemal für den RCX.Und der Oldy-but-Goldy: LegOS, das komplette in C geschriebene Betriebssystem für den RCX. Allerdings bedingt durch seine recht heftige Toolchain die benötigt wird (ein kompletter GCC, konfiguriert als Cross-Compiler) etwas haariger zu installieren. Ausserdem heisst es jetzt BrickOS und ist übrigens auch unter dem Lisp als Runtime drunter. Hier gibts den Originalartikel.

GadflyB5: SQL Relational Database in Python - 100% pure Python SQL Datenbank

Barebones pure-Python PostgreSQL client - PostgreSQL Client in reinem Python - kein C Compiler benötigt, daher sehr portabel, aber auch feature-ärmer

REgurgitate - Beispiel wie man Python Code tokenisiert und wieder zusammenbaut

StupidSheet - Noch ein Beispiel für tokenize - ein kleines pure-Python Spreadsheet

gb - CIA

Faszinierendes Projekt, das CIA Open Source Notification System. Man hängt ein kleines Script in sein CVS rein und schon wird fleissig jeder Commit protokolliert, gespeichert, verteilt. Es gibt RSS Feeds für jede ansicht und entgegen vielen anderen Projekten die irgendwelche grossen Mengen an Daten aggregieren ist der Laden auch noch rattenschnell. Der Titel verlinkt übrigens auf meinen Benutzer und zeigt auf meine drei dort überwachten Projekte. Wer also neugierig ist, was ich gerade kaputt mache, kann sich da ja den passenden RSS Feed bestellen

Hier gibts den Originalartikel.

Languages for the Java VM

Wen interessiert was es so alles an Programmiersprachen auf der JVM gibt - ja, es gibt weitaus mehr als nur Java. Und viele davon sind wesentlich interessanter als Java. Und viele integrieren sehr gut mit Java Libraries. Jedenfalls hat Robert Tolksdorf hier eine solche Liste angefangen aufzubauen. Keine Ahnung ob sie vollständig ist, aber mir reicht die Auswahl ...

(wobei ich natürlich voreingenommen bin und sowieso nur entweder einen Lisp-Dialekt oder Jython nehmen würde )

Hier gibts den Originalartikel.

PyX - Python graphics package - 2D und 3D Grafiken präsentationstauglich in Python generieren

Bill Clementson: LispWorks 4.4 released

Schaut man sich an wie sich die - eigentlich ursprünglich mal OS X fremde - LispWorks Implementation für OS X stark macht (auch die vorige lief schon sauber unter OS X, diese hat aber wieder mehr zugelegt), dann kann man gut erkennen wie der Distributor der ursprünglich und immer noch MacOS nativen MCL Implementation am Markt abkackt. Positiver kann man das eigentlich nicht benennen - MCL ist mitlerweile meiner Meinung nach als Debakel zu betrachten. Immerhin ist auf deren Webseiten die grösste Neuigkeit für 2004 aus dem Sommer - das sie die Mailingliste wieder am Laufen haben. Toll. MCL war mal der Stern am Lisp-Himmel. Bei Planet Lisp gibts den Originalartikel.

Durus - Kompakte Objektdatenbank für Python - schnell, aber für lese-lastige Systeme ausgelegt

Statement coverage for Python - Primitive Code-Coverage Analyse für Python

IPython - An enhanced Interactive Python

Ich hatte da schon mal eher was zu geschrieben, habe es aber jetzt erst mal wieder intensiver benutzt. Ich muss sagen, das ganze hat sich gewaltig entwickelt. Mit ein paar Einstellungen im System und im IPython benimmt sich das ganze System schon fast so komfortabel wie ein Lisp-System-Prompt.

Die Integration von Anzeigesystem (bei OS X empfiehlt sich das Setzen von LESS auf '-R', damit Farbinformationen ausgewertete werden) und Editor (da empfiehlt sich natürlich der Einsatz von VIM, aber es geht auch ganz gut mit dem bbedit Kommandozeilentool) kann man schon sehr schön mit der Python Shell arbeiten. Zum Einen muss man nicht ständig raus um sich Files mal fix anzugucken oder ein File zu ändern und zum Anderen kriegt man wirklich brauchbare Informationen bei Exceptions (da hilft die automatische Aktivierung des Debuggers).

Auch das automatische deep-reloading - also das neu Laden eines geänderten Moduls mit Umschiessen der enthaltenen Referenzen - hilft ungemein, da man so endlich die Files direkt editieren und sofort testen kann, ohne jedesmal aus dem Python raus zu müssen. Bestehende Referenzen auf Objekte aus Klassen die in dem geänderten File liegen müssen natürlich auch weiterhin neu aufgebaut werden, da sie ja noch die alte Klasse referenzieren.

Alles in allem: sehr empfehlenswert.

Hier gibts den Originalartikel.

Logix Home

Ein sehr interessantes Projekt: auf der normalen Python Laufzeitumgebung aufbauend wird ein Sprache mit weitaus mehr Lisp-ähnlicher Struktur implementiert. Compiliert in den gleichen Bytecode wie Python. Kann mit Python vermengt werden und unterstützt auch IPython als Shell.

Mit Logix fällt zum Beispiel endlich die Schranke zwischen Statement und Expression: in Logix sind alles Expressions. Lambda-Ausdrücke die mehrere Befehle ausführen und bedingte Ausdrücke ohne Umwege über boolesche Ausdrücke werden möglich.

Auch gibt es Makros. Die Definition sieht etwas wild aus, aber es scheinen alle Mechanismen da zu sein wie sie auch in Common Lisp üblich sind. Also nicht nur syntaktischer Zucker, sondern richtige code-generierende Makros.

Im Moment natürlich alles noch Alpha, aber klingt schon sehr interessant. Ich werd das mal weiter beobachten, für mich könnte das durchaus interessant sein. Gerade weil ich es mit Python mischen kann.

Hier gibts den Originalartikel.

xmltramp: Make XML documents easily accessible. - kleine kompakte XML Parser und Generator Library für Python - schön integriert in die Syntax

RDFLib 2.0.4 Readme - Library zur Arbeit mit RDF in Python

Ein Lisp-Comic der Makros erklärt

Nette Sache - eine Erläuterung von Lisp-Makros für Anfänger. In Form eines Comics. Makros heissen - passend für das Thema - SPELs.

Hier gibts den Originalartikel.

Mal was entgegen dem XML-Hype

YAML ist eine sehr interessante und kompakte Markup-Sprache. Aber eine, die nicht auf XML oder SGML basiert, sondern im Prinzip sich stark an den alten RFC-Mail-Formaten orientiert. Das geniale daran: die Inhalte sind wesentlich leichter für Menschen zu lesen als die vielen Spitze-Klammer-Dialekte. Und für den Rechner ist das ganze auch noch recht einfach zu parsen - und mächtig ist das ganze auch noch in der Ausdrucksmöglichkeit. Wer dann Lust verspürt mal mit Python YAML-Files zu verarbeiten, mit Syck gibt es eine extrem schnelle Library die auch ein Interface für Python bietet.Im Active Storage Framework for Python benutze ich YAML für den Backup und Restore von Datenbanken und als natives Datenformat. Importieren von YAML-Daten in die Datenbank ist damit sehr einfach - und da YAML hierarchische Daten sind und das Active Storage Framework for Python eine hierarchische Datenbank, passt das alles ganz wunderbar beieinander. Und man muss keine Angst haben sich an den ganzen spitzen Klammern zu verletzen

Hier gibts den Originalartikel.

Sprachunabhängige Typen für YAML - Typ-Tags für YAML-Quellen

ASPN : Python Cookbook : Spreadsheet - ein paar ideen für kontrolliertes eval in Python

Living Code

Ein Weblog von jemandem der in Python, PyGame und PyObjc unter OS X (mit Renessaince als GUI System) programmiert. Mit kompletten Beispielapplikationen zum Download. Wer sich mit sowas mal näher beschäftigen will findet da vielleicht die eine oder andere Info.

Hier gibts den Originalartikel.

Renaissance - GNUStep GUI Beschreibungssprache und Bibliothek auch für OS X Cocoa

Pyco - Tiny Python Distributions - kleine Windows-EXEs aus Python Tools bauen.

Lasso - Souk - Python Modul zur Integration des Liberty Alliance Single Signon Protokolls.

Module Pycaml

Interesantes Projekt: jemand hat eine Reimplementation des Python/C APIs für OCaml (natürlich den Native-Code-Compiler, nicht den Bytecode-Interpreter) geschrieben. Damit kann man jetzt folgende Sachen machen:

  • Python-Erweiterungsbibliotheken in OCaml schreiben
  • Python-C-Erweiterungsbibliotheken in OCaml benutzen
  • Python-Module in OCaml benutzen (ganz allgemein den Python-Interpreter in OCaml benutzen)
  • den Python-Toplevel für OCaml benutzen

Klingt alles sehr spannend und könnte für einige Sachen sehr interessant sein - OCaml produziert sehr schnellen Code und kann sich in dem Bereich locker mit C messen. Gerade um den Teil des Codes der in Python zu langsam ist zu realisieren ist OCaml natürlich wegen seiner wesentlich besseren Typsicherheit wesentlich interessanter als C.

Hier gibts den Originalartikel.

Python 2.4

Nu isses raus.

Hier gibts den Originalartikel.

Python Paketindex: pyDB2 0.996a - DB/2 API für Python - das brauche ich bei der Arbeit

Fangs: The Firefox Screen Reader Emulator Extension - Standards-schmandards

Ein Screen-Reader-Emulator für den Firefox. Damit man mal gucken kann, wie die eigenen Seiten in einem Screenreader rüberkommen würden.

Hier gibts den Originalartikel.

tsearch-v2-intro - Einführung in tsearch2 - eine Volltextindextechnik für PostgreSQL

Tsearch2 - full text extension for PostgreSQL - weitere Dokumentationen zu tsearch2

Noch son Projekt in Python

Wer sich den Toolserver genauer angeguckt hat, der hat vielleicht schon vermutet das ich da irgendwie sicherlich noch mehr mit machen will. Ein zweites Projekt das ich vor einigen Tagen angefangen habe wird dem gleichen Ziel dienen. Active Storage Framework for Python ist ein Python Framework um Daten in Datenbanken zu stopfen. Allerdings nicht eine der üblichen Objekt-Relations-Verbinder, sondern eine eigene Datenbankstruktur die einfach nur unten drunter eine SQL-Datenbank als Datenspeicher missbraucht - ich wollte nicht alles neu erfinden.Die Ideen des Active Storage Framework for Python stammen von Userland Frontier und Mumps ab - also ein hierarchischer Namensraum bei dem automatisch alle Elemente persistent sind und bei dem viele Objekttypen als Tabellen (ähnlich wie in Frontier) abgebildet werden. Das ganze benutzt so ziemlich jedes Introspection-Feature von Python das ich kenne. Ok, es gibt einige Programme von mir die noch fiesere Methoden anwenden, aber für die jeweiligen Hacks dort schäme ich mich manchmal - das was ich hier gemacht habe ist da schon deutlich ordentlicher. Hauptsächlich getattr und Friends. Die allerdings bis zum Exzess. Als Start für das Active Storage Framework for Python bietet sich die README an. Wer es ausprobieren will: PostgreSQL und psycopg müssen installiert sein. Ansonsten braucht man noch eine Datenbank und dann kanns schon losgehen. Das Datenbankscheme legt Active Storage Framework for Python automatisch an. Das ganze ist derzeit noch nur im CVS verfügbar, da ich im Moment - ist ja noch 0.1.0 - wild dran rumschraube. Interfaces und Datenstrukturen können sich also noch gewaltig ändern.

Hier gibts den Originalartikel.

Toolserver Framework for Python - Folien

Wer sich für das Projekt Toolserver Framework for Python interessiert - einen in Python geschriebenen Server der die Erstellung von Webservices einfach und komfortabel macht - kann sich ja mal die Präsentation angucken die ich letztens vor Kollegen darüber gehalten habe. Für den Ablauf der Präsentation braucht man einen einigermaßen aktuellen Browser der Javascript und CSS beherrscht und aktiviert hat. Ja, auch das Werkzeug des Teufels funktioniert damit .

Wem die Folien ohne mein Gesabbel zu nichtssagend sind kann einfach in der Präsentation im Browser drucken. Dann wird ein anderes CSS-Stylesheet gezogen und im Ausdruck sind ergänzende Erläuterungen enthalten. Im Prinzip das was ich erzählt habe. Das verwendete Präsentationssystem ist überhaupt ganz witzig - es handelt sich um S5 von Eric Meyer. Praktisch um mal schnell Präsentationen mit Ergänzungen zusammenzudengeln und ins Web zu stellen. Und vi ist mir immer noch lieber als PowerPoint Hier gibts den Originalartikel.

SimpleTAL - standalone TAL und METAL Implementation

Digital Lumber, Inc. - Ein kompletter Nameserver in Python

Patents Should Meet BASIC Tests of Reason

Autsch. Ein paar Mitarbeiter des Microsoft Visual Basic Teams haben scheinbar ein Patent auf den IsNot Operator - ja, sowas ähnliches wie ein ungleich, nur bezogen auf Objektreferenzen statt Werte - beantragt. Was für eine Moppelkotze. Und frecherweise behaupten die auch noch in ihrem Antrag das Borland Delphi ein Basic-Abkömmling wäre - dabei ignorierend, das Delphi Pascal ist, was ja nun doch eine ziemlich andere Historie hat ...

Das ganze hat was von einem Witz, ist aber leider wohl wahr.

Hier gibts den Originalartikel.

pyeBay - Verwenden Sie die eBay-API von Python - Python-API für eBay

Python IAQ: Infrequently Answered Questions - Teilweise witzige, teilweise ernste Antworten auf nicht ganz so offensichtliche Fragen zu Python

Slate Language Website

Interessanter ist dann schon eher Slate. Zum Einen ist die Implementation frei verfügbar zum Rumspielen, zum Anderen ist die Sprache wenigstens mit einem Konzept auf die Welt gekommen - Smalltalk mit Multimethod-Dispatch ala CLOS und prototyp-basiertem Objektsystem ala Self. Alles aber in klassischer Smalltalk-Syntax. Das ist wenigstens mal eine Vision - machen wir das was Common Lisp schon lange kann mal in Smalltalk.

Wobei ich mich dann aber trotzdem frage, warum nimmt man nicht einfach Common Lisp, bei dem man dann eben nur das prototyp-basierte Objektsystem als Paket dazu bauen muss, aber Makros, Multimethod Dispatch und andere Späße sind schon längst fertig? Programmiersprachendesigner sind Masochisten

Hier gibts den Originalartikel.

The Curl Project

Und weil wir gerade dabei sind auf blöde Programmiersprachen zu prügeln: das MIT war auch nicht wirklich besser. Die haben die runden Klammern gegen geschweifte ausgetauscht. Toll. Viel besser als spitze Klammern ist das auch nicht, und die kommerzielle Ausbeutung dieser grandiosen Idee hat dann auch gleich eine Firma übernommen.

Da es sich um das MIT handelt, ist man aber natürlich gleich zwei Schritte weiter gegangen und will das im Prinzip als ein neues Markup-System verstehen. Also sozusagen als Alternative zu HTML.

Und weil man nur als richtig Verrückter beim MIT Aufsehen erregen kann, ist das ganze dann im Endergebnis nicht nur ein objektorientiertes Scheme, bei dem man die runden Klammern durch geschweifte Klammern ersetzt hat - nein, man hat noch ein Box-Modell von TeX fürs Layouten mit reingeworfen.

Hurrah. Das brauchten wir. Not.

Hier gibts den Originalartikel.

Water -- Waterlanguage.org

Mal wieder eine Programmiersprache wie sie keiner wirklich braucht. Im Prinzip steckt dahinter ein Lisp, bei dem statt mit S-Exprs (diese wilden Klammerausdrücke die Lisper so lieben und alle anderen so hassen) mit XML Syntax gearbeitet wird. Spitze Klammern statt runder - was für eine gewaltige Verbesserung.

Und zu allem Überfluss ist es auch noch ein proprietäres Projekt. Und in Java geschrieben. Herrjeh muss Java krank sein, wenn man sich so kranke Lösungen einfallen lässt

Das gleiche lässt sich mit diversen freien Lisp-Projekten besser und eleganter hinkriegen - und man kann auch noch gleich bei den runden Klammern bleiben

Hier gibts den Originalartikel.

Welcome to read4me project page - RSS Reader in Python mit Bayesian Filter

wxPython and wxGlade Tutorial - Tutorial zu wxPython und wxGlade

2Entwine | FotoBuzz Viewlet - Javascript+Flash zur Präsentation von Bildern mit In-Bild-Kommentierung

ONLamp.com: Introducing Slony - Slony ist eine asynchrone Replikationslösung für PostgreSQL

What's New in Python 2.4

Wer wissen will was mit Python 2.4 alles kommt, Andrew Kuchling hat wie üblich eine gute Übersicht produziert. Ein paar Sachen sind wirklich interessant - vor allem die Generator-Ausdrücke finde ich nett. Aber ich bin ja auch alter Lisper.

Schön ist auch der Decimal-Datentyp - wird in der Firma einige Probleme deutlich eleganter lösen als sie heute angegangen werden. Und höhere Performance ist sicherlich auch gut.

Hier gibts den Originalartikel.