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.