Qui a conçu les exceptions?

22

D'où proviennent les exceptions et la gestion des exceptions?

J'aime la façon dont .NET l'utilise, j'aime la façon dont C ++ le prend en charge (mais les bibliothèques utilisent malheureusement du code retour ou sont écrites en C à la place). Je connais à peu près son standard dans toutes les nouvelles langues, mais qui l'a conçu en premier ou d'où vient-il?

Le C ++ est-il le premier langage à l'utiliser? Je n'en connais aucun autre plus ancien.

moucheron
la source
7
Apparemment, Plankalkül avait une gestion exceptionnelle dans les années 40, bien que le premier compilateur n'ait existé que 50 ans plus tard. ( en.wikipedia.org/wiki/Plankalk%C3%BCl )
FrustratedWithFormsDesigner
On pourrait dire que C ++ a été le premier langage de la tour non ivoire à introduire des exceptions pour les masses. Mais le concept existe depuis le début (ou depuis longtemps, faites votre choix).
Martin York
11
Vous cherchez quelqu'un à étrangler? Je plaisante ...
Mark Canlas
1
Faut-il prendre en compte les influences des exceptions matérielles?
rwong
1
@FrustratedWithFormsDesigner: Ma mâchoire vient de toucher le sol. Je connaissais Konrad Zuse, mais je ne le savais pas. Il est notre père à tous.
Bob Murphy

Réponses:

20

La levée et le piégeage des exceptions existent depuis longtemps. Ce site indique que des exceptions ont été introduites dans PL / I: http://www.math.grin.edu/~rebelsky/Courses/CS302/98S/Outlines/outline.02.html

qui était en 1967, selon cette page (comprend un tableau complet mais non exhaustif des langages et fonctionnalités informatiques): http://community.borland.com/article/0,1410,22741,00.html

De nombreuses langues ont repris cette technique - ADA, ALGOL, FORTRAN, ML [...]

Cité d' ici .

Wikipedia a plus de détails sur la gestion des exceptions dans PL / 1 . Cette page mentionne également que PL / 1 est le premier. Bien sûr, ce n'est pas une preuve scientifique :-)

Quant à savoir qui a conçu PL / 1 en personne, l'article ne mentionne aucun nom, seulement divers comités chez IBM.

Péter Török
la source
Les exceptions en PL / I étaient des types d'événements vraiment spécifiques. Vous pouvez définir et déclencher vos propres événements et écrire des gestionnaires d'événements pour les attraper. ISTR il y avait un certain support pour cela dans certaines installations du système (VTAM?), Donc vous pouviez réellement écrire des programmes pilotés par les événements.
TMN
Pouvez-vous penser à des langages antérieurs à C ++ qui fournissaient une facilité de nettoyage ordonné pendant le déroulement de la pile?
supercat
Exceptions dans FORTRAN? Allez ...
Michał Kosmulski
6

Hof, Mössenböck et Pirkelbauer (dans leur article de 1997 Zero-Overhead Exception Handling using Metaprogramming ) affirment que le concept d'exceptions a été suggéré dans les années 70, se référant à la gestion des exceptions de 1975 de John B. Goodenough : Issues et un papier de notation proposé dans les communications l'ACM . Il y confond la gestion moderne des exceptions avec l'idée générale d'enregistrer les rappels, et sa notation proposée ressemble plus à des spécifications de métadonnées d'attribut modernes qu'à try/catch, mais elle (ou au moins sa section 2) est un excellent aperçu de l'état de la gestion des exceptions dans le milieu des années 70.

Peut-être à noter est également le raise/rescuemécanisme d' Alef , que l'on peut voir comme une forme primitive de catchblocs, de peur que nous ne pensions qu'ils surgissent pleinement formés du front de Stroustroup comme Athéna de Zeus.

Wtrmute
la source
3
avez-vous lu la réponse précédente ? Il date des exceptions 1967: huit ans plus tôt que la date à laquelle vous vous référez
gnat
4
Je l'ai fait, mais j'essayais de retracer une partie de l'historique entre l'apparition d'exceptions en C ++ et les instructions ON CONDITION en PL / I. Je suppose que mon ajout n'était pas le bienvenu?
Wtrmute
1
En fait, de nombreux articles sur la gestion des exceptions se réfèrent à une bonne quantité pour la vue d'ensemble, la discussion et son influence sur le mécanisme d'exception moderne - il est raisonnable de le considérer comme fondamental. D'un autre côté, la «gestion des exceptions» a une sémantique distincte dans de nombreuses langues, et je m'attends à ce que cela soit particulièrement vrai avant la publication de Goodenough. Dans cet esprit, une réponse conservatrice à cette question pourrait tout aussi bien remonter à un saut conditionnel.
Thiago Silva
@gnat: Avez-vous lu le commentaire qui retrace l'idée dans les années 40? Même si ce commentaire n'existait pas, la question est "d'où viennent les exceptions?", Et non "nommez la première date à laquelle les exceptions ont été utilisées".
Michael Shaw
@MichaelShaw, la réponse à laquelle je fais référence a été publiée en même temps que le commentaire que vous mentionnez, et elle tente également de répondre à la question posée ("étant le premier"). Contrairement à cela, ce message n'a pas reconnu les preuves antérieures apparemment visibles et n'a même pas essayé de répondre à la question
mnat