Fernando J. Corbatós "Eingeschränkte Sprachen"


13

Fernando J. Corbató nannte in seiner Preisverleihung 1990 in Turing Gründe, warum komplexe Systeme unweigerlich versagen. Abschließend gibt er einige Vorschläge zur Verringerung der Ausfallwahrscheinlichkeit. Er nennt eine Idee wie folgt:

Die Verwendung von eingeschränkten Sprachen für das Design oder die Synthese ist eine leistungsstarke Methode. Indem Programmierern oder Designern nicht gestattet wird, irrelevante Ideen auszudrücken, wird der Bereich möglicher Fehler wesentlich eingeschränkter.

Was meint er mit "eingeschränkter Sprache"?

Für einen Moment habe ich über Constraint-Programmierung nachgedacht . Bei der Einschränkungsprogrammierung geht es jedoch darum, den Lösungsbereich des Programms zu beschränken. Es ist ein Werkzeug, das einen Programmierer befähigt. Das Feature, auf das sich Corbató bezieht, scheint etwas zu sein, das die Programmiererin tatsächlich einschränkt oder sie zumindest mehr dazu veranlasst, terseren Code zu schreiben.

Mein zweiter Gedanke ist, dass er sich auf konservative Programmiersprachen bezieht . Corbató erhielt seinen Turing-Preis für seine Arbeit in den 1960er und 1970er Jahren. Ich verstehe, dass er sich mit vielen Lochkarten befasst hat. Ich habe noch nie eine Lochkarte gesehen, daher weiß ich mit Sicherheit nicht, wie man eine programmiert, aber ich denke, dass die Lochkartenprogrammierung äußerst liberal ist. Ich vermute, dass die Begriffe Typprüfung, statische Analyse usw. einfach nicht existierten. Bezieht sich Corbató vielleicht auf die Idee von Sprachen, die den Entwickler davon abhalten, dumme Fehler zu machen? Dies scheint auch nicht der Fall zu sein. Sicherheitsprüfung und Datenmodellierung haben nichts mit Knappheit zu tun, wovon er anscheinend spricht, wenn er erwähnt, "keine ... irrelevanten Ideen zuzulassen".


@jweyrich Danke, dass Sie mich an Programmers.SE weitergeleitet haben. Wenn ich jedoch zum Programmiersprachen-Tag von StackOverflow gehe, stelle ich eine Fülle von Fragen fest, die genauso allgemein sind wie meine: "Gibt es eine statisch schwache typisierte Sprache?" wo der Autor auch auf allgemeine Lesematerialien verweist
Xander Dunn

5
@thoughtadvances Überprüfen Sie die Daten auf den Fragen, die Sie erwähnen, ich bin bereit zu wetten, dass die meisten von ihnen ziemlich alt sind. SO ist 4 Jahre alt, die Dinge ändern sich und im Allgemeinen werden wir mit der Zeit strenger. Ihre Frage ist in Ordnung für Programmierer (ich bin ein Mod dort), aber es wäre einfacher gewesen, wenn Sie dies nur als Moderationsaufmerksamkeit markiert und darum gebeten hätten, dass es migriert wird, anstatt es neu zu veröffentlichen. Die Migration hätte Ihnen die Mühe des Umbuchens erspart und den Programmierern die Antwort zusammen mit der Frage gebracht. Mach dir jetzt keine Sorgen, ich kümmere mich darum.
Yannis

3
Wenn zum Beispiel (Anmerkung: if ) die Idee von malloc für eine bestimmte Anwendung aus irgendeinem Grund "irrelevant" ist, würde die Auswahl von Java ("eingeschränkt, weil kein malloc vorhanden ist") gegenüber C (malloc ist da) den Bereich möglicher Fehler einschränken "das könnte mit malloc
gnat verbunden sein

@YannisRizos Vielen Dank für die Migration. Ich wusste nicht, dass diese Funktion existiert. Vielleicht hätten die erfahreneren Benutzer von StackOverflow diesen Pfad vorschlagen können, anstatt ihn nur zu schließen.
Xander Dunn

3
" Codieren auf Lochkarten " war nur eine andere Art, ein Programm zu schreiben. In den späten 1960er und frühen 1970er Jahren hatten wir Sprachen, die genauso ausgefeilt waren wie die, die wir heute haben. Viele der Kernkonzepte von Programmiersprachen waren bereits gut etabliert, und ALGOL 60 hatte bereits 1963 den Standard für Programmiertools gesetzt.
Ross Patterson,

Antworten:


8

Eine "eingeschränkte Programmiersprache" ist einfach eine, die keine (einfachen) Möglichkeiten bietet, Dinge zu tun, die für den Zweck der Sprache irrelevant sind.

Beachten Sie, dass dies "irrelevant", nicht "dumm", "dumm" oder "falsch" ist.

Ein gutes Beispiel hierfür könnte ISO / ANSI-SQL (vor SQL-92) sein, das in der Abfragesprache keine Möglichkeit hatte, viele prozedurale Programmierartefakte wie Rekursionen oder Schleifen auszudrücken. (Allerdings gibt es sie jetzt und die Anbieter haben ohnehin schon benutzerdefinierte Erweiterungen für sie hinzugefügt).


6
Genau das ist Corbatós Punkt. In einem Datamation-Artikel von 1969 mit dem Titel PL / I als Werkzeug für die Systemprogrammierung (mit dem großartigen Untertitel " Fünf Jahre mit einem temporären Compiler "!) Ging er auf viele Details ein .
Ross Patterson

Danke, diese Antwort ist sehr hilfreich. Diese Idee hat interessante Implikationen. Dies scheint darauf hinzudeuten, dass ein Programmierer Zugang zu einer Fülle unterschiedlicher Sprachen mit unterschiedlichen Fähigkeiten haben möchte, anstatt über eine Sprache zu verfügen, in der alle beherrscht werden, was viele Programmierer für C, C ++ oder Java halten möchten.
Xander Dunn

@ RossPatterson Ausgezeichnet! Vielen Dank! Ich habe nach einer Ausarbeitung des Themas von Corbató gesucht, aber nicht viel gefunden.
Xander Dunn

1
Ein großartiges Zitat aus diesem Datamation-Artikel: " Unser Ziel bei der Umsetzung des Systems ... war es, die Grenzen zu erkunden und herauszufinden, wie ein System effektiv zusammengestellt werden kann, das die gesteckten Ziele erreicht und erfüllt. Wir versuchen zu finden aus den wichtigsten Design - Ideen und kommunizieren diese an anderen, unabhängig davon , welches System sie kennen. Daher ist eine Sprache , die über den spezifischen Details der Hardware bekommt , ist sicherlich wünschenswert, ... mit anderen Worten, es eine zwingt zu entwerfen, Es hat sich herausgestellt, dass dies eine seiner Stärken ist . "
Ross Patterson,

2
@thoughtadvances " Dies scheint darauf hinzudeuten, dass ein Programmierer Zugang zu einer Vielzahl unterschiedlicher Sprachen mit unterschiedlichen Fähigkeiten haben möchte, anstatt über eine einzige Sprache zu verfügen, um sie alle zu beherrschen " - das ist einer der Unterschiede zwischen einem Junior- und einem Senior-Programmierer. Kein Schreiner hat nur einen Hammer :-)
Ross Patterson


0

Zunächst müssen Sie die Ära des Rechnens verstehen, als seine Rede gehalten wurde (1990). Stellen Sie außerdem fest, dass er vor einem akademischen Publikum spricht und MIT seine Heimatbasis ist.

In dieser Zeit waren Sprachen zum Schreiben von Sprachen (Metasprachen) ein heißes Thema. Das Art of the Meta-Object-Protokoll ist gerade erschienen und inspiriert das Design neuer Sprachen. All dieser Luxus hat jedoch seinen Preis: Komplexität.

Um die Komplexität der Systeme zu verringern und die Überprüfung dieser Systeme zu ermöglichen, wurden Metasprachen wie Z entwickelt, um eine testbare Spezifikation zu erstellen. Ich vermute, er bezieht sich auf diese Art von Sprachen.


2
Corbató ist nicht nur ein spätzwanzigjähriger MIT-Akademiker. Er ist einer der Pioniere unseres Fachs. Seine Arbeit an CTSS war wegweisend und führte direkt zu Multics, Unix, CP / 67 und den heutigen Linux- und z / VM-Systemen. Und die fragliche Aussage bezieht sich auf ein Prinzip, das er 20 Jahre vor der Kunst des Meta-Objekt-Protokolls und seinem Turing-Vortrag offen dargelegt hat .
Ross Patterson

0

Möglicherweise meint er damit eine Sprache, die eine relativ geringe Anzahl von Begriffen zu erfassen hat. Überprüfen Sie hier die Diagramme , die die grafischen Darstellungen der Konzepte in Coffescript, Ruby und C ++ zeigen. "Tuner" bedeutet, dass die Wahrscheinlichkeit, irrelevante Ideen auszudrücken, geringer ist, je weniger Konzepte Sie in einer Sprache haben.


"... oder eine Sprache" - ist das ein Kommentar zu etwas?
gnat

Bearbeitet den Beitrag, um nicht wie ein Kommentar auszusehen.
Manoj R
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.