누가 예외를 설계 했습니까?


22

예외 및 예외 처리는 어디서 시작 되었습니까?

나는 .NET이 그것을 사용하는 방법을 좋아하고 C ++이 그것을 지원하는 방법을 좋아합니다 (그러나 불행히도 라이브러리는 리턴 코드를 사용하거나 대신 C로 작성됩니다). 나는 모든 새로운 언어에서 그 표준을 거의 알고 있지만 누가 그것을 처음부터 어디서 설계 했는가?

C ++이 그것을 사용하는 첫 번째 언어입니까? 나는 나이가 든 다른 것을 모른다.


7
분명히 Plankalkül은 1940 년대에 예외 처리를 받았지만, 최초의 컴파일러는 약 50 년 후까지 존재하지 않았습니다. ( en.wikipedia.org/wiki/Plankalk%C3%BCl )
FrustratedWithFormsDesigner

C ++은 대중에게 예외를 도입 한 최초의 상아탑 언어가 아니라고 말할 수 있습니다. 그러나이 개념은 처음부터 (또는 오랜 시간 동안 골랐습니다) 계속되었습니다.
Martin York

11
교살 할 사람을 찾고 계십니까? 농담이야 ...
Mark Canlas

1
하드웨어 예외의 영향을 고려해야합니까?
rwong

1
@FrustratedWithFormsDesigner : 턱이 바닥에 닿았습니다. 나는 Konrad Zuse에 대해 알고 있었지만 그것을 몰랐습니다. 그는 우리 모두의 아버지입니다.
밥 머피

답변:


20

예외를 제기하고 잡는 것은 꽤 오랫동안있었습니다. 이 사이트는 PL / I에 예외가 도입되었다고 말합니다 : http://www.math.grin.edu/~rebelsky/Courses/CS302/98S/Outlines/outline.02.html

이 페이지에 따르면 1967 년에 작성되었습니다 (컴퓨터 언어 및 기능에 대한 포괄적이지만 포괄적 인 차트는 포함하지 않음) : http://community.borland.com/article/0,1410,22741,00.html

ADA, ALGOL, FORTRAN, ML-많은 언어가이 기술을 집어 들었습니다 ...]

여기 에서 인용했습니다 .

Wikipedia에는 PL / 1의 예외 처리에 대한 자세한 내용이 있습니다 . 이 페이지는 또한 PL / 1이 첫 번째임을 나타냅니다. 물론 이것은 과학적인 증거가 아닙니다 :-)

PL / 1을 직접 디자인 한 사람에 대해서는이 기사에서는 이름이없고 IBM의 다양한위원회 만 언급합니다.


PL / I에서의 실행은 실제로 특정 유형의 이벤트였습니다. 자신 만의 이벤트를 정의하고 제기하고 이벤트 핸들러를 작성하여이를 잡을 수 있습니다. ISTR은 일부 시스템 기능 (VTAM?)에서이를 지원하므로 실제로 이벤트 중심 프로그램을 작성할 수 있습니다.
TMN

C ++ 이전의 스택 언 와인드 중에 정리할 수있는 기능을 제공하는 언어를 생각할 수 있습니까?
supercat

FORTRAN의 예외? 어서 ...
Michał Kosmulski

6

호프, Mössenböck 및 Pirkelbauer (자신의 1997 논문에서 메타 프로그래밍 사용하여 처리 제로 오버 헤드 예외 존 B 굿 이너프의 1975 참조 예외의 개념은 70 년대 제안 된 것을 긍정을) 예외 처리 : 문제 및 제안 된 표기법 용지 통신의 ACM . 여기에서 콜백 등록에 대한 일반적인 아이디어로 현대적인 예외 처리를 통합하고 제안 된 표기법은보다 현대적인 속성 메타 데이터 사양과 비슷 try/catch하지만 (또는 적어도 섹션 2)는 예외 처리 상태에 대한 훌륭한 개요입니다. 1970 년대 중반.

아마도 주목할 것은 Alefraise/rescue메커니즘 인데 , 우리가 Zeus의 Athena와 같은 Stroustroup의 눈썹에서 완전히 형성되었다고 생각하지 않도록 기본 형태의 블록 으로 볼 수 있습니다 .catch


3
이전 답변 을 읽었 습니까? 예외 날짜 1967 : 참조 날짜보다 8 년
빠름

4
나는했지만 C ++에서 예외가 나타나는 것과 PL / I의 ON CONDITION 문 사이의 역사를 추적하려고했습니다. 내 추가가 반갑지 않은 것 같아요?
Wtrmute

1
실제로, 예외 처리에 관한 많은 논문은 개요, 토론 및 현대 예외 메커니즘에 미치는 영향에 대해 충분히 설명합니다. 다른 한편으로, "예외 처리"는 많은 언어에서 뚜렷한 의미론을 가지고 있으며, Goodenough가 출판하기 전에 이것이 사실 일 것으로 기대합니다. 이를 염두에두고이 질문에 대한 보수적 인 답은 조건부로 넘어가는 것까지 추적 할 수 있습니다.
Thiago Silva

@ gnat : 1940 년대 아이디어를 추적하는 의견을 읽었습니까? 해당 의견이 존재하지 않더라도 "예외가 사용 된 가장 빠른 날짜의 이름을 지정하지 않고"예외는 어디에서 왔습니까? "라는 질문이 있습니다.
Michael Shaw

@MichaelShaw 내가 언급 한 답변이 귀하가 언급 한 의견과 동시에 게시되었으며, 또한 질문 된 내용 ( "첫 번째가 됨")을 해결하려고 시도합니다. 이와는 반대로,이 포스트는 명백히 눈에 보이는 이전의 증거를 인정하지 못했고 심지어 그 문제를 해결하려고 시도조차하지 않았다
gnat
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.