기타 Hacker News · 4일 전

프로그래밍 조건문 'else'는 사실 독일어 직역에서 탄생했다?

핵심 요약
  • 일상 영어 회화에서는 접속사처럼 쓰이지 않는 'else' 키워드가 프로그래밍 언어에 어떻게 정착했는지 초기 역사를 추적한 글입니다.
  • 에니악의 전선 연결과 초기 포트란의 '조건부 점프'를 거쳐, 1958년 미·독 표준 언어 개발 과정에서 독일 연구진의 설계가 큰 영향을 미쳤습니다.
  • 독일 연구진이 불리언 조건문과 흐름이 일시적으로 분기되었다가 복귀하는 구조를 제안하면서 오늘날의 if-else 형태가 완성되었습니다.
요약 우리가 프로그래밍을 배울 때 너무나 당연하게 사용하는 'if-then-else' 조건문이지만, 사실 일상 영어 회화에서 'else'를 이런 식의 접속사처럼 쓰는 일은 거의 없습니다. 개발자이자 연구자인 에릭(Eric)은 "도대체 코딩에서 쓰는 else라는 키워드는 어디서 튀어나온 것일까?"라는 사소하면서도 흥미로운 의문에서 출발해 프로그래밍 언어의 초기 역사와 조건문의 변천사를 추적했습니다. 컴퓨터 역사 초기, 계산 결과에 따라 다른 명령을 수행하는 개념은 1946년 에니악(ENIAC) 시절부터 존재했습니다. 하스켈 커리(Haskell Curry)와 윌라 와이엇(Willa Wyatt)은 두 수의 크기를 비교해 결정을 내리는 기능을 '판별(discrimination)'이라 불렀지만, 당시에는 코드가 아니라 플러그보드 전선과 다이얼을 물리적으로 연결해 실행 흐름을 제어했습니다. 이후 프로그램이 메모리에 저장되는 방식으로 발전하면서, 특정 계산 결과가 음수일 때 메모리의 다른 위치로 실행 흐름을 건너뛰게 만드는 '조건부 점프(conditional jump)' 명령어가 등장했습니다. 이 조건부 점프 개념은 초기 고수준 언어로 이어졌습니다. 대표적인 예로 포트란(Fortran)은 계산 결과가 음수인지, 0인지, 양수인지에 따라 세 곳 중 하나로 무조건 점프하는 3방향 'if' 문을 도입했습니다. 하지만 이런 방식은 프로그램의 실행 흐름이 뚝뚝 끊겨 개발자들을 혼란스럽게 만들었습니다. 그레이스 호퍼의 플로우매틱(Flow-Matic)은 수의 부호 대신 두 수의 대소 비교 방식을 쓰고 조건이 맞지 않을 때의 처리로 'otherwise'라는 키워드를 제시하기도 했습니다. 결정적인 변화는 1958년 미국과 독일의 컴퓨팅 단체들이 모여 하드웨어에 종속되지 않는 표준 프로그래밍 언어를 개발하기 위해 공동 프로젝트(후일 ALGOL로 발전)를 시작했을 때 일어났습니다. 당시 독일 연구진은 조건문 설계에서 두 가지 거대한 개념적 도약을 제안했습니다. 하나는 단순 수치 비교를 넘어 임의의 불리언(Boolean) 표현식으로 조건을 제어하게 한 것이고, 다른 하나는 제어 흐름을 무작정 다른 곳으로 점프시키는 대신 참/거짓 여부에 따라 잠시 다른 명령을 실행한 뒤 다시 원래 블록의 끝('always' 문)으로 돌아와 프로그램이 계속 이어지도록 구조화한 것이었습니다. 영어의 일상 문법과는 사뭇 다른 프로그래밍 속 'if-then-else'의 기저에는 바로 이러한 독일 수학·컴퓨팅 연구자들의 독특한 개념 설계와 언어적 직역 흔적이 짙게 깔려 있습니다.
Sponsored · 광고