요즘 바쁘다는 핑계로 블로깅이 뜸하네요 ㅠ
어제 하루 날잡고 수학자, 컴퓨터를 만들다 라는 책을 읽었습니다.

라이프니츠, 부울, 프레게, 칸토어, 힐베르트, 괴델, 튜링
요 일곱 사람들의 이야기입니다.

이 사람들은 모두 유명한 수학자들입니다.
책을 읽어보니 현대의 컴퓨터를 만드는데 이론적으로 큰 기여를 했더군요.

머리아픈 내용이 많아서 속독하고 넘긴 부분이 많은데 -ㅁ-
중요한 부분만 한 번 정리를 해둘까 합니다.


라이프니츠는 이진법을 고안했습니다.
그는 아마도 이런 생각을 했던 것 같습니다.

라이프니츠

이 세상의 모든 숫자들을 표현할 수 있는 효과적인 방법이 없을까?
0과 1만 가지고 세상 모든 숫자들을 표현할 수 있을 것이다 !



세상 모든 사물을 0과 1로써 표현하는 것도 가능하지 않을까요?
울티마 온라인, 리니지, 와우 같은 온라인 게임은 모두 0과1로 만들어진 세상이지요.
세컨드 라이프도 마찬가지구요.
이곳은 컴퓨터안의 세계이므로 모든 사물이 0과 1로써 표현가능하니까
라이프니츠의 생각은 과연 옳았다는 생각이 들더군요.


부울도 현대의 컴퓨터 구조를 만드는데 한 몫 했습니다.
부울대수라고 전자계산기구조에서 사용되는 AND, OR 게이트를 생각해냈지요.
명제를 일종의 논리적인 기호를 사용하여 표현해냈습니다.

모든 사람은 죽는다
소크라테스는 사람이다
그러므로 소크라테스는 죽는다

사람은 죽는다
소크라테스틑 사람이다
소크라테스틑 죽는다

사람 : A
죽는다 : B
소크라테스 : C

A = B
C = A
C = B

여기서 발전하여 아래와 같은 개념이 탄생했습니다.

부울

X 이면 Y 이다.

이것은 다시 말해서, X=1 이면 Y=1 이다.
이것을 최종적으로 다시 표현하면, X(1-Y)=0 이다.

마지막 식을 생각해 봅시다.
X=1 이면 1-Y=0 이 되고 여기서 Y=1 이 됩니다. 정확하지요.

X(1-Y)=0 이라는 말은
X 이면서 Y가 아닌것(1-Y)은 거짓이다는 말과 같습니다.

이 말은 XY=1 과도 같지요. X=1이면 Y=1이 됩니다.

정말 명쾌한 논리가 아닐 수 없습니다.
부울은 명제를 논리적인 기호만을 사용하여 표현하는 것에 성공했습니다. (부울대수)




프레게는 기호논리학을 만들어냈습니다.

프레게


위에서부터 순서대로...

모든 사람은 어떤 사람을 사랑한다.
어떤 사람은 모든 사람을 사랑한다.
모든 사람은 어떤 사람한테 사랑받는다.
어떤 사람은 모든 사람한테 사랑받는다.

이런 것이 기호논리학 입니다.


부울이 수학에 기초한 논리표현법을 생각해냈다면
프레게는 자신만의 기호를 사용하여 논리를 좀 더 체계적으로 표현하는 방법을 만들어냈습니다.


말씀드린 바와 같이 기호논리학입니다.
프레게가 고안해낸 기호를 사용한 논리학이라하여 기호논리학이라고 하는 것 같습니다.
제가 배운 기호논리학은 조금 표현법은 다른데, 의미는 프레게가 고안한 것과 똑같은 것 같네요.
quantifer 를 사용하여 수량까지도 표현이 가능한데 놀라운 사실은...
구체적인 수량까지도 표현이 가능합니다. (1개이냐 2개이냐)
대신 문장은 길어진다는 ~~ ;ㅂ; (그래도 기호를 사용하여 논리적인 수량표현이 가능하다는 사실은 대단한 발견이지요)


수학자 칸토어입니다.
그 유명한 대각선 법칙을 만들어 냈습니다.
대각선 댄스 ;-0
유명하다고는 하지만 이 책을 읽기전에 대각선 법칙을 몰라서 정말 어려웠습니다.

칸토어

대각선정리를 최대한 쉽게 적어보겠습니다. 인터넷 찾아보니 복잡해보이는듯한 공식의 쓰나미가 ;ㅂ;

1,2,3,4 라는 숫자가 있다고 합시다.
이것들로 어떤 숫자들의 조합을 만드는데 이 조합 하나 하나에 이름을 붙일 것입니다.

1 : 1, 2
2 : 2, 4
3 : 1, 3
4 : 2, 3

규칙 없습니다. 막 붙였답니다 :-)
이것을 다시 정리해 보겠습니다.

     1  2  3  4
1 :  O  O  X  X
2 :  X  O  X  O
3 :  O  X  O  X
4 :  X  O  O  X


빨갛게 칠해진 것을 순서대로 놓아보면 O O O X 인데 이것은 1 2 3 4 = O O O X 라는 말이죠.
이것을 뒤집어 보겠습니다.
1 2 3 4 = X X X O

그러면 새로운 숫자의 조합이 탄생합니다. 이것이 대각선 법칙입니다.
? : 4

라는게 되겠네요. 합쳐봅시다.

1 : 1, 2
2 : 2, 4
3 : 1, 3
4 : 2, 3
? : 4

하지만 이 새로운 숫자의 조합은 이름을 붙일 수 없습니다.
왜냐하면 1, 2, 3, 4 는 다 사용해버렸거든요 ;ㅁ;

이것이 무슨 의미이냐 하는 것은 상당히 이해하기 어렵더군요.
연속체 가설이라는게 등장하는데... 사실 한 번 대충 읽어서는 이해가 안됐습니다.
바로 아래에 제가 자세하게 정리한 부분이 있으니 더 읽어보시기 바랍니다. (자연수와 실수의 관계)

대각선법칙에서 칸토어가 말하고자 했던 것은
무한집합중에서도 더 큰 무한집합이 있다는 사실이었습니다.


저는 칸토어가 컴퓨터의 발명에 기여했던 것은 무엇일까 생각해보았습니다.
위의 대각선법칙의 이름 붙이기가 관련되어있지 않을까 생각됩니다.

칸토어

칸토어는 자연수와 분수들을 일대일 대응시키는데 성공했습니다.
단순하게 생각하면 분수가 더 많기때문에 일대일 대응이 힘들 것 같은데 말이죠.
하지만 자연수와 분수 모두 무한집합이기 때문에 이것이 가능합니다.

1/1 은 1 에 매핑될 수 있습니다.

1/2 는 분자와 분모의 합이 1+2 = 3 이죠.
분자와 분모의 합이 3 이 되는 또다른 분수는 2/1 이 있습니다.
그래서...
1/2 는 2 에 매핑될 수 있습니다.
2/1 은 3 에 매핑될 수 있습니다.

1/3 은 분자와 분모의 합이 1+3 = 4 입니다.
분자와 분모의 합이 4 가 되는 또다른 분수는 2/2, 3/1 이 있습니다.
그래서...
1/3 -> 4
2/2 -> 5
3/1 -> 6

머 이런식으로 모든 분수들을 매핑시킬 수 있답니다.

별거 아닌 것 같지만 이것은 대단한 발견입니다.
컴퓨터는 매우 제한적인 장치입니다. 0과 1밖에 모르는 하드웨어지요.
라이프니츠는 0과1로 모든 숫자를 표현하는데 성공했고...(이진법)
칸토어는 자연수를 다른 무한집합에 매핑하는데 성공하였습니다.

하지만 더 대단한 발견은...?
자연수는 분수와 일대일 대응이 가능하지만 (분수가 더 커 보임에도)
지연수로는 실수와 일대일 대응이 불가능하다는 사실입니다.

1/3 을 실수로 표현하면 0.333333333333333... 이 되려나요?
실수에는 파이라고 하는 무리수도 있구요. 3.141592...

실수는 자연수에 일대일 대응할 수 없다?
그 이유를 위에서 설명한 대각선법칙에서 찾아야할 듯 합니다.
이상의 내용은 제가 하루만에 이해하기는 벅차서 대충 읽고 넘겼답니다 ㅠㅂㅠ
대충 이해는 하겠는데 설명은 못하겠네요 허허 ㅠㅂㅜ

칸토어의 대각선 법칙에 대한 제 생각이 맞다면...
지금 우리가 사용하는 컴퓨터에는
위에서 설명한 이유 때문에 실수부분에 오차가 생기는 것이 아닐까 조심스레 생각해봅니다.

라이프니츠는 모든 숫자를 이진법으로 표현하였고
칸토어의 자연수 이름붙이기 방법을 사용하면
이진법으로 분수들을 매핑하는 방법을 생각할 수 있습니다.
하지만 자연수와 실수사이에는 일대일 대응관계를 만들 수 없기때문에
현대의 컴퓨터에는 실수 계산시에 오차가 생기는 것이 아닐까요?

저는 그래서 프로그래밍할 때 float 이나 double 형은 왠만하면 사용하지 않습니다.
복잡한 계산을 마치고나면 어디서 오차가 날 지 감히 생각도 할 수 없거든요.
특정 프로시저를 작성하는데 실수를 꼭 사용해야한다면 int 로 했다가 float, double 로 바꾸는 방법을 사용합니다.




이 분은 수학자 힐베르트입니다.
너무 졸려서 일곱명의 수학자 챕터중에 가장 대충 읽은 분입니다 --;; 죄송합니다 힐베르트씨 ㅠ0ㅠ

제 생각에는 힐베르트, 괴델, 튜링이 현대의 컴파일러와 인터프리터를 고안해냈다고 생각됩니다.
컴파일러와 인터프리터의 차이점은 네이버 친구를 찾아보시면 좋을듯합니다 :-)


힐베르트

힐베르트는 메타수학을 만든 사람입니다.
메타수학이 무엇이냐? 공통수학 같은건가?...;ㅂ;
제기 대충 읽어본 챕터를 생각해보면 메타수학은 수학과 논리학을 결합시킨 것 같습니다.

1+1 = 2 라는게 있습니다. 이건 우리가 쉽게 이해할 수 있죠.

1 -> 999
+ -> 505
= -> 698
2 -> 998

이라고 합시다.
그러면 1+1 = 2 는 아래와 같이 표현할 수도 있겠습니다.

999505999698998

:-0 굉장히 복잡해졌네요.
하지만 이것 역시 굉장한 발견입니다.
어떤 부호화된 수식을 사용하여 새로운 수학체계를 만들 수 있다는 사실을 알 수 있지요.

컴퓨터는 0과 1밖에 모릅니다.
현대의 컴퓨터는 0과 1만 가지고서 온갖 복잡한 수학계산을 척척해냅니다.

0과1만 사용하여 수식을 만들어내면 우리가 봐서는 당최 알 수 없는 코드지만...
컴퓨터는 단번에 이해할 수 있습니다.

그 출발이 바로 힐베르트였다는 사실을 생각해야할 것 같군요 :-)



제가 요즘 하고있는 위쳐라는 게임의 스크린샷입니다. 폴란드에서 5년동안 만든 대작 RPG 입니다.
이렇게 화려한 게임 화면은 온갖 복잡한 수학계산을 통해 만들어집니다.
하지만 그 시작에는 0과1밖에 없다는 사실은... 참으로 놀랍죠.

힐베르트의 생각과 비슷한 개념을 또 알고싶으신 분들은
갈로이스 필드와 중국인 나머지 정리를 네이버 친구에서 찾아보시기 바랍니다. (둘 다 조금은 어려운 개념입니다)


이제 수학자 괴델의 이야기입니다.
괴델은 아인슈타인과 절친한 친구 사이였다고 하는군요.
두 사람 모두 자신의 분야에서 천재성을 나타낸 학자이기도 하구요.

괴델

괴델은 힐베르트 프로그램의 오류를 짚어냈습니다.
쉽게 설명해보겠습니다. (하지만 제가 이해한게 맞는지는 모르겠습니다)

A 라고 하는 어떤 수학적인 영역이 있습니다.
A 영역안에서는 이 공간자체에 모순이 없다면...
A 내에서는 모순된 결론은 절대로 나오지 않도록 만들어져 있습니다.

이것이 힐베르트 프로그램이었습니다.
하지만 괴델은...

"X 라는 명제는 A 영역에서는 증명불가능하다"

라고 말했습니다.
이것은 굉장히 어려운 말입니다.

힐베르트는 A 영역 자체에 모순이 없다면
참이 되는 결론을 만들어낼 수 있다고 생각했습니다.

하지만 A 영역 내에서 A 영역 자체에 모순이 없다는 사실을 증명하지는 못한다고 하더군요.
이것은 괴델이 증명한 것인데, 책에서 자세한 내용은 언급되지 않았습니다. (어려운 내용이니 패스~)

만약 A 영역에 모순이 없다면 X 는 참이다
하지만 A 영역내부에서는 X 가 참이라는 것을 절대로 증명할 수 없습니다. (괴델의 증명)

따라서 괴델이 주장한 것은

A 영역 밖에서 보면 X 는 당연히 참이 된다.
하지만 A 영역 안에서는 절대로 X 가 참이 된다는 사실을 증명할 수는 없다.

이 개념은 뭐랄까요 너무 심드렁하고 심오하군요 ;ㅅ;
쉽게 이해할려면...

우리는 3차원에 살고있잖아요.
하지만 4차원 공간이 있다고 가정해본다면...
4차원에서는 당연한 말이 (4개의 서로다른 직선이 수직으로 만난다)
3차원에서는 도저히 이해할 수 없는 말일 수 있다는 것이죠.
(* 4개의 서로다른 직선을 수직으로 만나게 해보세요. 절대 안됩니다)

그 이유는 우리가 3차원에 있기 때문입니다. 제가 이해한게 맞는지는 모르겠습니다.

어쨌거나 괴델의 이 발견도 대단한 것입니다.
결정불가능한 명제도 있다는 말이거든요 :-)

괴델의 발견이 왜 대단한 것이냐...?

딱 세 문장이면 이 물음에 답변을 할 수 있겠습니다.

세상에는 사람이 할 수 있는 일이 있다.
컴퓨터(기계, 로봇따위)가 할 수 있는 일도 있다.
하지만, 사람만 할 수 있는 일도 있다.

이것을 괴델이 증명한 것이죠.
괴델의 발견은 컴퓨터 인공지능, 컴파일러, 인터프리터를 구현하는데 기초적인 토대가 되었습니다.


아인슈타인의 절친한 친구 괴델... 천재가 왜 천재인지 이해가 될듯말듯 합니다 -ㅂ-;;



마지막 수학자 튜링입니다.
전 일곱수학자들중에서 튜링을 가장 좋아하는데...
튜링이 제안한 튜링 머신이 지금의 컴퓨터 프로그래밍을 실제로 구현한 것이기 때문입니다.

튜링

튜링은 제가 위에서 설명한 다른 수학자들이 만든 이론적 토대를 기초로하여
튜링머신을 만들었습니다.

튜링머신에 대해 간단히 설명해보겠습니다.

94383 이라는 숫자가 있고 이것이 홀수인지 판별하는 튜링머신입니다.
끝없이 긴 테이프가 있고 이 테이프에 94383이 기록되어 튜링머신으로 들어갑니다.

튜링머신은 "시작" 이라는 상태를 가지고 출발합니다.
처음에 튜링머신은 9를 봅니다.
이것이 홀수이기에 튜링머신은 상태를 "홀수" 로 바꿉니다.
다음에 튜링머신은 4를 봅니다. (다음 테이프)
이것이 짝수이기에 튜링머신은 상태를 "짝수" 로 바꿉니다.
다음에 튜링머신은 3을 봅니다. (다음 테이프)
이것이 홀수이기에 튜링머신은 상태를 "홀수" 로 바꿉니다.
다음에 튜링머신은 8을 봅니다. (다음 테이프)
이것이 짝수이기에 튜링머신은 상태를 "짝수" 로 바꿉니다.
다음에 튜링머신은 3을 봅니다. (다음 테이프)
이것이 홀수이기에 튜링머신은 상태를 "홀수" 로 바꿉니다.
다음에 튜링머신은 빈테이프를 봅니다. (다음 테이프)
테이프가 비어있기에 튜링머신은 계산이 끝난 것임을 알고
94383 에 이어지는 다음 빈 테이프에 마지막 상태가 "홀수" 였으므로 1을 기록합니다.
그리고 상태를 "끝" 으로 바꿉니다.

여기서는 테이프가 단방향으로 움직였는데 양방향으로 왔다갔다 하는 식의 조작도 가능합니다.

이것이 튜링머신의 기본입니다.
튜링머신을 제안한 튜링은 튜링머신으로 해결불가능한 문제도 있다는 사실도 증명했습니다.
조금 복잡하고 까다로운 관계로 여기서는 넘어가겠습니다 ^^


진짜 튜링머신이 궁금한가요? 사용해보러 갑시다
↓ (실제 튜링머신의 동작원리를 자바애플릿 시뮬레이션으로 만들었습니다)
http://ironphoenix.org/tril/tm/

후... 여기까지 일곱 수학자들이 만든 컴퓨터 이야기를 마치도록 하겠습니다 ^^

일곱 수학자들중 대부분은 비참한 최후를 맞이했는데요.
궁금하신 분들은 일곱 수학자들의 이름으로 검색해보시기 바랍니다.

튜링은 동성애자였고,
(당시 사회는 동성애자를 스파이나 공산주의자 보듯이 대했습니다)
가학적인 방법으로 정부에 의해 강제적으로 여성 호르몬 주사를 맞았습니다.
튜링의 신체는 여성처럼 변했고
심한 모멸감과 박탈감에 괴로워한 튜링은 가장 여성스러운 방법으로 세상을 떠나겠다며
음독자살했습니다.

괴델도 상당히 끔찍한 최후를 맞이했습니다 ㅠㅠ
괴델은 사망당시에 몸무게가 30Kg 도 되지않았다고 합니다. (사인은 아사, 굶어죽었습니다)

Comment List

  1. BlogIcon 뉴런
    2009.06.04 18:15 신고
    부울은 있을 줄 알았네요.
    0과 1로 이루어지는 저 신비함이란 헤아리기도 힘드네요.
  2. 히히쇼
    2010.05.30 22:26 신고
    허허..엄청재미있네요
  3. BlogIcon 최지혜
    2010.11.25 12:03 신고
    독후감을 위해서 검색해 보다가
    글을 읽고 코멘트 남깁니다^^

    독후감에 관한 정보제공도 감사하지만
    컴퓨터 공학과에 재학중인 저에게
    이 책에서 이해하지 못한 부분을 쉽게 이해할 수 있었습니다.

    좋은 정보 감사합니다^^

Leave a Comment