Chi ha progettato le eccezioni?


22

Da dove provengono le eccezioni e la gestione delle eccezioni?

Mi piace il modo in cui .NET lo utilizza, mi piace il modo in cui C ++ lo supporta (ma sfortunatamente le librerie usano il codice di ritorno o sono scritte in C). Conosco il suo standard praticamente in tutte le nuove lingue, ma chi l'ha progettato per primo o da dove proviene?

C ++ è il primo linguaggio ad usarlo? Non conosco nessun altro più vecchio.


7
Apparentemente, Plankalkül ebbe una gestione delle eccezioni negli anni '40, sebbene il primo compilatore non esistesse fino a circa 50 anni dopo. ( en.wikipedia.org/wiki/Plankalk%C3%BCl )
— FrustratedWithFormsDesigner

Si potrebbe dire che il C ++ fu il primo linguaggio a torre non in avorio a introdurre eccezioni alle masse. Ma il concetto è in circolazione dall'inizio (o da molto tempo, fai la tua scelta).
— Martin York,

11
Cerchi qualcuno da strangolare? Sto scherzando ...
— Mark Canlas, il

1
Dovremmo tenere conto delle influenze delle eccezioni hardware?
— rwong

1
@FrustratedWithFormsDesigner: La mia mascella ha appena colpito il pavimento. Conoscevo Konrad Zuse, ma non lo sapevo. È il padre di tutti noi.
— Bob Murphy,

Risposte:


20

Sollevare e intrappolare le eccezioni è in circolazione da un bel po 'di tempo. Questo sito afferma che sono state introdotte eccezioni in PL / I: http://www.math.grin.edu/~rebelsky/Courses/CS302/98S/Outlines/outline.02.html

che era nel 1967, secondo questa pagina (include un ampio ma non esaustivo grafico dei linguaggi e delle caratteristiche del computer): http://community.borland.com/article/0,1410,22741,00.html

Molte lingue hanno raccolto questa tecnica: ADA, ALGOL, FORTRAN, ML [...]

Citato da qui .

Wikipedia ha maggiori dettagli sulla gestione delle eccezioni in PL / 1 . Questa pagina si riferisce anche al fatto che PL / 1 è il primo. Certo, questa non è una prova scientifica :-)

Per quanto riguarda chi ha progettato personalmente PL / 1, l'articolo non menziona nomi, ma solo vari comitati presso IBM.


Le esecuzioni in PL / I erano tipi di eventi davvero specifici. È possibile definire e aumentare i propri eventi e scrivere gestori di eventi per catturarli. ISTR c'era un certo supporto per questo in alcune strutture di sistema (VTAM?), In modo da poter effettivamente scrivere programmi guidati da eventi.
— TMN,

Riesci a pensare a qualche lingua precedente al C ++ che forniva una funzione per la pulizia ordinata durante lo svolgimento dello stack?
— supercat

Eccezioni in FORTRAN? Dai ...
— Michał Kosmulski,

6

Hof, Mössenböck e Pirkelbauer (nel loro documento del 1997 Gestione delle eccezioni generali utilizzando la metaprogrammazione ) affermano che il concetto di eccezioni è stato suggerito negli anni Settanta, facendo riferimento alla gestione delle eccezioni di John B. Goodenough del 1975 : problemi e un documento di notazione proposto nelle Comunicazioni di l'ACM . In esso unisce la moderna gestione delle eccezioni all'idea generale di registrare i callback e la sua notazione proposta assomiglia più alle moderne specifiche dei metadati dell'attributo che try/catch, ma (o almeno la sua sezione 2) è una grande panoramica dello stato della gestione delle eccezioni nella metà degli anni settanta.

Forse è degno di nota anche il raise/rescuemeccanismo di Alef , che si può vedere come una forma primitiva di catchblocchi, per non pensare che siano nati completamente dalla fronte di Stroustroup come Athena di Zeus.


3
hai letto la risposta precedente ? Risale alle eccezioni 1967: otto anni prima della data a cui ti riferisci
— moscerino

4
L'ho fatto, ma stavo cercando di tracciare parte della storia tra la comparsa di eccezioni in C ++ e le istruzioni ON CONDITION in PL / I. Immagino che la mia aggiunta non sia stata gradita?
— Wtrmute,

1
In realtà, molti articoli sulla gestione delle eccezioni si riferiscono alla buona sufficienza per la visione d'insieme, la discussione e la sua influenza sul moderno meccanismo di eccezione - è ragionevole considerarlo fondamentale. D'altro canto, la "gestione delle eccezioni" ha una semantica distinta in molte lingue e mi aspetto che ciò sia particolarmente vero prima della pubblicazione di Goodenough. Con questo in mente, una risposta conservatrice a questa domanda potrebbe anche risalire a un salto condizionale.
— Thiago Silva,

@gnat: hai letto il commento che fa risalire l'idea agli anni '40? Anche se quel commento non esistesse, la domanda è "da dove provengono le eccezioni?", Non "nominare la prima data in cui sono state utilizzate le eccezioni".
— Michael Shaw,

@MichaelShaw la risposta a cui mi riferisco è stata pubblicata contemporaneamente al commento che menzioni e tenta anche di rispondere alla domanda posta ("essere il primo"). Al contrario, questo post non è riuscito a riconoscere prove precedenti apparentemente visibili e non ha nemmeno cercato di rispondere alla domanda
— moscerino
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.