DIE WURZELN VON LISP
OriginalMai 2001
(Ich habe diesen Artikel geschrieben, um mir selbst genau zu verstehen, was McCarthy entdeckt hat. Sie müssen dieses Wissen nicht haben um in Lisp zu programmieren, aber es sollte hilfreich sein für jeden, der den Kern von Lisp verstehen möchte - sowohl in Bezug auf seine Ursprünge als auch auf seinen semantischen Kern. Die Tatsache, dass es einen solchen Kern gibt, ist eines der unterscheidenden Merkmale von Lisp, und der Grund, warum, im Gegensatz zu anderen Sprachen, Lisp Dialekte hat.)
1960 veröffentlichte John McCarthy eine bemerkenswerte Arbeit, in der er für das Programmieren etwas Ähnliches tat wie Euklid für die Geometrie. 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 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 beginnt. Es scheint mir, dass es bisher zwei wirklich saubere, konsistente Programmiermodelle gegeben hat: das C-Modell und das Lisp-Modell. Diese beiden scheinen Hochpunkte zu sein, mit sumpfigen Niederungen dazwischen. Da Computer leistungsfähiger geworden sind, haben sich die neu entwickelten Programmiersprachen [1] 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 schrittweise Teile aus dem Lisp-Modell hinzuzufügen, wie Laufzeit-Typisierung und Garbage Collection.
In diesem Artikel werde ich versuchen, in den einfachsten möglichen Begriffen 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 sich die Sprachen entwickeln. Das Ungewöhnliche an Lisp - tatsächlich die definierenden Eigenschaft von Lisp - ist, dass es in sich selbst geschrieben werden kann. Um zu verstehen, was McCarthy damit meinte, werden wir seine Schritte nachvollziehen, wobei seine mathematische Notation in laufenden Common Lisp-Code übersetzt wird.