지난번 컴퓨터 이야기 #1에서 다룬 것처럼 버네버 부쉬(Vannevar Bush)의 막대기들로 이루어진 아날로그 계산기는 1940년대까지 전쟁터를 포함한 전세계 곳곳에서 사용됐다. 그리고 곧 클라우드 섀년(Claude Shannon)에 의해 수식계산뿐 아니라 논리연산까지도 기계로 표현할 수 있음을 알게됐다. 1940년대는 숨막히는 2차대전의 열기만큼, 계산기에서 컴퓨터로 넘어가고자 하는 과학자들의 열정이 뜨거운 시대였다. 이 시기 넘어야했던 가장 큰 두가지 산은 이렇게 요약할 수 있다:
1. 기계식 계산에서 전자식으로 발전
2. 계산기에서 사람처럼 논리를 수행하는 진짜 컴퓨터로의 발전 (이를 위해선 if/else와 같은 조건문, for 와 같은 반복문 수행이 필요하다)
두가지 산을 가까스로 넘은 첫 발명품이 바로 우리가 어렸을적 배운 최초의 컴퓨터 에니악이다. 여기서 한가지 짚고 넘어갈 점은 사람들마다 인류 최초의 컴퓨터가 무엇이냐에 의견이 다르다는 점이다. 혹자는 1820년대 디자인된 찰스 베비지(Charles Babbage)의 미분방정식 계산기가 최초라 주장하고, 최근에 와서는 에니악보다 5년이 앞섰다고 밝혀진 독일의 Z3 머신 (Konrad Zuse)이 최초다라는 주장도 있다. 하지만 컴퓨터를 정의하는 여러가지 관점들 — 즉 막대기들로 이루어진 기계식도 컴퓨터냐? 아니면 계산기도 컴퓨터냐? — 에 따라 다른 답이 나오기 때문에 정답은 없다고 생각한다. 다만 개인적으로도 그렇고 많은 학자들도 동의하는 것은, 현대식 컴퓨터를 처음 상상한 사람은 지난회 소개한 앨런 튜링 (Alan Turing)이라는 사실이다.
거인의 뇌 에니악
80년대 초등학교를 다닌 사람에게 “세계 최초 컴퓨터는?” 이라는 질문을 던지면 자동으로 “에니악!” 이라는 답이 튀어나올 것이다. 그리고 그 순간 머리속엔 괴물같은 거대한 검은 기계와 그 아래 작게 서있는 가운입은 과학자의 이미지가 그려질 것이다. 그렇게 컴퓨터를 소개해야했던 그 시대의 교과서가 한편으론 좀 씁쓸하다. 차라리 그 당시에 한창 히트하던 애플 컴퓨터를 소개했으면 좀 더 컴퓨터가 친숙하게 와닿았을걸… 아무튼 교과서가 거짓말하진 않았다. 실제 에니악의 생김새는 그 당시 사람들에게도 “거인의 뇌” 라고 불릴만큼 쇼킹한 모습이었으니 말이다.
에니악은 1943년 펜실베니아 대학교에서 만난 30대의 물리학자 마우쿨리(John Mauchly)와 20대의 전기과 대학원생 에커트(J. Presper Eckert)에 의해 만들어진 최초의 전자식 범용(all-purpose) 컴퓨터였다. 에니악은 당시 포탄의 궤적계산을 위해 미 육군이 추진한 프로젝트였다. 에니악은 과학 천재(예를들어 튜링)에 의한 놀라운 상상의 결과물이라기 보단, 노력파 엔지니어 마우쿨리와 에커트의 열정이 낳은 작품이라고 해야 적절할 것같다. 이전에도 비슷한 형태의 전자식 계산기, 예를 들어 아이오와 대학의 ABC 컴퓨터등이 이미 만들어졌고 에니악의 개발자들은 이것들을 참조했으니 말이다. 하지만 에니악이 대단한 것은 그때까지 현실성 없어보였던 진공관 컴퓨터를 실제 유용한 계산에 쓰일수 있을 정도로 성능과 안정성면에서 혁신시켰기 때문이다.
왼쪽 그림은 실제 에니악에 쓰인 진공관인데, 1940년대까지 진공관은 라디오나 TV등의 전자제품에 사용된 기본 부품이었다. 기계식 계산기에서는 막대의 회전 각도에 따라 숫자를 표현했다면 진공관에선 전류의 흐름 여부와 강도에 따라 숫자를 표현할 수 있고, 여러개의 진공관을 배열해서 덧셈등을 수행하는 기본 연산기를 제작할 수 있었다. 하지만 진공관의 문제는 쉽게 타버리는 불안정성에 있었다. 에니악은 17,468개의 진공관으로 이루어졌는데 한개의 진공관이 탈때마다 컴퓨터는 정지했고, 사람이 들어가 진공관을 교체해야만 컴퓨터를 다시 가동할 수 있었다. 에니악의 완성전까지 사람들이 프로젝트의 성공을 의심한 이유가 여기에 있었다.
하지만 마우쿨리와 에커트는 뛰어난 전기설계능력과 근성을 발휘해, 결국 에니악을 미육군이 흡족해할만한 수준으로 완성했고, 에니악은 1955년까지 수소폭탄 설계나 포탄의 궤도계산을 위해 사용된다. 에니악의 성능과 안정성을 요약하면 이렇다.
- 평균 이틀에 한번 꼴로 컴퓨터가 멈췄고, 진공관을 가는데엔 15분 정도 걸렸다.
- 초당 5,000번의 덧셈/뺄셈과 357번의 곱셈을 수행할 수 있었다 (참고로 아이폰 3GS는 약 20억번의 곱셈을 수행할수 있다; 즉 에니악보다 5천만배 빠르다)
에니악의 결정적 한계는 프로그래밍에 있었다. 새로운 계산프로그램을 에니악에 집어넣기 위해선 위 그림처럼 사람 (6인의 여성)이 직접 케이블을 연결하고 스윗치를 On/off 하는 과정을 거쳐야 했고 흔히 며칠이 소요됐다. 즉 새로운 소프트웨어를 돌리기위해 사람이 기계를 고쳐야 했던건 버네버 부쉬의 아날로그 계산기와 마찬가지였다. 이것은 튜링의 상상과는많이 달랐다. 튜링머신에선 소프트웨어를 테이프에 텍스트로 쓰고 범용 튜링머신(하드웨어)이 텍스트로 기록된 소프트웨어를 수행한다. 고쳐야 하는 계산기와 이론적인 튜링머신, 그 사이 간극을 연결한 “마법사”가 바로 폰 노이먼이다.
마법사 폰 노이먼 (John Von Neumann, 1903-1957)
폰 노이먼을 도대체 어떻게 설명할 수 있을까? 지금 블로그의 모티브가 된 책 [1]에선 그를 “마법사 (Wizard)” 라고 표현했는데, 그 보다 더 적절한 표현을 찾을수 없을것 같다. 헝가리 출신으로 미국에서 활동한 유대인 학자. 그의 동료 학자들은 그를 “마지막 위대한 수학자”, “두려운 능력자”, 혹은 “인류보다 고등한 존재의 뇌를 가진 사람”등으로 표현했다. 폰 노이먼은 건드리지 않은 현대 과학 분야가 없을 정도로 많은 분야에 빛나는 업적을 남긴다.
예를들어:
- 경제학에 지대한 영향을 미친 게임이론을 창시
- 양자역학과 논리학(logic), 집합론(set theory)에 결정적 공헌
- 맨하탄 프로젝트에서 핵무기의 폭발에 관한 수학 모델을 세우고 계산
- 현대식 컴퓨터 구조를 수립 (폰 노이먼 구조라 흔히 불림)
그 시대 폰 노이먼의 무게는 프린스턴의 고등과학원이 설립되며 초빙된 4인중 한명(아인슈타인, 괴델과 함께)이었다는 사실에서 쉽게 짐작할 수 있다. 1930년 독일의 수학학회에서 무명의 괴델은 “라이프니츠의 꿈은 이룰 수 없음”을 증명하는 이론을 내놓았는데, 그 당시 그 의미를 다른 수학자들 누구도 이해하지 못할때, 폰 노이먼은 그 자리에서 “논리학은 이제 끝장을 봤구나” 인식하고 다신 논리학쪽으로 고개를 돌리지 않았다.
폰 노이먼은 천재성에 더해 어쩌면 운이 좋은 사람인지도 모른다. 왜냐하면 그는 수학자로서 당시 비교적 알려지지 않은 튜링의 논문을 읽고 그 중요성을 간파한 소수의 사람중 하나였고, 동시에 맨하탄 프로젝트의 멤버로 에니악 프로젝트에 참여해 실물 컴퓨터를 경험한 특혜받은 인물이었기 때문이다. 즉 튜링의 이상적인 컴퓨터와 고쳐야 하는 계산기 ‘에니악’ 두가지를 모두 이해한 천재에게, 현대 컴퓨터의 첫 실물 모형 EDVAC의 개발은 어쩜 너무 당연한 수순이었는지도 모른다. 그는 에니악 다음 모델의 컴퓨터 EDVAC을 디자인한 리포트 “First Draft of a Report on the EDVAC (1945)”를 쓰고 현대식 컴퓨터의 아버지라는 명예를 얻는다. 그가 쓴 리포트는 실물 EDVAC뿐 아니라 곧 미국과 유럽에서 에니악 다음 세대의 컴퓨터 디자인에 기본 모델이 되었다. 리포트는 이런 내용을 담고 있다.
- 컴퓨터의 메모리에 프로그램과 데이터를 모두 저장해서, 사람의 개입없이 자동으로 프로그램의 명령어를 하드웨어가 수행하도록 한다 (stored program). 에니악은 사람이 케이블과 스위치를 조작해서 프로그램 해야 했다.
- 이진법을 사용한다 (에니악은 10진법).
- Program Counter 등의 레지스터를 사용한다.
- 수리연산 (덧셈, 뺄셈등)들의 회로 설계
리포트의 가장 중요한 내용은 프로그램이 데이터와 함께 메모리에 올려진다는 stored program 이었고 이는 프로그램이 테이프에 기록된다는 튜링 머신의 실물구현이었다. 아인슈타인에 버금가는 사회적 존경을 받았던 폰 노이먼은 불행한 두 천재 튜링, 괴델과는 다른 삶을 살았다. 명성 얻기를 주저하지 않았던 그는 그의 리포트에 튜링의 영향에 대해 전혀 밝히지 않는다. 후세의 연구에 의해 그가 튜링의 논문에서 직접적으로 아이디어를 얻었음이 발견됐을 뿐이다. 폰 노이먼이 프린스턴에서 박사를 마친 튜링에게 그의 조교 자리를 제안했던 사실은 그가 얼마나 튜링에게 관심이 있었는지를 말한다. 또한 폰 노이먼은 마우쿨리와 에커트와 함께 아이디어를 구상했으면서도 단독 저자로 리포트를 작성했다. 이로인해 이들 사이에선 훗날 특허 싸움을 치르기도 한다. 이상적인 컴퓨터와 현실적인 기계 사이의 간극을 연결한 폰 노이먼, 하지만 그 둘 모두를 자신의 업적으로 드러내고 싶었던 것은 지나친 욕심이 아니었을까?
튜링 (Alan Turing) – 진정한 소프트웨어의 아버지
튜링은 수학자로서 가상의 튜링머신을 상상하는 것에 그치지 않았다. 영국으로 돌아가 EDVAC과는 다른 형태의 컴퓨터 ACE (1946)를 구체적으로 하드웨어 레벨까지 설계하고 심지어 11,200 파운드라는 구현 비용까지 산정했다. 하지만 비전없는 영국 정부 (심지어 그를 자살로까지 내몰았으니)에 의해 ACE 프로젝트는 이리저리 표류하고 우울한 성격의 튜링을 더 좌절시키고 만다.
폰 노이먼이 비록 20세기의 빛나는 천재이긴 하지만 컴퓨터, 특히 소프트웨어의 진짜 아버지는 튜링이라고 할 수 있다. ACE 컴퓨터는 하드웨어의 역할은 최소한으로 하고 소프트웨어가 복잡한 연산을 수행하는 구조인데, 70년대 들어 개발된 RISC 프로세서가 그 연장선이라 할 수 있다. 폰 노이먼이 컴퓨터의 역할을 빠른 계산기 정도로 규정하고, 컴퓨터 프로그래밍을 단순 노동으로 치부한 것은 그가 EDVAC에 어셈블러 (프로그래밍 도구로 사람의 언어를 이진법 코드로 변환) 를 구현하려한 그의 학생에게 화를 냈다는 일화에서 잘 드러난다 [2]. 반면 튜링은 1947년 ACE 컴퓨터를 설명하며 사람과 대결하는 체스 프로그램을 예제로 소개해, 아직 실물 컴퓨터를 구경조차 못해본 수학자들을 놀라게 했다(이 당시엔 O/S, 컴파일러등 소프트웨어라는 개념 자체가 존재하지 않았다). 50년이 지난 1996년에 드디어 딥블루 컴퓨터가 체스 챔피언을 이겼다는 사실은 튜링의 비전 그 깊이를 알게 한다. 튜링에게 있어 컴퓨터는 사람처럼 생각하고 사람과 대화할 수 있는, 가리워져 있으면 사람인지 컴퓨터인지 구별할 수 없는 지적 존재였던 것이다. 이 글의 처음 에니악 사진을 다시 한번 보고 튜링을 생각한다. 그의 상상력의 깊이에 무한한 감사를 표현하고 싶다.
– 박상민 http://twitter.com/#!/sm_park
[1] The Dream Machine: J.C.R. Licklider and the Revolution That Made Computing Personal
[2] The Universal Computer: The Road from Leibniz to Turing by Martin Davis