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.


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.


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.


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.