Loading...

DIE WURZELN VON LISP

Original

Mai 2001

(Ich habe diesen Artikel geschrieben, um mir selbst zu helfen, genau zu verstehen, was McCarthy entdeckt hat. Man muss dieses Wissen nicht haben, um in Lisp zu programmieren, aber es sollte hilfreich sein für jeden, der das Wesen von Lisp verstehen möchte – sowohl im Sinne seiner Ursprünge als auch seines semantischen Kerns. Die Tatsache, dass es einen solchen Kern gibt, ist eines der Unterscheidungsmerkmale von Lisp und der Grund, warum Lisp im Gegensatz zu anderen Sprachen Dialekte hat.)

Im Jahr 1960 veröffentlichte John McCarthy ein bemerkenswertes Papier, in dem er für das Programmieren etwas tat, das dem ähnelt, was Euklid für die Geometrie tat. Er zeigte, wie man mit einer Handvoll einfacher Operatoren und einer Notation für Funktionen eine ganze Programmiersprache aufbauen kann. Er nannte diese Sprache Lisp, für "List Processing", weil eine seiner Schlüsselideen war, eine einfache Datenstruktur namens Liste sowohl für Code als auch für Daten zu verwenden.

Es ist wichtig zu verstehen, was McCarthy entdeckt hat, nicht nur als Meilenstein in der Geschichte der Computer, sondern auch als Modell dafür, was Programmierung in unserer eigenen Zeit zu werden tendiert. Es scheint mir, dass es bisher zwei wirklich klare, konsistente Modelle der Programmierung gegeben hat: das C-Modell und das Lisp-Modell. Diese beiden scheinen Punkte hohen Grundes zu sein, mit sumpfigen Niederungen zwischen ihnen. Als Computer leistungsfähiger wurden, haben sich die neuen Sprachen, die entwickelt wurden, stetig in Richtung des Lisp-Modells bewegt. Ein beliebtes Rezept für neue Programmiersprachen in den letzten 20 Jahren war es, das C-Modell des Rechnens zu nehmen und es stückweise mit Teilen des Lisp-Modells zu erweitern, wie zur Laufzeit Typisierung und Garbage Collection.

In diesem Artikel werde ich versuchen, in den einfachsten möglichen Begriffen zu erklären, was McCarthy entdeckt hat. Es geht nicht nur darum, über ein interessantes theoretisches Ergebnis zu lernen, das jemand vor vierzig Jahren herausgefunden hat, sondern auch darum, zu zeigen, wohin sich die Sprachen entwickeln. Das Ungewöhnliche an Lisp – tatsächlich die definierende Eigenschaft von Lisp – ist, dass es in sich selbst geschrieben werden kann. Um zu verstehen, was McCarthy damit meinte, werden wir seine Schritte nachverfolgen, wobei seine mathematische Notation in ausführbaren Common Lisp-Code übersetzt wird.