Wer hat Ausnahmen entworfen?

22

Woher kommen Ausnahmen und Ausnahmebehandlungen?

Ich mag, wie .NET es verwendet, ich mag, wie C ++ es unterstützt (aber Bibliotheken verwenden leider Rückkehrcode oder sind stattdessen in C geschrieben). Ich kenne den Standard in allen neuen Sprachen, aber wer hat ihn zuerst entworfen oder woher kommt er?

Ist C ++ die erste Sprache, die es verwendet? Ich kenne keine ältere.

Mücke
quelle
7
Anscheinend hatte Plankalkül in den 1940er Jahren eine Ausnahmebehandlung, obwohl der erste Compiler erst etwa 50 Jahre später existierte. ( en.wikipedia.org/wiki/Plankalk%C3%BCl )
FrustratedWithFormsDesigner
Man könnte sagen, dass C ++ die erste Sprache war, die keine Elfenbeinturmsprache war und Ausnahmen bei den Massen einführte. Aber das Konzept gibt es schon von Anfang an (oder lange, entscheiden Sie sich).
Martin York
11
Suchen Sie jemanden zum Erwürgen? Ich mache Witze ...
Mark Canlas
1
Sollten wir die Einflüsse von Hardware-Ausnahmen berücksichtigen?
rwong
1
@FrustratedWithFormsDesigner: Mein Kiefer ist gerade auf den Boden gefallen. Ich wusste von Konrad Zuse, wusste das aber nicht. Er ist der Vater von uns allen.
Bob Murphy

Antworten:

20

Das Auslösen und Fangen von Ausnahmen gibt es schon seit geraumer Zeit. Auf dieser Website wurden Ausnahmen in PL / I eingeführt: http://www.math.grin.edu/~rebelsky/Courses/CS302/98S/Outlines/outline.02.html

Das war im Jahr 1967, laut dieser Seite (enthält eine umfangreiche, aber nicht erschöpfende Tabelle von Computersprachen und Funktionen): http://community.borland.com/article/0,1410,22741,00.html

Viele Sprachen haben diese Technik aufgegriffen - ADA, ALGOL, FORTRAN, ML [...]

Zitiert von hier .

Wikipedia bietet nähere Informationen zur Ausnahmebehandlung in PL / 1 . Diese Seite bezieht sich auch darauf, dass PL / 1 das erste ist. Das ist natürlich kein wissenschaftlicher Beweis :-)

Wer persönlich PL / 1 entworfen hat, wird in dem Artikel nicht genannt, sondern nur verschiedene Komitees bei IBM.

Péter Török
quelle
Ausführungen in PL / I waren wirklich bestimmte Arten von Ereignissen. Sie können Ihre eigenen Ereignisse definieren und auslösen und Ereignisbehandlungsroutinen schreiben, um sie abzufangen. ISTR In einigen Systemeinrichtungen (VTAM?) Wurde dies teilweise unterstützt, sodass Sie tatsächlich ereignisgesteuerte Programme schreiben konnten.
TMN
Können Sie sich Sprachen vor C ++ vorstellen, die eine Möglichkeit zur ordnungsgemäßen Bereinigung während des Abwickelns des Stapels boten?
Superkatze
Ausnahmen in FORTRAN? Komm schon ...
Michał Kosmulski
6

Hof, Mössenböck und Pirkelbauer (in ihrer 1997 Papier ohne Overhead Ausnahmebehandlung mit Metaprogrammierung ) bestätigen , dass das Konzept der Ausnahmen in den siebziger Jahren vorgeschlagen wurde, die sich auf John B. Goodenough von 1975 Ausnahmebehandlung: Probleme und eine vorgeschlagene Schreibweise Papier in die Kommunikation von die ACM . Darin verbindet er die moderne Ausnahmebehandlung mit der allgemeinen Idee, Rückrufe zu registrieren, und seine vorgeschlagene Notation ähnelt eher modernen Attribut - Metadaten - Spezifikationen als, try/catchbietet jedoch (oder zumindest in Abschnitt 2) einen guten Überblick über den Status der Ausnahmebehandlung in der Mitte der siebziger Jahre.

Vielleicht bemerkenswert ist auch der raise/rescueMechanismus in Alef , den man als primitive Form von catchBlöcken betrachten kann, damit wir nicht glauben, dass sie vollständig aus der Stirn von Stroustroup hervorgingen, wie Athena aus der von Zeus.

Wtrmute
quelle
3
Hast du die vorherige Antwort gelesen ? Es stammt Ausnahme 1967: 8 Jahre früher als das Datum beziehen Sie sich auf
gnat
4
Das habe ich getan, aber ich habe versucht, einen Teil des Verlaufs zwischen dem Auftreten von Ausnahmen in C ++ und den ON CONDITION-Anweisungen in PL / I nachzuvollziehen. Ich denke, mein Zusatz war unerwünscht?
Mittwoch,
1
Tatsächlich beziehen sich viele Artikel zur Ausnahmebehandlung auf das Gute, um einen Überblick, eine Diskussion und den Einfluss auf moderne Ausnahmemechanismen zu erhalten - es ist vernünftig, sie als wegweisend zu betrachten. Auf der anderen Seite hat "Ausnahmebehandlung" eine unterschiedliche Semantik in vielen Sprachen, und ich würde erwarten, dass dies vor Goodenoughs Veröffentlichung besonders zutrifft. Vor diesem Hintergrund könnte eine konservative Antwort auf diese Frage genauso gut auf einen bedingten Sprung zurückgeführt werden.
Thiago Silva
@gnat: Hast du den Kommentar gelesen, der die Idee bis in die 1940er Jahre zurückverfolgt? Auch wenn dieser Kommentar nicht vorhanden war, lautet die Frage "Woher stammen die Ausnahmen?" Und nicht "Geben Sie das früheste Datum an, an dem die Ausnahmen verwendet wurden".
Michael Shaw
@MichaelShaw Die Antwort, auf die ich mich beziehe, wurde gleichzeitig mit dem von Ihnen erwähnten Kommentar gepostet und versucht auch, die gestellte Frage zu beantworten ("als Erste"). Im Gegensatz dazu wurden in diesem Post offenbar nicht sichtbare frühere Beweise nicht
berücksichtigt