Meine Mitarbeit am Projekt Maxima

Maxima

maxima
Maxima in einem Terminalfenster
Seit Juli 2008 arbeite ich an dem Projekt Maxima als Entwickler unter dem Benutzernamen Crategus mit. Kennengelernt habe ich Maxima etwa Mitte 2007. Zu dieser Zeit war der Versionsstand von Maxima noch 5.12. Ich war auf der Suche nach einem Open-Source Computeralgebrasystem. Unter den verschiedenen Systemen, die ich fand, hatte mich Maxima am meisten überzeugt.

Maxima ist ein Computer Algebra System, das in Lisp programmiert ist. Maxima basiert auf Macsyma, das am MIT (Massachusetts Institute of Technology) in den Jahren 1968 bis 1982 als Teil des Projektes MAC entwickelt wurde. Das Department of Energy (DOE) erhielt im Jahr 1982 den Quellcode vom MIT; diese Version ist als DOE Macsyma bekannt. Professor William F. Schelter von der University of Texas hat von 1982 bis zu seinem Tod im Jahr 2001 eine Kopie von DOE Macsyma gepflegt. Im Jahr 1998 erhielt Schelter vom Department of Energy die Erlaubnis, den Quellcode von DOE Macsyma unter der GNU Public Lizenz zu veröffentlichen. Im Jahr 2000 initiierte Schelter das Maxima Projekt bei SourceForge, um DOE Macsyma, heute Maxima genannt, weiter zu entwickeln.

Ich hatte mich zuvor kaum mit Computeralgebrasystemen beschäftigt und konnte nur auf einige Erfahrungen mit Mathematica zurückgreifen, die ich Mitte der 90er Jahre machte. Eigentlich wollte ich Maxima lediglich für Aufgaben der theoretischen Physik anwenden. Dabei bemerkte ich die Grenzen von Maxima, die mich irritierten, da ich davon ausging, dass mit einem Computeralgebrasystem mehr möglich sein sollte.

Etwa ein Jahr lang beschäftigte ich mich dann mit der Implementation von Maxima und lernte die Algorithmen kennen, die notwendig sind, um ein umfangreiches und leistungsfähiges Computeralgebrasystem zu programmieren. Dabei entstanden auch viele Ideen wie Maxima weiterentwickelt werden könnte.

Seit 2008 habe ich viele dieser Ideen umgesetzt und in Maxima eingebracht. Eine Übersicht über wesentliche Entwicklungen ab 2008 finden Sie auf der Seite Maxima.

Lisp

Lisp Funktion für die Addition von zwei Maxima Zahlen
Die Programmiersprache Lisp habe ich bei der Beschäftigung mit Maxima kennengelernt. Ich hatte bereits Erfahrungen in den verschiedensten Programmiersprachen wie Fortran, Pascal, C, C++. In diesen Sprachen habe ich auch größere Projekte im Zusammenhang mit physikalischen Aufgabenstellungen während des Studiums und meiner Promotion programmiert.

Ich war zunächst überrascht, das sich mir die Programmiersprache Lisp, aufbauend auf meinen bisherigen Programmiererfahrungen, nicht erschließen wollte. Ich hatte dann das Glück, auf die sehr gute Einführung Common Lisp: A Gentle Introduction to Symbolic Computation" von David S. Touretzky zu stoßen. Dieses Buch ist ein Kurs für Anfänger, die das Programmieren erst lernen wollen. Das Buch zeigte mir, dass man zunächst vieles was man aus anderen Programmiersprachen kennt, abwerfen sollte, um einen Zugang zu den besonderen Konzepten von Lisp zu finden.

Mit Lisp habe ich das Programmieren neu entdeckt. Lisp hat die Konzepte und Techniken, die ich bisher in anderen Programmiersprachen vermisste. Es ist faszinierend wie elegant und einfach die Weiterentwicklung einer Software wie Maxima möglich ist, die mehr als eine 40jährige Geschichte hat und aus etwa 530.000 Zeilen Lisp Code besteht.

Meine Entdeckung der Möglichkeiten von Lisp ist noch nicht abgeschlossen. Das Buch On Lisp von Paul Graham ist eine ausgezeichnete Weiterführung, um anspruchsvolle Möglichkeiten und Techniken von Lisp kennenzulernen. Eine vollständige Lisp Dokumentation findet man z. B. hier Common Lisp HyperSpec.