Hacker News오픈소스 · 도구

프로그래밍의 '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년 이상 프로그래밍 언어의 기초가 되어 있다.
AI 요약 안내

AI가 한국어로 정리한 내용입니다. 정확한 정보는 원문을 확인해 주세요.

요약 원칙 ↗