Loading...

DIE WURZELN VON LISP

Original

May 2001

(Ich habe diesen Artikel geschrieben, um mir selbst zu helfen, genau zu verstehen, was McCarthy entdeckt hat. Sie müssen dieses Zeug nicht kennen, 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 hat, ist eines der Unterscheidungsmerkmale von Lisp, und der Grund, warum, anders als andere Sprachen, Lisp Dialekte hat.)

Im Jahr 1960 veröffentlichte John McCarthy einen bemerkenswerten Artikel, in dem er für die Programmierung etwas tat, das der Geometrie von Euklid ähnelt. 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 wichtigsten Ideen darin bestand, eine einfache Datenstruktur namens Liste sowohl für Code als auch für Daten zu verwenden.

Es lohnt sich 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 Zeit zu werden neigt. Es scheint mir, dass es bisher zwei wirklich saubere, konsistente Modelle der Programmierung gegeben hat: das C-Modell und das Lisp-Modell. Diese beiden scheinen Punkte von hohem Boden zu sein, mit sumpfigen Niederungen dazwischen. Als Computer leistungsfähiger wurden, bewegten sich die neuen Sprachen, die entwickelt wurden, stetig in Richtung des Lisp-Modells. Ein beliebtes Rezept für neue Programmiersprachen in den letzten 20 Jahren war es, das C-Modell des Rechnens zu nehmen und ihm stückweise Teile aus dem Lisp-Modell hinzuzufügen, wie Laufzeittypisierung und Garbage Collection.

In diesem Artikel werde ich versuchen, in den einfachsten Worten zu erklären, was McCarthy entdeckt hat. Der Punkt ist nicht nur, etwas über ein interessantes theoretisches Ergebnis zu lernen, das jemand vor vierzig Jahren herausgefunden hat, sondern zu zeigen, wohin Sprachen sich entwickeln. Das Ungewöhnliche an Lisp — tatsächlich die definierende Qualität von Lisp — ist, dass es in sich selbst geschrieben werden kann. Um zu verstehen, was McCarthy damit meinte, werden wir seine Schritte zurückverfolgen, wobei seine mathematische Notation in laufenden Common Lisp-Code übersetzt wird.