Interpreting Compiler

위대한 컴퓨터가 할 수 없는 것

by

8960774383_f
아무렇지도 않게 생각하는 수많은 일들은 사실 아무렇지도 않을 수가 없게 마련이다. 초당 수천~수십만 개의 문자열을 전송하는 디지털 통신이 아무렇지도 않게 똑같은 데이터를 무제한 복제해내는 일은 너무나 당연해 보이지만 사실 그렇게 당연한 일은 아니었다. 누군가 오류 정정 코드를 쓰기 전까지는. 검색창에 검색어를 입력하면 세계 어딘가의 웹문서 결과가 튀어나오는 일도 이제야 당연하게 보이지만 사실 역시 당연한 일이 아니었다. 구글이 페이지랭크 알고리즘을 서비스에 도입했고, 그 전의 선배들이 인덱싱 기술로 웹을 정리하기 전까지는. 미래를 바꾼 아홉 가지 알고리즘은 이런 컴퓨터의 역사다. 암호화 기술, 압축 기술, 디지털 서명 등 우리가 일상적으로 쓰지만 사실 일상적이라고 보기엔 처음 시작은 너무나 예외적이었던 기술이 어떻게 탄생하게 됐는지에 대한 배경이 흥미진진하게 설명된다. 이런 과정은 대부분 일종의 수학 퀴즈처럼 보여서, 실제로 수학 퀴즈가 그렇듯 머리가 약간 뻐근해지게도 만든다. 그렇다 해도 퀴즈는 원래 독특한 재미가 있게 마련이다. 예를 들어 '리던던시 트릭'이라거나 '체크섬 시스템' 같은 알고리즘의 등장 배경을 따라가다보면 바둑 포석을 되짚는 듯한 느낌도 든다. 이런 재미의 상당 부분은 실제 알고리즘을 설명하는 대신 비유로 원리를 설명하는 저자의 친절함 덕분이다. 저자 존 맥코믹은 리던던시 트릭을 설명할 때 장황한 이론 배경을 늘어놓는 대신 "'12345'를 전송하는 것보다 'one two three four five'라는 단어를 전송하면 five에 오류가 생겨 fiqe로 전송되더라도 컴퓨터는 이를 '5'라고 알아들을 수 있다"는 식으로 얘기한다.

그러니까 평범한 성인은 잘 달릴 줄 안다. 하지만 우리 모두 한 때는 아기였다. 어린 시절에는 뒤뚱거리며 일어서다 반복해서 넘어졌고, 아장아장 걷다가 무릎이 까지는 과정을 반복하면서 잘 달리는 오늘에 이른 것이다. 이 책은 지금의 컴퓨터 기술들도 막 벽을 잡고 일어서던 아기처럼 작은 아이디어에서 출발해 오늘날의 눈부신 성능까지 발전해 왔다는 걸 보여준다.

이런 쉬운 설명들을 통해 모든 알고리즘을 재미있게 이해할 수 있던 건 물론 좋았다. 하지만 개인적으로 가장 인상적인 건 마지막 단락이었다. 이렇게 무엇이든 다 해결해낼 수 있을 것 같았던 컴퓨터가 도저히 할 수 없는 일이란 과연 무엇인지에 대한 설명.

IMG_0212

조금 괴상하게 들릴지 모르겠지만 이 단락의 얘기를 요약하면 이렇다.

"컴퓨터는 반드시 못 하는 일이 있게 마련이다."

그러니까 뭘 할 수도, 하지 못할 수도 있다는 게 아니다. '반드시 못 하는 일'이 '반드시 존재'한다는 얘기다. 이 단락을 읽으면서 꽤 많은 생각을 하게 됐다. 도저히 해결할 수 없는 문제라는 게 컴퓨터에게 존재한다면 그건 그 자체가 바로 이런 계산하는 기계를 만들어낸 사람도 도저히 해결할 수 없는 인식의 한계가 존재한다는 뜻이다. 사실, 이는 처치-튜링 명제라는 명제에 대한 이야기인데 효과적으로 계산 가능한 알고리즘이 존재한다면 기계는 그 알고리즘을 계산할 수 있다는 것이다. 알쏭달쏭한 얘기지만 인간이 고안할 수 있는 유효한 계산식은 기계 또한 계산할 수 있다는 내용이고, 이는 기계가 계산할 수 없는 한계란 건 인간 또한 고안해 낼 수 없다는 대우로도 성립한다.

자, 이렇게 생각해 보자. 기계가 계산할 수 없는, 그러니까 컴퓨터가 풀 수 없는 문제는 존재한다. 이미 증명이 됐다. 그렇다면 인간의 한계도 존재한다. 즉 우리는 절대로 벗어날 수 없는 한계가 존재한다는 뜻이다. 이럴 때 늘 등장하는 얘기가 초월자의 존재다. 신 말이다. 그러니 조금 더 나아가보면 어떨까. 인간에게 한계가 있고, 인간은 풀 수 없는 문제가 존재한다. 그리고 인간을 신의 컴퓨터라고 생각해 보자. 그렇다면 신의 컴퓨터인 인간이 풀 수 없는 문제가 존재한다는 건 신 또한 한계가 있다는 얘기 아닐까. 수학과 논리와 알고리즘의 세계는 참 재미있다. 사변에 잠기게 만든다.