Jürgen Böhms Heimatseiten - Lisp
Lisp -
Geschichte
ProLisp
Lispm-FPGA
CommonLisp -
Code Samples
Common Lisp -
Systeme

Lisp - was ist das ?

Um es ein wenig überspitzt zu sagen: LISP gehört zu den "ältesten Programmiersprachen der Menschheitsgeschichte", zusammen mit FORTRAN, ALGOL und dem von Zuse erdachten, aber zu seiner Zeit nie implementierten "Plankalkül".

Links zur Lisp-Geschichte

Homepage von John McCarthy

Nicht nur seine sämtlichen Veröffentlichungen sondern auch einige sehr lesenswerte Überlegungen zum Thema "On the sustainability of human progress" finden sich auf den Web-Seiten des Lisp-Erfinders.

Ein Buch von historischem Wert ist heute das

  • McCarthy et.al., Lisp 1.5 Programmer's Manual, The M.I.T. Press

Homepage von Herbert Stoyan
Links zur Lisp-Geschichte von Herbert Stoyan

Herbert Stoyan ist einer der massgeblichen internationalen Spezialisten für LISP und seine Geschichte. Ursprünglich in der DDR tätig und dort mit der Entwicklung von LISP-Systemen für die ESER (Einheitliches System elektronischer Rechentechnik) Anlagen beschäftigt, wechselte er später in die BRD und hat derzeit eine Professur an der Uni Erlangen inne.

Das Buch

  • Herbert Stoyan, LISP-Anwendungsgebiete, Grundbegriffe, Geschichte, Akademie-Verlag, Berlin

ist ein spannend geschriebenes, in seinem Umfang wohl einzigartiges Werk zur Geschichte von Lisp mit einer umfassenden Bibliographie, die man auch in elektronischer Form auf seinen Webseiten finden kann.

Lisp-Machine Museum
LispM
History of the Lisp-Machine
Symbolics

Eine Lisp-Machine ist ein Computer, der Lisp-Programme direkt in seiner Hardware ausführen konnte. Die Idee zur Lisp-Maschine entstand am MIT in den 70er Jahren des letzten Jahrhunderts, und wurde anfangs von Forschern am AI Laboratorium des MIT realisiert, zu denen damals auch der durch seine FSF und das GNU-Projekt bekannte Richard Stallman zählte.

Bald darauf entstanden die Spin-off Unternehmen LMI und Symbolics deren Geschäftsziel die Weiterentwicklung und Vermarktung von Lisp-Maschinen und deren Systemsoftware war. Im Dreieck MIT, LMI und Symbolics entspann sich ein heftiger Konkurrenzkampf, in dem schliesslich Symbolics die Führung übernahm.

Der Erfolg währte jedoch nur für eine kurze Zeit in den 80er Jahren, als grosszügige DARPA Unterstützung den Ankauf der enorm teuren Lisp-Maschinen für KI-Softwareentwicklung im Rahmen der Star-Wars Projekte ermöglichte. In dieser Zeit schalteten sich auch TI und Xerox mit eigenen Modellen in den Markt ein.

Mit dem Aufkommen der viel billigeren Unix basierten Sun Workstations und vergleichbarer Modelle von anderen Firmen endete dann die Zeit der Lisp-Maschinen. Mit ihr ging eine Ära der Computerentwicklung zuende, die diejenigen, die an ihr teilgenommen haben, heute als ein goldenes Zeitalter wohldurchdachter und stimmig konzipierter Hardware und Softwarearchitektur beschreiben.

Dass dies nicht nur nostalgische Träumereien von Spezialisten sind, deren hochfliegende Visionen in einem toten Nebenarm der Entwicklung der Computertechnik ihr Ende fanden, davon kann sich jeder selbst überzeugen, der von den obigen Links ausgehend erforscht, was das Web von diesen Ideen bewahrt hat.

Auch wenn die DOS- und Windows-Geschädigten, die schliesslich in Linux ihr Heil gefunden hatten (zu denen ich mich auch rechnen kann) es wohl mit Überraschung hören: Viele Mitglieder dieser "älteren" Hackergeneration wurden mit dem Siegeszug der Unix-Workstation zu überzeugten Unix-Hassern.

Wer solche Darstellungen überzogen findet und eine in moderaterem Ton vorgetragene Kritik hören will, sollte unbedingt den einflussreichen Artikel "Worse is better" von P. Gabriel lesen.

Lisp - Dialekte und Standardisierung

Während der Weiterentwicklung von Lisp nach seiner ersten Implementierung als Lisp 1.5 auf einer IBM 7090 entstanden unzählige Abwandlungen, denen mit immer neuen Standardisierungsversuchen gegengesteuert wurde. Einige - heute historische - Wegmarken sind MACLISP und INTERLISP sowie das "Standard LISP" von A.C.Hearn. Interessanterweise sind zwei dieser Standards, MACLISP und Standard Lisp, mit zwei ebenso berühmten Anwendungsprogrammen verbunden, nämlich Macsyma vom MIT und Reduce von Hearn an der Universität Utah.

Die Geschichte ist aber auch über diese beiden Sprachstandards hinweggegangen, die noch das Schlusskapitel des oben erwähnten Buches von Stoyan bildeten. Der heutige Standard heisst Common Lisp und hat sich hauptsächlich unter dem Einfluss der Lisp-Maschinen und ihrer Sprachstandards herausgebildet. Er enthält übrigens auch Möglichkeiten zur objektorientierten Programmierung, die im CLOS und MOP verkörpert sind, und in vieler Weise die etwa in C++ gebotenen Möglichkeiten transzendieren ("Double Dispatch", "call-next-method" usw.)

Wer sich mit Common Lisp vertraut machen will, sollte unbedingt folgende Bücher lesen

  • Paul Graham, ANSI Common Lisp, Prentice Hall
  • Patrick Henry Winston, Berthold Klaus Paul Horn, Lisp, 3rd Edition, Addison-Wesley
  • Paul Graham, On Lisp, Prentice Hall
  • Peter Norvig, Paradigms of Artificial Intelligence Programming, Morgan Kaufmann

und die Seiten der Association of Lisp Users besuchen.

Das "russische Lisp"

Wer sich ein bisschen für die Geschichte der technischen Entwicklung in der UdSSR und später im Ostblock interessiert, wird feststellen, dass hier oft erstaunliche Originalität und Kreativität zu finden ist. Obwohl viele bedeutende Entwicklungen - Raketen, Nuklearwaffen, Transistoren, Computer - zuerst im Westen realisiert wurden, ist es der UdSSR stets gelungen diese Entwicklungen eigenständig nachzuvollziehen.

In der hierzulande dominierenden Meinung wird dies meist einer ausgeprägten Spionagetätigkeit zugeschrieben, doch wenn man sich mit den Details beschäftigt findet man oft genug, dass in Wirklichkeit eine echte Parallelentwicklung stattfand. So gelang etwa Sacharow die von Teller und Ulam unabhängige Neuentdeckung des im Westen so genannten "Teller-Ulam-Device", das den Zugang zu Thermonuklearwaffen nahezu unbegrenzter Stärke eröffnete.

Wer mit dieser Einstellung an die russische Technik herangeht, wird sich natürlich auch fragen, wie denn die Entwicklung des symbolischen Rechnens in der UdSSR verlaufen war. Im Buch von Stoyan findet man allerdings vorwiegend die Geschichte der LISP-Rezeption im Ostblock - und eine kurze Andeutung über ein System namens "REFAL".

Nachdem das Internet nun schon lange einen recht interessanten "russischen Zweig" hat, habe ich einfach mal nach "REFAL" gesucht, und in der Tat gefunden, was ich suchte:

www.refal.net

ist der Einstieg in den "REFAL-Kosmos". Dort finden sich neben Implementierungen von REFAL für heute gängige Computer und Betriebssysteme auch Verweise auf aktuelle Forschungen des Erfinders von REFAL, W.F. Turtschin.

Professor Turtschin beschäftigt sich heute mit der von ihm entwickelten Theorie der "Superkompilierung" die mittlerweile auch von westlichen Forschern studiert wird (siehe etwa diesen Übersichtsartikel) und die vielleicht in einigen Jahren, wenn die Hardwareleistung weiter zugenommen hat, einen ganz neuen Zugang zur Programmierung und vor allem zur Metaprogrammierung ermöglichen wird.

Meine Lisp-Geschichte

1980 - 1993

  Computeralgebra, LISP und künstliche Intelligenz interessierten mich schon zu meiner Gymnasialzeit, ich las damals fasziniert einige Fachartikel über REDUCE, MACSYMA und einige andere Computeralgebrasysteme. Ich träumte davon einen LISP Interpreter oder ein Computeralgebrasystem selbst zu schreiben, aber erst 1994 ergab sich durch Zufall ein Anlass für die Implementation eines LISP-Interpreters.

  In den 80er Jahren hätte eine solche Implementation für mich bedeutet, den Code in Assembler schreiben zu müssen, da ich zu dieser Zeit  niemals einen Computer mit mehr als 64K zur Verfügung hatte. Allerdings war ich kein versierter Assemblerprogrammierer, und überhaupt war mein Interesse in dieser Zeit hauptsächlich auf reine Mathematik gerichtet.

1993 - 1996

  Erst ab 1993, als ich einen 386er PC mit 8MB zur Verfügung hatte, begann ich mich wieder für Programmierung zu interessieren. Die Werkzeuge waren nun viel besser, es gab die IDEs und objektorientierte Sprachen kamen gerade in allgemeinen Gebrauch.

  Ich programmierte zunächst ein für meine damaligen Verhältnisse recht umfangreiches und fortschrittliches Projekt, nämlich ein Grafikprogramm zur Darstellung von 3D-Flächen unter Windows, das ich unter dem Namen Surf (von Surface) damals auch beim Sybex-Verlag veröffentlichen konnte.

  Aus einem Auftrag für ein Kalkulationsmodul in einem Börsenprogramm entsprang dann die Idee, dafür einen LISP-Interpreter zu implementieren. Ich hatte gerade C++ kennengelernt und war voller Begeisterung, so dass ich beschloss das ganze mit C++ und unter Verwendung der mit C++ möglichen objektorientierten Methoden zu verwirklichen.

  In der Tat lief dann alles wie von selbst, und in kurzer Zeit war ein kleines Lisp-System fertig, dem ich schliesslich den Namen ProLisp gab.

Ich hatte übrigens bis dahin noch nie ein LISP Programm geschrieben (von einigen Probierstücken zum Testen meines Interpreters abgesehen), empfand dies aber auch nicht als Mangel, denn ich war begeistert von den neuen Möglichkeiten in C++, und es war für mich tausendmal interessanter einen LISP-Interpreter zu schreiben, als selbst in LISP zu programmieren.

Der Grund dafür ist leicht zu erklären, wenn auch vielleicht nicht für jedermann leicht nachzuvollziehen: Jeder Interpreter ist im Grunde ein autonomer Rechenautomat, einen Interpreter zu bauen ist gewissermassen, wie einer Art lebendem Wesen zum Dasein zu verhelfen - man entwickelt ein besonderes, emotionales Verhältnis zu seinem Programm, das sich so bereitwillig mit Anweisungen füttern lässt, um sie dann getreulich im selbstgebauten Räderwerk abzuarbeiten.

1996 - 2000

Seit 1996 arbeitete ich dann an meiner Dissertation, in deren Verlauf auch ein grosses Maple-Programm entstand. Maple-Code sieht äusserlich nach PASCAL aus, ist aber im Kern funktional und listenorientiert - echt in LISP programmiert habe ich aber auch in dieser Zeit nicht.

Ab Dezember 2000 hatte ich mich dann wieder verstärkt mit C++ beschäftigt und bin in die ausufernde Literatur über "Effective C++", "Design Patterns", "C++ Idioms", "Generic Programming", "Generative Programming" eingetaucht. Ich programmierte zu dieser Zeit eine mittelgrosse Anwendung in C++, wobei ich mich teilweise freizügig dieser neuen Techniken bediente - insbesondere die STL empfand ich als grossen Durchbruch.

2001 -

Den Bogen zu LISP schlug ich dann mit der Idee zu einem "Personal Information Manager" der die Art, wie Personal-Computer bedient werden revolutionieren könnte. Ich gewann rasch den Eindruck, dass ich zur Umsetzung der angepeilten KI-Elemenente in dieser Anwendung auf LISP zurückgreifen musste. Also recherchierte ich im Internet nach "Lisp" und sehr bald dann nach "Lisp Machines", nach "Symbolics", nach "OpenGenera" usw. Kurzum - eine neue Welt hatte sich mir aufgetan, eine Welt aus deren Perspektive selbst das vorher von mir heiss geliebte Linux/Unix nur "power tools for power fools" zu bieten hatte.


Navbutton Zentrum Anfang Anfang Ende   mailto Webmaster     Zuletzt geändert - 15 07 2001
Impressum