Paul Graham kündigt neue Bel-Programmiersprache an

Bel ist in Bel geschrieben.

Bild

1960 beschrieb John McCarthy Lisp, eine neue Art von Programmiersprache. Ich sage „neuer Typ“, weil Lisp nicht nur eine neue Sprache war, sondern eine neue Art, Sprachen zu beschreiben.

Um Lisp zu definieren, begann er mit einer kleinen Menge von Operatoren, einer Art Axiom, mit der er dann einen Dolmetscher für die Sprache selbst schrieb.

Er wollte keine Programmiersprache im üblichen Sinne beschreiben - eine Sprache, die einem Computer vorschreibt, was zu tun ist. In seiner Arbeit von 1960 wurde Lisp als formales Berechnungsmodell verstanden, das der Thüringer Maschine ähnelt. McCarthy dachte nicht darüber nach, es auf Computern zu verwenden, bis es von Steve Russell, seinem Doktoranden, vorgeschlagen wurde.

1960 Lisp verfügte nicht über die Fähigkeiten, die Programmiersprachen gemeinsam hatten. Zum Beispiel gab es keine Zahlen, Fehler oder Ein- / Ausgaben. Daher mussten Personen, die Lisp als Grundlage für die zur Programmierung von Computern verwendeten Sprachen verwendeten, diese Funktionen selbst hinzufügen. Und sie taten dies, indem sie den axiomatischen Ansatz aufgaben.

So verlief die Entwicklung von Lisp in zwei - und anscheinend unabhängigen - Phasen: der formalen Phase, die 1960 vorgestellt wurde, und der Implementierungsphase, in der die Sprache für den Betrieb auf Computern angepasst und erweitert wurde. Die Hauptarbeit befand sich, gemessen an der Anzahl der umgesetzten Möglichkeiten, in der Umsetzungsphase. 1960 Lisp, übersetzt in Common Lisp, enthält nur 53 Zeilen. Er tut nur das, was nötig ist, um Ausdrücke zu interpretieren. Alles andere wurde in der Implementierungsphase hinzugefügt.

Meine Hypothese ist, dass Lisp trotz einer schwierigen Geschichte von der Tatsache profitierte, dass seine Entwicklung in zwei Phasen stattfand; dass die anfängliche Übung, eine Sprache zu definieren, indem man ihren Interpreten darauf schreibt, Lisp mit seinen besten Qualitäten ausstattete. Und wenn ja, warum nicht weitermachen?

Bel ist ein Versuch, die Frage zu beantworten: Was wäre, wenn dieser Übergang, anstatt frühzeitig von der formalen in die Hinrichtungsphase überzugehen, so spät wie möglich erfolgen würde? Wenn Sie weiterhin den axiomatischen Ansatz verwenden, bis Sie etwas in der Nähe einer vollständigen Programmiersprache haben, welche Axiome werden Sie benötigen und wie wird die resultierende Sprache aussehen?

Ich möchte klarstellen, was Bel ist und was nicht. Obwohl es viel mehr Funktionen als das 1960 Lisp McCarthy hat, ist Bel immer noch in der formalen Phase. Wie Lisp 1960 beschrieben hat, ist es keine Sprache, die Sie zum Programmieren verwenden können. Vor allem, weil ihm wie Lisp McCarthy die Effizienz egal ist. Wenn ich Bel etwas hinzufüge, beschreibe ich die Bedeutung dieses Zusatzes, ohne zu versuchen, eine effektive Implementierung bereitzustellen.

Wofür? Warum die formelle Phase verlängern? Eine Antwort ist zu sehen, wohin der axiomatische Ansatz führen kann, was an sich eine interessante Übung ist. Wenn Computer so leistungsfähig wären, wie wir möchten, wie würden dann Sprachen aussehen?

Ich glaube aber auch, dass es möglich ist, eine effektive Implementierung basierend auf Bel zu schreiben und Einschränkungen hinzuzufügen. Wenn Sie eine Sprache mit Ausdruckskraft, Klarheit und Effizienz benötigen, möchten Sie möglicherweise mit Ausdruckskraft und Klarheit beginnen und dann Einschränkungen hinzufügen, als sich in die entgegengesetzte Richtung zu bewegen.

Wenn Sie also versuchen möchten, eine Bel-basierte Implementierung zu schreiben, wenden Sie sich bitte an uns. Ich werde einer der ersten Benutzer sein.

Letztendlich habe ich einige Dinge aus früheren Dialekten reproduziert. Entweder haben ihre Designer alles richtig gemacht, oder ich sehe nicht die richtige Antwort - die Zeit wird es zeigen. Ich habe auch versucht, mich nicht zu sehr von den in Lisp angenommenen Konventionen zu entfernen. Das heißt, wenn Sie eine Abweichung von den Lisp-Konventionen bemerken, könnte dies einen Grund haben.

Fortsetzung der Beschreibung der Sprache hier .


Danke für die Übersetzung: Denis Mitropolsky

PS


Source: https://habr.com/ru/post/de484328/


All Articles