DIE WURZELN VON LISP
OriginalMai 2001
(Ich habe diesen Artikel geschrieben, um mir selbst dabei zu helfen, genau zu verstehen, was McCarthy entdeckt hat. Sie müssen diese Dinge nicht wissen, um in Lisp zu programmieren, aber er sollte jedem helfen, der das Wesen von Lisp verstehen will – sowohl im Hinblick auf seine Ursprünge als auch auf seinen semantischen Kern. Die Tatsache, dass es einen solchen Kern hat, ist eines der Unterscheidungsmerkmale von Lisp und der Grund, warum Lisp im Gegensatz zu anderen Sprachen Dialekte hat.)
1960 veröffentlichte John McCarthy eine bemerkenswerte Arbeit, in der er für die Programmierung etwas Ähnliches tat wie Euklid für die Geometrie. Er zeigte, wie man aus einer Handvoll einfacher Operatoren und einer Notation für Funktionen eine ganze Programmiersprache erstellen kann. Er nannte diese Sprache Lisp, was für „List Processing“ (Listenverarbeitung) steht, weil eine seiner Schlüsselideen darin bestand, eine einfache Datenstruktur, eine sogenannte Liste , sowohl für Code als auch für Daten zu verwenden.
Es lohnt sich, McCarthys Entdeckung zu verstehen, nicht nur als Meilenstein in der Computergeschichte, sondern auch als Modell für die Entwicklung der Programmierung in unserer Zeit. Mir scheint, dass es bisher zwei wirklich saubere, konsistente Programmiermodelle gab: das C-Modell und das Lisp-Modell. Diese beiden scheinen Höhen zu sein, zwischen denen sumpfiges Tiefland liegt. Da Computer immer 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 der Computertechnik zu übernehmen und ihm Stück für Stück Teile aus dem Lisp-Modell hinzuzufügen, wie etwa Laufzeittypisierung und Garbage Collection.
In diesem Artikel werde ich versuchen, McCarthys Entdeckung so einfach wie möglich zu erklären. Es geht nicht nur darum, etwas über ein interessantes theoretisches Ergebnis zu erfahren, das jemand vor vierzig Jahren herausgefunden hat, sondern auch darum, zu zeigen, wohin sich Sprachen entwickeln. Das Ungewöhnliche an Lisp – eigentlich die entscheidende Eigenschaft von Lisp – ist, dass es in sich selbst geschrieben werden kann. Um zu verstehen, was McCarthy damit meinte, werden wir seine Schritte zurückverfolgen und seine mathematische Notation in laufenden Common-Lisp-Code übersetzen.