오늘날 우리는 컴퓨터라 부른다... 를 읽고 나서
이 책이 던지는 중요한 메시지는 Abstract Thinking Power( 추상적 사고의 힘 )이다. 또한 프로그래머에게 가장 중요한 덕목은 바로 추상적으로 사고하는 능력이다.
컴퓨터 분야는 아주 빠르게 변하고, 프로그래밍 언어가 바뀌고 더 빠른 컴퓨터가 나와도 추상적 사고는 인간의 기본적인 능력이다.
이들의 이야기를 통해 컴퓨터를 프로그래밍하는 즐거움을 확인하고, 모든 분야의 독자들이 사람과 컴퓨터의 관계를 이해해 추상적 사고 의 힘을 알았으면 좋겠다.
블레즈 파스칼은 1643년에 덧셈과 뺄셈이 가능한 기계를 발명했고, 후에 1674년 쯤에 라이프니츠 가 곱셈과 나눗셈이 가능한 기계 모델을 만들게 되었고 라이프니츠는 이 기계에 대하여 이렇게 설명하였다.
재무를 담당하거나, 재산을 관리하고 상점이나 측량,지리,항해,천문 관측을 하는 사람들에게 실제적으로 유용한 이 기계에 찬사를 보냅니다. 복잡한 숫자를 계산하는 것은 이제 기계에게 맡기고 사람은 그 수고와 시간을 허비하는 대신 더 가치 있는 일에 집중할 수 있습니다.
라이프니츠는 우리에게 남긴 것은 기계가 인간대신 계산하는 것에 대한 중요성을 남겼고, 이러한 꿈은 무한한 인간의 상상력을 돌아보게 하고 이후 시대에서 펼쳐지는 발전을 평가하는 기준을 제시했다.
이야기의 주인공이 라이프니츠와 17세기 유럽 귀족들의 세계에서 조지 불로 바뀌기까지는 두 세기라는 시간이 흘러야 했다. 젊은 라이프니츠를 깊이 매료시킨 아리스토텔레스의 고전 논리가 있었는데, 다음과 같은 문장이 포함되어 있다.
모든 식물은 살아있다.
지능이 있는 하마는 없다.
어떤 사람들은 영어를 사용한다.
불은 이 예제를 보고,'하마' 혹은 '사람'과 같은 단어가 개별적인 것의 종류나 집단을 나타낸다는 사실이 논리에서 아주 중요하다는 점을 깨달았다. 즉, 이 단어가 '살아 있는 것들의 집단' , '하마라는 동물의 종류', '사람 이라는 집단' 을 가리킨다는 뜻이다. 여기서 끝이 아니다. 불은 이러한 집단을 어떻게 대수학으로 표현할 수 있을지 생각해 냈다.
그 방법은 단어와 문자에 의미를 1:1로 대응시켜서 표현하고, 수학에서 1+1 은 2가 되듯이, 각 문자의 대한 모든 사칙연산도 논리적으로 가능했다.
x를 '하얀 것들' y를 '양들' 이라고 가정한다면, xy는 '하얀색의 양들'을 나타내고, x+y 는 '하얀 것들 과 양들' 을 나타낸다. 이것이 우리가 논리학에서 사용하는 합집합,교집합의 원리가 된다.
불은 집단에서 사용하는 연산을 숫자에 사용하는 곱셈과 같은 방식으로 생각했으나, 아주 중요한 차이를 발견했다. yy 는 무엇인가?
이 질문에 대한 답변은 물론 논리적,수학적으로 증명이 된 이야기이며, 이 질문이 불의 전체적인 논리학 체계의 기초가 된 굉장히 강력한 힘을 가진 질문이다. 저 이야기에 대한 내용은 다른 장에서 다루도록 하겠다.
프레게는 수학에서 사용하는 모든 연역 추론을 포함하는 논리의 체계를 만들고자 했다. 불은 일반적인 산술법에서 시작해서 산술법의 기호를 논리 관계에 차용했다. 프레게는 자신이 만든 논리 체게를 근본으로 해서 산술법을 포함하는 수학을 떠받치는 구조를 만들고자 했다. 이것을 위해서는 논리적인 관계를 표현하는 자신만의 기호를 만들어서 기존 수학과의 혼란을 피하는 것이 중요하다고 생각했다.
그리고 불이 논리적 명제 간의 관계를 설명하는 명제를 2차적인 명제로 생각한 데 반해 프레게는 논리를 연결하는 바로 그 관계가 개별 명제의 구조를 분석하는 데 사용될 수 있다고 보았다. 그리고 이러한 관계들을 논리 체계의 기초로 사용했다. 바로 이 핵심적인 통찰이 널리 받아들여졌고 현대 논리학의 기본이 되었다.
그의 논리 관계 구조는 이렇다.
모든 말들은 포유류다 라는 문장을 해석할 때,
~ 이라면(if) ~ 이다(then)
를 사용해 이렇게 표현한다.
x가 말(horse) 이라면 x는 포유류(mammal)다.
여기서 어떤 x라도 상관 없이 모든 x에 대해 주장이라면,
(∀x)
라고 기호를 통해 표현하며, 특정한 x에 대해서만 관계가 성립한다면 ,
(∃x)
이라고 표현한다. 논리관계에서 사용되는
∀, ⊃
이러한 기호들은 프레게를 통해 나온 것이다.
오늘날 프레게의 논리 체계는 수학,컴퓨터 과학, 그리고 철학과 학부의 전공 과목에서 배우는 표준이다. 이 체계는 방대한 연구의 기초를 제공했고, 간접적으로 튜링이 범용 컴퓨터라는 아이디어를 만드는 데 기여했다.
그러나 모든 것이 완벽할수는 없었다. 프레게의 논리에서, 전제들에서 시작해 원하는 결론에 이르지 못하였을 때 그 이유가 논리 추론 과정에 허점이 있었는지 아니면 단지 전제들로부터는 그러한 결론이 도출되는 게 불가능한지 구분할 방법이 없다.
마치 프로그래머가 알고리즘을 만들 능력이 없는 건지, 아니면 그런 알고리즘은 존재할 수 없는지 구분할 방법이 없다는 의미와 같다.
다비트 힐베르트는 특유의 낙천적인 태도로 모든 수학자에게는 이런 신념이 있다고 말했다.
"모든 수학 문제는 반드시 풀어낼 수 있는 방법이 있습니다. 이러한 믿음은 우리가 연구를 하는 강력한 원동력 입니다. 우리는 끊임없는 이 내면의 소리를 듣습니다. 문제가 있으니 답을 찾아보자. 순수한 논리를 사용해 찾을 수 있을거야"
와 같은 철학을 가지고 있기에, 당시에는 도저히 접근할 방법이 없다고 여겼던 문제들에 대해서도 두려워 하지 않았습니다.
이러한 생각을 가진 힐베르트는 그의 수학적 업적과 사상은 컴퓨터 과학의 기초를 다지는 데 중요한 역할을 했습니다. 특히, 힐베르트의 연구는 수학적 논리와 알고리즘 이론에 큰 영향을 미쳤습니다. 그가 가진 3가지의 대표적인 업적을 살펴 보겠습니다.
19세기 말과 20세기 초, 수학의 여러 분야에서 기초적인 위기가 발생했습니다. 특히 집합론에서 러셀의 역설(Russell's Paradox) 같은 문제가 제기되면서, 수학의 기초를 재검토할 필요성이 대두되었습니다.
이러한 위기 속에서 힐베르트는 수학을 확고한 기초 위에 세우고자 하는 목표를 가지게 되면서 Formalism(형식주의) 과 같은 수학을 엄격한 형식 체계로 구축하려는 시도를 했었습니다.
형식주의(Formalism)는 수학과 논리학에서 특정한 철학적 접근을 의미하며, 수학적 진리와 명제를 형식 체계(formal system) 내에서 기호와 규칙을 통해 다루는 것을 강조합니다.
결정 가능성 문제(Decidability Problem)는 주어진 수학적 명제가 참인지 거짓인지를 결정할 수 있는 절차나 알고리즘이 존재하는지에 관한 문제입니다.
힐베르트는 모든 수학적 문제에 대해 기계적으로 해결 가능한 방법을 찾으려고 했습니다. 이 문제는 후에 앨런 튜링(Alan Turing)과 알론조 처치(Alonzo Church)에 의해 연구되었고, 이는 컴퓨터 과학의 기초가 되는 튜링 머신(Turing Machine) 개념과 관련이 있습니다.
힐베르트는 수학의 모든 명제를 형식적인 증명으로 환원하려는 프로그램을 제안했습니다. 이 프로그램은 수학적 증명과 계산의 자동화 가능성에 대한 연구로 이어졌으며, 이는 현대 컴퓨터 과학의 자동 증명 및 형식 검증 분야에 영향을 주었습니다.
튜링은 알고리즘이란 순차적으로 적힌 규칙으로 사람들이 요리책의 레시피를 따라 하듯이 기계적으로 정확하게 따라 하는 것이라는 사실을 잘 알고 있었다. 그러나, 규칙 자체보다 사람들이 규칙을 따라 할때 어떤 일들이 벌어지는지에 관심을 가졌다.
이러한 과정을 통해 튜링은 인간의 연산방식을 논리적으로 표현하였고, 표현한 형태는 이렇다.
사람이 동시에 다룰 수 있는 기호는 , 또한 정확한 계산을 위해서는 얼마나 많은 기호를 동시에 다루어야 할까? 그에 대한 답은 첫번째는 상대적이지만, 두 번째의 대한 답은 절대적인 1 개 라는 것이다. 왜냐하면 여러개의 기호를 계산 하는 방식은 연속해서 여러 개의 기호를 계산하는 방식으로 대체할 수 있기 때문이다.
그리고 4231 , * , 77 이 3가지의 대한 것을 보지 못한거나, 보고 난 뒤에도 기억하지 못한다면 연산을 그 누구도 할 수 없다는 것이다.
이제 계산하던 사람을 기계로 대체하는 모습을 쉽게 상상 할 수 있다.
정보의 코드가 쓰여 있는 자기 테이프가 기계 안에서 좌우로 이동하는 그림.
그리고 이 기계는 각 단계에서 테이프에 적혀진 오직 한 개의 기호만을 읽도록 설계 되어 있다.
이 것이 Turing Machine (튜링 기계) 의 개념이다.
핵심은 이 기계를 실제로 만드는 것이 아니다. 결국 수학적인 추상화 일 뿐이며, 정말 가장 중요한 것은, 우리가 계산이라고 부르는 과정을 분석한 결과, 모든 계산이 가능한 것들은 튜링 기계에서 동작하는 알고리즘으로 표현 할 수 있다는 사실이다.
그래서 어떠한 특정한 문제든, 튜링 기계에서 수행 할 수 없다고 증명한다면 그러한 문제를 해결하는 알고리즘은 존재하지 않는다고 결론 내릴 수 있다. 이것이 튜링이 결정 문제를 해결하는 알고리즘이 존재하지 않는다고 증명한 방식이다.
이것으로 힐베르트는 완전한 알고리즘을 꿈을 꾸었지만 , 그의 이론과 꿈은 무너졌지만, 범용 컴퓨터의 수학적 모델을 만드는데 있어서 엄청난 도움을 주게 되었다.
1945 년 6월 폰 노이만은 First Draft of a Report on the EDVAC ( 에드박 보고서 최초 초안 )을 작성했다. 이 보고서에서 노이만이 제안한 에드박은 사실상 튜링의 범용 기계를 현실화 한 모델 이였다. 에드박에는 메모리 라고 불리우는 저장 기능이 있어서 코드로 된 명령어와 데이터를 함께 저장할 수 있었다.
에니악이 계산을 위해 수를 십진수로 나타낸 반면에 에드박은 이진법을 사용해 계산을 단순하게 만들었다. 또한 에드박은 논리 제어 기관을 두고 메모리부터 명령어를 한 번에 한 개씩 계산 부분으로 넘겨주었다. 이렇게 컴퓨터를 구성하는 방식은 폰 노이만 구조라고 불리우게 되었고, 에드박 당시와는 아주 다른 부품을 사용하는 현대의 컴퓨터 역시 이 기본구조를 따르고 있다.
과거로부터 이어져 미래를 가로지르며 300년이라는 여정을 통해 컴퓨터라는 것이 생겨났다. 우리는 지금 현재 매우 추상적으로 변해버린 '컴퓨터' 라는 개념을 쉽게 이해해버리고 간과해버린다.
컴퓨터를 만들려고 했던 수 많은 사람들은 모두 인간이 생각하는 방식의 근원을 찾고자 했으며, 이러한 각각의 노력,열정,의지, 공헌들이 모여 촘촘한 지식의 기반을 만들었고, 범용 디지털 컴퓨터를 가능하게 했다. 이 책은 그렇다.
현대 컴퓨터의 근간을 이루는 아이디어와 그들이 처했던 삶의 배경을 보여준다.
그리고, 마침내 그들의 꿈은 현실이 됐다.