의외로 많은 사람들이 컴퓨터와 수학간에 얼마나 밀접한 연관이 있는지를 잘 알지 못하더군요. 심지어 컴공과 지망생들 중에도 모르는 경우가 드문드문 보이니 아마 할 말 다 한 것일겁니다. 하지만 컴퓨터라는 놈은 애초에 그 탄생부터가 수학으로부터 왔으며 컴퓨터의 이론적 발전은 거의 모두 수학을 통해 이루어졌습니다. 물론 많은 과학 분야 역시 이론적 발전이 수학과 상당한 연관을 가지고 이루어지긴 했습니다. 하지만 그런 사례들을 보면 대다수 경우 수학이 일종의 도구로서 사용됬는데 컴퓨터는 빼박 수학이 완전히 그 코어중의 코어에 들어있습니다.
일단 컴퓨터의 탄생 부터 봅시다. 기계적 계산기는 제법 오랜 역사를 가지고 있지만 현대적 ‘컴퓨터’라 할만한 것의 이론적 시조는 역시 튜링머신이라 할 수 있을 것입니다. 튜링 머신이 탄생한 배경을 보기 위해서는 19세기와 20세기 수학계의 전반적인 풍조를 먼저 살펴봐야합니다. 근현대는 수학의 발전에 있어 아주 결정적인 영향을 끼친 시기였는데, 이 시기의 수학계는 엄밀히 정의 된 공리를 뼈대로 삼아 수학을 재구축하는 작업에 한창 매달려 있었습니다. 그 전에서 엄밀성, 공리, 공리에 기반을 둔 증명 등 이런 개념들은 당연히 존재했지만 근현대에는 그것들을 예전 선조들보다 훨씬 더 극단적인 위치까지 밀고 나갔거든요.
근현대 이전 수학자들이 무언가 세상에 근원적인 진리와 정답이 있을거라 믿었다면, 근현대 이후 수학자들은 그딴건 없고 그냥 한 공리의 정의에 의거해 볼시 무슨 결론을 얻을 수 있느냐가 중요하다 생각했습니다. 초/중학교 때 0.9999~ = 1이라고 배우셨다면 그건 얘기를 끝까지 다 해준게 아닙니다. 0.9999~ = 1이라는 말의 뒤에는 코시의 극한에 대한 정의에 의거해 볼 시 0.9 + 0.09 + 0.009 + 0.0009 ~~~ 를 무한히 반복한 극한값은 1과 동일하다는 이론적 기반이 살짝 생략되어 있거든요. 그러니 0.9999~ 는 1과 같지도 않고 다르지도 않습니다. 그저 코시의 극한에 대한 정의에 의거해 볼 시 저 둘이 동일할 뿐이며 그 정의가 수학의 나머지 부분들과 소소한 몇가지를 제외하면 아무런 모순도 야기하지 않을 뿐입니다. 우주의 어디에도 0.9999~ = 1 이라 적혀있는 우주적 진리의 석판 따위는 없습니다. 그냥 우리 인간이 그걸 어떻게 정의하느냐, 이게 다입니다.
왜 뜬금포 수학얘기를 꺼냈는지 아마 의문이 드실 수도 있을텐데, 컴퓨터의 탄생은 이 시기 수학계의 풍조를 이해하지 않고는 얘기할 수 없기 때문입니다. 컴퓨터는 결국 이 한가지 질문에서 태어났거든요.
‘만약 세상에 우주적 진리란 없으며 수학이 인간이 정의한 공리들의 상호작용일 뿐이라면, 몇가지 논리적 규칙을 따르는 기계가 얼마나 수학을 할 수 있을까?’
즉, 수학이 공리라는 규칙을 따르는 일련의 게임일 뿐이라면 단순히 규칙을 따르기만하는 기계 역시 수학을 할 수 있지 않을까, 그리고 만약 할 수 있다면 얼마나 할 수 있을까, 이걸 수학자들이 궁금해하고 있던거죠. 그런 수학계에 어느날 앨런 튜링이라는 젊은 천재가(네 그 독 먹고 죽은 동성애자 수학자 앨런 튜링 맞아요) 끼어들어 증명 논문을 하나 발표했고, 그 증명에서 튜링은 매우 흥미로운 개념을 하나 제시했습니다. 그리고 그게 바로 튜링머신, 모든 컴퓨터들의 이론적 할아버지입니다.
튜링머신은 이름과는 달리 무슨 톱니바퀴가 돌아가는 그런 기계는 아닙니다. 대신, 튜링머신은 무한히 긴 테이프와 관측/기록 장치로 이루어진 기계입니다. 그 테이프는 각기 작은 구획들로 나뉘어져있는데, 관측/기록 장치는 그 테이프 위를 오가며 각 구획들을 관측합니다. 그 구획들에는 0이나 1이 적혀있습니다. 관측/기록 장치는 몇가지 간단한 지시사항에 의거해 결정을 내립니다. 내가 지금 357번 구획 위에 올라가있고 내가 지금 107번 지시사항을 펼쳐봐야한다면 일단 그 지시사항을 펼쳐봅니다. 그럼 그 지시사항에는 대충 이런게 적혀있습니다.
1. 만약 357번 구획에 0이 적혀있다면, 0을 1로 수정하고 92번 구획으로 이동해 21번 지시사항을 펼친다.
2. 만약 357번 구획에 1이 적혀있다면, 아무것도 수정하지 않은채 561번 구획으로 이동해 다시 107번 지시사항을 펼친다.
튜링머신은 그럼 지시사항에서 과정을 종료하란 말이 나올 때까지 이 짓을 무한히 반복합니다. 이 과정이 끝나고나면 무한히 긴 테이프의 구획들은 여러 부분이 수정되어있을겁니다. 그럼 이 수정 된 테이프의 이진법 표현이 바로 얻고자 하는 답입니다.
튜링은 이 튜링머신을 통해 충분히 다양한 종류의 수학을 할 수 있다는걸 보였습니다. 사칙연산은 기본으로 하고 그 외에 이런저런 다양한 것들도 얼마든지 할 수 있다는 말이였죠. 물론 ‘무한히’라는 단어에서 이미 짐작하셨겠지만 이 튜링머신은 이론적 물체이고 튜링이 그걸 실제로 만들어 보여준건 아닙니다. 대신 수학적/논리적 추론을 통해 이런 이론적 물체가 실제로 존재한다면 얼마든지 작동할 수 있다는걸 보여준겁니다. 그 후 수학자들은 튜링머신에 달려들어서 이런저런 사고실험을 했고 컴퓨터과학이라는 학문을 탄생시켰습니다.
저희의 컴퓨터는 이 이론적 튜링머신과 매우 까마득한 차이를 가지고 있는 것처럼 보일 수 있습니다. 하지만 실제로, 저희 컴퓨터의 가장 근원적인 곳에서는 여전히 현대 버젼의 튜링머신이 돌아가고 있습니다. 컴퓨터과학자들은 반세기 동안 튜링머신이 할 수 없는걸 할 수 있는 컴퓨터를 개발해내지 못했고, 여전히 저희는 컴퓨터 언어의 완벽성을 가늠하기 위해 ‘이 언어는 튜링머신이 할 수 있는 모든 업무를 수행할 수 있는가?’라는 질문을 던집니다. 그리고 이 질문을 무사히 통과한 언어에게는 튜링완전(Turing-complete)이라는 영광스러운 칭호를 던져주지요. 양자컴퓨터는 좀 다르다 할 수 있을지 모르지만, 컴퓨터공학자들은 양자컴퓨터마저도 튜링머신이 하지 못하는 일을 수행할 수는 없다고 말합니다. 단지 튜링머신이 하는 일을 훨씬 더 효율적으로 수행할 뿐입니다. 그리고 이 모든 이야기에서 볼 수 있다시피, 컴퓨터와 수학은 아주 밀접한 연관을 지니고 있습니다. 컴퓨터는 수학에서 다루는 추상적 물체들의 추상적인 관계가 얼마나 현실적인 힘을 지니고 있는지를 나타내주고 있으니까요.
Comment ' 13