정보수학
상태와 전환, 자연과 계산을 나타내는 근본적인 속성들은 어떻게 이해해야 할까? 본문
앞서 서술했듯이 프로그래밍의 본질은, 튜링이 Universal Machine을 설계한 사상과도 같듯이, 상태와 전환에 대한 내용으로 바꾸어 생각해볼 수 있다. 즉 0과 1로 기록된 저장장치(상태를 기억하는)와 약속에 의해 그 상태간에 움직이는(전환하는) 두가지가 핵심 속성이 된다. 프로그래밍이란 계산의 규칙을 만드는 것이고, 어떤 무한한 상태1에서 어떤 상태2로 일정한 패턴대로 전환되는 일련의 과정이라 이야기해볼 수 있다. 더 간단하게는 "메모리"와 "코드"로 분류된다.
수없이 펼쳐진, 고유의 이름이 붙여진 무한한 상태방을 상상하고, 그 방 사이를 전환시키는 것이 프로그래밍의 본질이라는 이야기다. 각 방은 프로그램이 진행될때 변하는 각기 그때그때 상태들의 총체이다.
여기서 이 두가지 속성의 구조를 의심해볼 수 있는 몇가지 다른 학문의 시점이 있다.
맨 먼저 칸토어의 무한이다. 칸토어는 집합론을 통해 수의 무한한 크기를 다루었다. 그것은 어찌보면 이 상태에 대한 이론일 수 있다. 우리는 숫자로 상태를 나타낼 수 있고, 그 상태의 무한한 집합이 과연 어떤 속성을 지니고 있는가를 분석했다고 볼 수 있다.
하지만 이 관점에서는 칸토어는 전환에 대해서는 다루지 않았다. 상태는 다뤘는데 말이다. 그런데 여기서 의문이 드는 것은 과연 이 상태와 전환이라는 것이 구분될 수 없는 속성인가 물을 수 있다. 혹시 그것은 사실은 같은 것이어서 칸토어의 무한이라는 논의는 전환에도 쉽게 전이되어 정리될 수 있는 것은 아닌가?
다음으로, 튜링의 결정 불가능성에 대한 정립은 다행히도 이 "전환"에 더 집중되어 있다. 상태가 다른 상태를 포함하는 자기 참조적인 무한이 칸토어의 무한 집합에 있듯, "전환"도 몇가지 상태가 서로 전환되게 구성하여 무한의 전환 사이클을 만들 수 있다. 그렇게 프로그램도 자기 스스로를 호출할 수 있다. 그래서 어떠한 계산이 멈추느냐 멈추지 않느냐를 결정하는 튜링의 halting problem은 칸토어의 무한을 닮았고, 그도 칸토어의 논리를 차용해 자신의 논리를 증명했다.
마지막으로 칸토어와 튜링 외에도, 여러가지 선언적인 논리학이, "상태"와 "전환"이라는 틀 외의 무언가가 필요한 것이 아닌가 생각이 들게 한다. 예컨데, "어떤 문장이 참이면 그 대우도 참이다"라는 문장은 상태와 전환으로 기술되지 못할 것 같다. 하지만 이런 것들은 어떤 두가지 서로 달라보이는 상태나 전환이 본질적으로 일치하는 것이냐를 묻거나 하는 부차적인 문제로써, "상태"와 "전환"이라는 관점이 정립되면 자연스럽게 해결될 수 있지 않을까 하는 기대가 있다.
또한 여러가지 관점에도 불구하고, 자연에 대한 예측은 즉 물리학적인 예측은 모두 상태와 전환으로 설명 가능하다. 예를들면 컴퓨터 프로그램으로 예측하는 모든 것은 Universal Turing Machine에 의한 것이며, 자연을 예측할 때 컴퓨터로 예측하지 못하는 것은 없다. 최소한 현재 인간이 발견한 방정식으로 자연이 움직인다면 말이다.
이 "상태"와 "전환"이 사실은 하나인가라는 논쟁을 진척시킬 아이디어는, 상태란 기 주장한대로 단순한 대칭체계에서 어떤 전환에 의해 다다른 전환의 누적의 총체라는 점이다. 가만히 생각해보면, "상태"는 일련의 누적된 전환을 그 전환들 없이 나타내기 위한 그 중간의 명칭 정도에 불과하다고 이야기할 수 있다. 반대로 전환이란 상태의 이동들의 총체로 나타내볼 수 있다.
다른 말로 상태는 어떤 전환의 일련의 실행들로 완전히 나타낼 수 있다.(그러나 반대로 오히려 상태는 어디서 왔는지 과거 전환이 불명확해서 어떤 유일한 전환의 흐름이 있지는 않다)
따라서, 상태와 전환을 합치려는 노력은, 전환과 "그 전환의 누적된 흐름"(=상태)으로 근사해볼 수 있다. 하지만 우리는 자연을 예측하기 위해서는 언제나 맨 초기의 상태를 다루어야만 하기는 한다. 그러나 누구나 다 알고 있는 최초의 상태가 존재하면, 이를 논의할 필요는 없다. 상태는 초기 상태로부터의 전환의 누적정도로 바꾸어서 변환해서 생각할 수 있겠다. 칸토어의 무한은 따라서 전환이 끝없이 실행되어 펼쳐가는 이 누적 전환의 중간중간 snapshot의 총체를 다룬다라고 볼 수 있다. 그것을 대칭체계에서 수치화하면, 이름을 자연수나 정수, 실수, 초월수 이렇게 부르게 될 수 있는 것이다.
하나 더 고려해야 할 사항은 과연 이렇게 "단일 관점의 전환", 즉 1가지의 sequence만 고려해도 되는 것인가 하는 문제다. 상대성 이론에서 동시성도 부정되고 있고, 자연도 여러가지의 상호작용이 어떤 일련의 분절된 과정의 단순 합인지 아닌지 모호한 부분이 아직 있는 것은 아닌가? 하지만 이 부분에 있어서는 아직은 단일의 전환 흐름만으로 자연의 모든 것을 계산해내고 있기는 하다. 그래서 이 질문은 좀 나중으로 미뤄두어야 한다.
다시 정리해보면, 이전에 다루었던 어떤 처음 출발(아무것도 없는 것에서)에서 대칭체계의 전환 규칙을 설정한 후, 그 누적된 전환들을 총칭해 나타내는 것이 상태이고, 그것이 자연수와 정수, 실수로 이루어지는 일련의 좌표같은 역할을 하는 구성을 가정해 볼 수 있는 것이다. 상태란 그 과거의 전환의 sequence를 단순화하여 나타내는 기법정도로 정의해보면, 우리의 논의를 통합된 "전환"이라는 틀 하에서 진척시킬 수도 있겠다. (이런 논의들이 사실은 좀 순환적일 수도 있긴 하지만, 서로가 서로를 참조하다보니)
예를 들면 정수에 대한 논쟁은, 0에서 시작하여 +1 전환(대칭체계하에서의)을 하고, 이후 그것을 연속 전환하는 일련의 절차 흐름에 대한 것을 다루는 셈이다. 유리수도 그런 관점에서는 그 흐름의 특정한 종착지를 나타내는 약식 표기에 지나지 않게 된다.
놀랍게도 이러한 전환의 관점에서 "상태" 즉 수(대칭체계하에서의) 들을 바라보면, 상태가 계속해서 창조되고 있는 것들이 자연스러운 일이 된다. 피타고라스 학파는 처음에 무리수에 대해 부인했지만, 그 무리수라는 상태는, 정수에서도 충분히 몇가지 전환을 거치다보면 나타나는 새로운 상태이며, 규칙에 따라 무리수 형태를 띄어야 했던 것이다. 허수도, 초월수도 그렇게 탄생하게 된다. 즉, 모두 미리 정해져있을것 같은 '상태'들이, 그저 절차의 전개에 따라 탄생해가고 있는 셈이다. 절차가 새롭게 개발되면 그래서 새로운 상태가 탄생하고 확장되게 된다. 무한대의 수를 증가하고 있는 상태의 수로 표현되는 것과 같은 개념이다. 신기하게 고정되어 있을 것 같은 수 체계는 지속 확장된다. 왜냐하면 어떠한 절차들이 상태를 더 확장시키는 것이 이 체계의 본질이기 때문이다. 그 상태란 다름아닌 절차들의 연속된 실행이다. 즉 "전환"의 모음이 가리키는 무언가의 이름일 뿐이고, 그 핵심은 그 전환들이기 때문이다.
조금더 관점을 바꾸어보면, 칸토어의 무한의 1:1 대응이란 이런 전환과정들을 근사하여 일치시키는 과정이다. 기본적으로 유사한 전환과정을 보여줄 수 있다면, 그 상태들의 이름은 의미가 별로 없다. 그 상태들은 본질적으로 같지 않는가.
이러한 틀 하에서 '상태'와 '전환'에 대한 관점을 다듬어 보는 힌트를 고민해볼 수 있겠다.
그리고 이러한 정리 과정에서 신경써야 할 수 있는 점이 몇가지 있다.
첫번째는 바로 이 전환의 흐름에 대한 것이다. 이 본질적인 논의에서 여전히 우리는 방향을 가진 흐름(전환의 반복)을 상정하게 되는데, 이것이 사실은 시간의 다른 이름이다. "전환"은 선후 관계가 있다. 즉 순서가 있다. 이 순서를 우리는 "시간"이라고 생각할지 모르겠다. 즉 상태와 전환의 체계에서 순서가 핵심이고, 그 순서를 우리 인간들은 "시간"으로 이해하고 있는 셈이다. 전환의 반복이 시간이다. 다만, 이건 좀더 고민해보자.
두번째로는 이러한 전환의 계산이, 중간단계를 건너뛰고 마지막 상태를 알기가 통상 어렵다는 점이다. 계산의 본질로 내려가면, 이 전환을 미리 행해둔 것을 다시 재활용하는 것이 아니면, 즉 과거에 계산해둔 것이 아니면, 곧바로 미래의 상태를 알아낼 수 없다(알아 낼 수 있으려면 하위 계위에서 한번더 계산하는 단계를 거치던가 하는 과정이 필요하다).
세번째로는 자연에서는 상대성이론에 따라 이 "전환"이 동기화되어 있지 않게 전개된다는 점이다. 이는 이론적인 질문이 아니라, 세상을 시뮬레이션 하고 있을 시의 현실적인 고민이 되는데, 블랙홀의 외부 관찰자와 블랙홀에 빨려들어가는 관찰자, 블랙홀 안에서 바라볼 때의 관찰자가 서로 다른 전환 흐름을 거치는데, 시간 관점에서 보면 한쪽이 무한하게 전환되는 과정을 포함하게 되는 현상이다. 즉 무한의 계산 결과가 나와야만, 유한한 계산결과의 그 다음 전환이 결정되는 계산에 대한 부분이다. 그런데 자연에서 우리는 어떤 정지상태를 경험하는 것 같지 않다. 컴퓨터 프로그램에서는 자주 발생할 수 있는 deadlock이 자연에서는 관측되지 않는다. 즉 내가 블랙홀 안으로 온전히 들어간다고 생각하면 바깥 세상은 무한의 시간이 지나야 한다.나를 따라 아주 작은 차이로 뒤에서 들어오던 누군가가 있다고 치자. 플랑크 길이 정도의 간격이라고 치자. 그럼에도 불구하고 바깥의 시간은 무한히 흐른 다음에 그 뒤에것이 들어오는 것 아닌가? 이 아이러니는 우주라는 시뮬레이터는 어떻게 처리해야 하는가? 블랙홀 밖의 무한의 전환을 어떻게 완료한 후 블랙홀 안으로 들여보낼 것인가..
계속 더 시간이 있을때마다 살펴보자.