¿Quién diseñó las excepciones?

22

¿De dónde provienen las excepciones y el manejo de excepciones?

Me gusta cómo lo usa .NET, me gusta cómo C ++ lo admite (pero las bibliotecas desafortunadamente usan el código de retorno o están escritas en C). Sé que es bastante estándar en todos los idiomas nuevos, pero ¿quién lo diseñó primero o de dónde vino?

¿Es C ++ el primer lenguaje que lo usa? No conozco otro que sea más viejo.

mosquito
fuente
77
Aparentemente, Plankalkül tuvo un manejo de excepciones en la década de 1940, aunque el primer compilador no existió hasta unos 50 años después. ( en.wikipedia.org/wiki/Plankalk%C3%BCl )
FrustratedWithFormsDesigner
Se podría decir que C ++ fue el primer lenguaje de torre no marfil que introdujo excepciones a las masas. Pero el concepto ha existido desde el principio (o desde hace mucho tiempo, elija).
Martin York
11
¿Buscas a alguien para estrangular? Estoy bromeando ...
Mark Canlas
1
¿Debemos tener en cuenta las influencias de las excepciones de hardware?
rwong
1
@FrustratedWithFormsDesigner: mi mandíbula acaba de golpear el suelo. Sabía de Konrad Zuse, pero no lo sabía. Él es el padre de todos nosotros.
Bob Murphy

Respuestas:

20

El aumento y la captura de excepciones han existido durante bastante tiempo. Este sitio dice que se introdujeron excepciones en PL / I: http://www.math.grin.edu/~rebelsky/Courses/CS302/98S/Outlines/outline.02.html

que fue en 1967, de acuerdo con esta página (incluye una tabla extensa pero no exhaustiva de lenguajes y características de la computadora): http://community.borland.com/article/0,1410,22741,00.html

Muchos idiomas aprendieron esta técnica: ADA, ALGOL, FORTRAN, ML [...]

Citado desde aquí .

Wikipedia tiene más detalles sobre el manejo de excepciones en PL / 1 . Esa página también se refiere a PL / 1 como el primero. Por supuesto, esto no es una prueba científica :-)

En cuanto a quién diseñó PL / 1 en persona, el artículo no menciona nombres, solo varios comités en IBM.

Péter Török
fuente
Las ejecuciones en PL / I fueron tipos de eventos realmente específicos. Puede definir y generar sus propios eventos y escribir controladores de eventos para capturarlos. ISTR había algo de apoyo para esto en algunas instalaciones del sistema (VTAM?), Por lo que en realidad podría escribir programas controlados por eventos.
TMN
¿Puedes pensar en algún lenguaje anterior a C ++ que proporcionara una instalación para la limpieza ordenada durante el desenrollado de la pila?
supercat
Excepciones en FORTRAN? Vamos ...
Michał Kosmulski
6

Hof, Mössenböck y Pirkelbauer (en su documento de 1997 Zero-Overhead Exception Handling usando Metaprogramming ) afirman que el concepto de excepciones se sugirió en los años setenta, refiriéndose al manejo de excepciones de 1975 de John B. Goodenough : problemas y un documento de notación propuesto en las Comunicaciones de la ACM . En él, combina el manejo moderno de excepciones con la idea general de registrar devoluciones de llamada, y su notación propuesta se parece más a las especificaciones modernas de metadatos de atributos que try/catch, pero (o al menos su sección 2) es una gran descripción del estado del manejo de excepciones en el mediados de los setenta.

Quizás sea de destacar también el raise/rescuemecanismo en Alef , que se puede ver como una forma primitiva de catchbloques, para que no pensemos que surgieron completamente formados de la frente de Stroustroup como Athena de Zeus.

Wtrmute
fuente
3
¿Leíste la respuesta anterior ? Data de las excepciones de 1967: ocho años antes de la fecha a la que se refiere
mosquito
44
Lo hice, pero estaba tratando de rastrear parte de la historia entre la aparición de excepciones en C ++ y las declaraciones ON CONDITION en PL / I. ¿Supongo que mi adición no fue bienvenida?
Wtrmute
1
En realidad, muchos documentos sobre el manejo de excepciones se refieren a la evidencia general, la discusión y su influencia en el mecanismo de excepción moderno; es razonable considerarlo fundamental. Por otro lado, el "manejo de excepciones" tiene una semántica distinta en muchos idiomas, y esperaría que esto sea especialmente cierto antes de la publicación de Goodenough. Con esto en mente, una respuesta conservadora a esta pregunta podría remontarse a un salto condicional.
Thiago Silva el
@gnat: ¿Leíste el comentario que rastrea la idea hasta la década de 1940? Incluso si ese comentario no existiera, la pregunta es "¿de dónde vienen las excepciones?", No "nombrar la fecha más temprana en que se usaron las excepciones".
Michael Shaw
@MichaelShaw, la respuesta a la que me refiero se ha publicado al mismo tiempo que el comentario que mencionas, y también intenta responder a la pregunta formulada ("ser el primero"). A diferencia de esto, esta publicación no reconoció evidencias anteriores aparentemente visibles y ni siquiera trató de abordar la pregunta
mosquito el