컴퓨터 이야기 #3 – 계산기에서 컴퓨터로

지난번 컴퓨터 이야기 #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뿐 아니라 곧 미국과 유럽에서 에니악 다음 세대의 컴퓨터 디자인에 기본 모델이 되었다. 리포트는 이런 내용을 담고 있다.

  1. 컴퓨터의 메모리에 프로그램과 데이터를 모두 저장해서, 사람의 개입없이 자동으로 프로그램의 명령어를 하드웨어가 수행하도록 한다 (stored program). 에니악은 사람이 케이블과 스위치를 조작해서 프로그램 해야 했다.
  2. 이진법을 사용한다 (에니악은 10진법).
  3. Program Counter 등의 레지스터를 사용한다.
  4. 수리연산 (덧셈, 뺄셈등)들의 회로 설계

리포트의 가장 중요한 내용은 프로그램이 데이터와 함께 메모리에 올려진다는 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

컴퓨터 이야기 #3 – 계산기에서 컴퓨터로”에 대한 16개의 생각

  1. 잘 읽고 있습니다. 학부 시절에 컴퓨터와 인간의 대결을 주제로 과제 발표한 적이있는데 바둑은 컴퓨터가 인간을 이기기 위해서는 몇백년이 지나도 이기기 힘들다고 하더군요 ㅋ

  2. 튜링의 1947년 ACE 강의는 정말 중요합니다. 그렇기 때문에 저는 이 시기의 가장 큰 산이 전자화와 디지털화라는데 동의할 수 없습니다. 오히려 이 시기의 가장 큰 산은 튜링이 강의에서 가장 많은 시간을 할애한 주제이기도 한 메모리입니다.

    전자화에 대해 튜링은 말합니다. “ACE는 전자식 디지털 계산기이다. 수학자의 입장에서 보면 디지털이라는 것이 전자식이라는 것보다 더 중요하다. 이 기계가 빠른 것은 전자식이기 때문이고 만약 기계가 빠르지 않았다면 예산을 얻을 수 없었을 것이므로 전자식이라는 것은 중요하다. 하지만 그것이 전부이다. 기계가 디지털이므로 숫자는 자릿수(digit)의 열로 나타내는데 이 열은 얼마든지 길게 할 수 있다. 그러므로 원하는 만큼의 정확도를 얻을 수 있다. 이 정확도는 부품을 더 정밀하게 깎거나 온도를 더 잘 조절해서 얻는 것이 아니라 기계를 조금 더 크게 만들어서 얻을 수 있다. (중략) 이것은 아날로그 기계와 큰 차이이다.”

    그래서 “자리수의 열”을 저장하기 위한 메모리가 중요해집니다. ENIAC의 가장 기술적으로 어려운 부분이 진공관이었는데 진공관이 메모리를 위해 쓰였다는 점을 기억하면 이 점이 명백해집니다. ACE강의는 수은 지연선 메모리를 제안했는데, 실제로 수은 지연선은 EDVAC의 메모리에 사용되었습니다. 저는 이른 시기의 컴퓨터 역사를 다루는 글들이 메모리에 더 주목할 필요가 있다고 생각합니다.

    • 좋은 의견 감사드립니다. 메모리의 중요성 강조하신것 저도 동의합니다. 다만 제가 강조한것은 전자화된 구현과 로직을 집어넣을 수 있는 ‘all-purpose computer’ 였습니다.그리고 결국 배열화된 메모리가 가능해진건 전자식 구현이 가능했기 때문이 아닌가 생각됩니다. 다시 말하면 전자화는 속도면에서도 중요하지만 배열된 메모리의 구현에도 중요했다는 점입니다. (댓글 남기시는 것 보고 너무 잘 알고 계셔서 잠시 구글 서치를 해봤었습니다. 역시 이력이 화려하시네요. 인상깊었습니다 🙂 )

  3. 예전에 레이커즈와일 저서.. ‘특이점이 온다’ 책을 읽고 인공지능에 관심을 갖게 되었습니다..

    혹시… 특이점이 온다 책을 읽으셨으면.. 초월적지능.. 인간의 지능을 뛰어넘는 인공지능(혹자는 인공지능이라고 하지말고.. 지능형 시스템이라고 해야한다는..)에 대해 어떤 견해를 가지신지 묻고 싶습니다..

  4. 한순간에 블로그의 모든 글을 읽어보았네요.
    정말 재미있는글 잘 읽었습니다.

    안타까운건 이런 재미있는 이야기들을 관련 전공을 배우는 학생들은
    대부분 알지 못한다는 점이네요.

  5. 먼저 좋은 글 정말 감사합니다.
    저는 인문계 고등학생입니다. 직업은 IT쪽으로 가지고 싶은 것은 확실합니다. 하지만 아직 가고싶은 학과를 정하지는 못했습니다. 보통 컴퓨터공학과로 많이 가지만 저는 수학과 가고 석박사에서 컴퓨터공학과를 전공하고 싶은데 수학과가 컴퓨터 분야에서 도움이 될까요??
    – 감사합니다.

    • 컴퓨터과학 이후의 분야에 따라 많이 달라질것 같네요. 수학 백그라운드가 많이 필요한 분야들 (그래픽스, 파이낸스등)으로 진출하게 되면 당연히 도움이 많이 되겠죠. 하지만 80% 이상의 컴퓨터 관련 직업은 수학전공과 상관없이 컴퓨터에 대한 지식, 프로그래밍 능력, 성실성이 필요한 부분입니다. 영어공부를 열심히해서 필요할때 미국이나 제 3국으로 언제든 진출할 수 있는 능력을 갖추는것도 장점이고요.

      • 저는 소프트웨어 분야로 진출하고 싶어요. 뭐… OS개발 이런 쪽으로 가고 싶은데 수학과 가면 컴퓨터공학과에서 절대 따라 올 수 없는 수학적 사고력, 음… 알고리즘? 이런 것을 얻을 수 있다는데 그런 건 아닌가요??

      • 제 간단한 대답은 아니오 입니다. 컴과 안에는 수학,논리학 과목이 포함되고, 그 과목들 깊이는 수학과와 다르지 않습니다. 응용이 수학과와는 다르게 컴퓨터에 맞추어져 있을 뿐입니다. 수학과에서 컴퓨터를 잘하던 때는 1960-70년대에나 있었던 일입니다.

  6. 컴퓨터에 대해서 요약된 책으로만 내용들을 보다가 이렇게 풀어서 글로 적어주시니 정말 너무나 술술 읽히고 시간 가는 줄도 모르게 빠져들었습니다. 폰 노이먼.. 욕심 많던 천재였다니 정말 흥미롭습니다. 올리신 다른 글들도 바로 읽어보려고 합니다! 감사합니다!

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중