트위터에서 역자이신 박상민 님이 인생에서 제일로 꼽을 만큼 좋은 책이라고 얘기하는 걸 보고 이 책을 알게 되었다. 처음 이 책의 제목을 보았을 때 좀 의아한 생각이 들었다. 아마 "무엇을?"이라는 의문이었을 것 같다. 무엇을 컴퓨터라고 부른다는 것이지? 라는 생각이었다.
뛰어난 프로그래머의 한 가지 특징은 추상화의 단계 사이를 너무나 쉽게 넘나드는 능력이다.
- 도널드 커누스(Donald Knuth)
이 책은 지금의 컴퓨터가 만들어지기까지의 과정을 다루지만 그동안 많이 봤던 대로 MIT의 TMRC나 벨 연구소의 얘기보다 훨씬 과거까지 간다.
이 책은 현대 컴퓨터의 근간을 이루는 아이디어와 그 아이디어를 발견한 사람들의 이야기다.
오늘날 컴퓨터 기술이 눈부신 속도로 발전하고 사람들은 공학 기술의 놀라운 성취에 감탄하지만, 이 모든 걸 가능케 한 논리학자들은 쉽게 간과하곤 한다. 이 책은 그들에 대한 이야기다.
책에 나오는 대로 컴퓨터가 만들어지기까지 그 전의 논리학자들에 대한 이야기이다. 이야기의 시작은 1600년대의 라이프니츠부터 시작된다. 처음 책을 읽을 때 느낌은 여기서부터 시작한다고? 같은 기분이었다. 책의 대부분은 수학과 논리학에 대한 이야기였다. 그래서 수학을 잘 못하는 나한테는 꽤 어려웠다. 많은 증명과 논리학에 대한 이야기로 이어지는데 설명이 꽤 자세하기는 하지만 아무래도 수학을 잘 아는 편은 아니라서 대략적인 흐름 외의 자세한 부분까지는 이해하기가 어려웠다.
그럼에도 꽤 흥미롭기는 했다. 지금의 내가 접하는 컴퓨터는 모두 디지털로 된 것이지만 지금의 컴퓨터가 만들어지기 까지 수많은 수학자들이 서로 논쟁하고 자기 생각을 증명하면서 발전해 오는 과정에서 결국 튜링과 폰 노이만까지 이어지고 이들이 과거의 연구를 구현하면서 결국 컴퓨터가 만들어졌다는 것은 놀랍기까지 하다. 한편으로는 내가 수학을 더 잘했으면 이 책이 훨씬 더 재밌을 것이라는 생각도 들었다.
라이프니츠의 비전은 인간의 모든 지식 또한 같은 방식으로 풀어내는 것이었다. 그는 범용의 수학 언어로 온 세상 지식을 표현하고 계산법이 지식과 지식 사이의 논리적 관계를 설명할 수 있는 완전한 지식의 백과사전을 꿈꾸었다.
이 체계는 대단히 강력한데, 그중 이 문자 체계를 사용하면 말이 안 되는 것(거짓된 사실)들은 표현할 수 없다는 점이 특히 중요합니다. 무지한 사람은 그 체계를 사용할 수 없습니다. 아니면 그 체계를 사용하면서 똑똑해질 것입니다.
라이프니츠는 숫자를 0과 1의 연속으로 표현하는 이진법을 발견했을 때 그 기호 체계의 간결함에 감탄했다. 그 간결한 체계가 고유한 성질을 드러내는 데 유용할 거라 믿었다. 비록 그의 믿음은 증명되지 않았지만 라이프니츠가 이진법에 특별한 관심을 보였다는 부분은 현대 컴퓨터 체계에 있어 이진법이 얼마나 중요한지를 살펴볼 때 놀랍다고 할 수 있다.
능력이 부족한 다른 사람들이 그의 연구를 무시하는 상황에서 프레게는 인생 전체의 노력을 집대성하는 책 두 번째 편의 출간을 앞두고 있었습니다. 그러나 자신의 핵심적인 가정에 오류를 발견한 바로 그 순간에도 개인적인 실망은 접어두고 지적인 즐거움을 표현하며 답장을 보냈습니다. 보통 사람이라면 거의 상상하기 어려운 일이었고, 인간이 명성이나 지위를 좇기보다 창조적인 일과 지식에 헌신할 때 얼마나 위대해질 수 있는지 보여 주는 사례라 할 수 있습니다.
그의 목표는 모든 수학의 기초에 논리가 있음을 보이는 것이었다. 다시 말해 논리가 다른 수학 분야 전체에 근본을 제공해야 했다. 이게 설득력을 갖기 위해서 프레게는 논리를 개발하는 과정에서 기존의 논리를 사용하지 않아야 했다.
그는 한 치도 틀림없이 정확한 문법을 갖춘 인공적인 언어인 개념 표기법(Begriffsschrift)을 만들어 이를 해결하려 했다. 이를 사용하면 논리적인 추론이 기호가 배열된 패턴의 단순한 기계적인 처리로 대체된다. 이것은 또한 정밀한 문법을 갖춘 최초의 정규화된 가상 언어였다. 이 관점으로 볼 때, 프레게의 개념 표기법은 오늘날 사용하는 모든 컴퓨터 언어의 시조인 것이다.
괴델은 근본적으로 사람의 사고가 컴퓨터와 동일한가라는 질문을 던졌다. 인공 지능을 둘러싸고 여전히 격렬하게 논쟁이 벌어지는 질문이다.
분명히 우리가 생각하는 연상(computation)의 정의는 급격하게 변했다. 연산의 정의를 이렇게 넓힐 수 있도록 한 개념적 토대는 1935년 앨런 튜링이 힐베르트의 논리 수학 문제를 해결하는 과정에서 만들어졌다.
중요한 점은 튜링이 우리가 계산이라고 부르는 과정을 분석한 결과 모든 계산이 가능한 것들은 튜링 기계에서 동작하는 알고리즘으로 표현할 수 있다는 사실이다. 그래서 어떤 특정한 문제를 튜링 기계에서 수행할 수 없다고 증명한다면 그러한 문제를 해결하는 알고리즘은 존재하지 않는다고 결론 내릴 수 있다. 그리고 이게 튜링이 결정 문제를 해결하는 알고리즘이 존재하지 않는다고 증명한 방식이다. 이 과정에서 튜링이 알고리즘이 존재하는 모든 문제를 계산할 수 있는 튜링 기계를 어떻게 만드는지를 보였다. 바로 범용 컴퓨터의 수학적 모델을 만든 것이다.
에니악이 계산을 위해 수를 십진수로 나타낸 반면에 에드박은 이진법을 사용해 계산을 단순하게 만들었다. 또한 에드박은 논리 제어 기관을 두고 메모리부터 명령어를 한 번에 한 개씩 읽어 계산 부분으로 넘겨주었다. 이렇게 컴퓨터를 구성하는 방식은 '폰 노이만 구조'라고 불리게 되었고 에드박 당시와는 아주 다른 부품을 사용하는 현대의 컴퓨터 역시 여전히 이 기본 구조를 따르고 있다.
오늘날 우리가 사용하는 개인 컴퓨터는 칩 하나로 만들어진 범용 컴퓨터라 볼 수 있는데 칩을 구성하는 실리콘 마이크로프로세서는 시간이 갈수록 더 복잡해졌다. 그 반대의 방향인 RISC(Reduced Instruction Set Computing) 구조는 칩 내부에 최소한의 명령어들만 사용하고 그 외의 필요한 기능들은 프로그래밍으로 제공된다. 많은 컴퓨터 제작사들이 사용하는 RISC 구조는 에이스(Automatic Computin Engine)의 철학과 아주 비슷한 방향이라고 볼 수 있다.
Comments