프로그래밍의 'else'는 독일어 번역에서 비롯됐다
원제 The 'else' keyword is probably a literal translation from German (2020)
104 포인트댓글 117
Key Point
프로그래밍에서 가장 기본적인 if-then-else 문법이 실은 독일어 원본 문서의 영문 번역에서 비롯된 것으로, 언어 설계 역사의 우연성을 드러낸다.
핵심 요약
- if-then-else는 현대 프로그래밍 언어의 기본이지만, 'else'라는 단어의 출처는 오래 베일에 싸여 있었다.
- ENIAC 시대 초기 컴퓨터들은 조건에 따라 분기하는 '차별화(discrimination)' 개념을 사용했고, Fortran에서 '음수/영/양수' 판정으로 세 곳으로 점프하는 'if' 명령어가 나타났다.
- 1958년 ALGOL 개발을 위한 미국-독일 공동 회의에서 독일 제안팀은 '케이스(case)' 형식에 처음 'else'라는 단어를 도입했는데, 이 문서는 독일어에서 영어로 급하게 번역된 것이었다.
- 독일 제안에서는 'always' 키워드로 블록을 끝내는 방식을 쓰고 'else' 개념이 명확하지 않았던 반면, 미국 제안은 화살표 표기법으로 boolean 식을 제어했으며 단락 회로(short-circuit) 동작을 지원했다.
- ALGOL 58에서 미국-독일 제안이 합쳐져 'if either'와 'or if' 형식이 나타났지만, John Backus의 문법 제안에는 'converge' 키워드가 있었고 이후 'if either'는 폐기되었다.
- 1959년 Klaus Samelson이 LISP의 조건 표현식(McCarthy의 'otherwise' 개념)에 영감을 받아 'if-then-else'를 통합 형식으로 제안했고, 이것이 ALGOL 60에 채택되어 이후 대부분의 언어가 따랐다.
- 당시에는 if-then-else가 어려운 개념이었는지 ALGOL 60 보고서에서 1.5페이지를 할애해 설명했다.
- CPL의 Christopher Strachey는 'else'를 '어리석게 잘못된 영어'라 비판하며 'or' 사용을 주장했고, MAD 언어는 'whenever'와 'otherwise'를 사용해 저항했지만, 형식 자체는 보존했다.
- 오늘날까지 if-then-else가 표준이 된 것은 1959년 Klaus Samelson의 통합 설계 덕분이며, 원래 독일어 문서를 번역하며 탄생한 'else'라는 단어가 60년 이상 프로그래밍 언어의 기초가 되어 있다.