독서노트/독서 & 인용

컴퓨터를 만든 15인의 과학자

세렌디피티 2002. 5. 4. 00:00

컴퓨터를 만든 15인의 과학자
데니스 샤샤 · 캐시 레이지어 공저, 박영숙 옮김/세종연구원/초판 1998년(초판1쇄 1998년)

만일 전체 인구 가운데 어떤 2퍼센트의 그룹에 속하는 사람이라면 컴퓨터에 반향을 일으키기 쉬운 정신적 소양을 가지고 있는 것이며 선천적으로 컴퓨터 과학에 끌리도록 타고난 것이라고 할 수 있습니다. - 도널드 크누스(Donald Knuth)
난 구조, 그래프, 자료 구조 등을 머리 속에 그려 봅니다. 그건 다른 많은 것들보다고 쉽게 떠오르는 것처럼 보입니다. - 로버트 타잔(Robert Tarjan)
    스스로 생각하고 진화까지 하는 컴퓨터를 떠올리면 짜릿해진다. 블레이드 러너, 매트릭스(Matrix), 공각기동대(Ghost in the shell), 뉴로맨서(Neuromancer), 신세기 에반게리온(Neon Genesis Evangelion).. 그 숱한 SF물들을 보고 또 보고 읽고 또 읽어도 재미있다. 아마도 언젠가는 실현될 세상임을 믿고 있어서 그리고 그것들이 어떻게 가능하게 될까를 생각하게 만드는 즐거움을 주기 때문일 것이다. (물론 나는 밝은 미래를 꿈꾼다. 우울한 컴퓨터는 단지 공상과학의 감상적인 부분일 뿐.)

    매끄럽지 않은 번역체와 번역의 오류 때문에 매력이 삭감되긴 했지만, 이 책은 현대의 컴퓨터 발전에 기여한 열 다섯명의 과학자들에 대한, 옴니버스 다큐멘터리식 인터뷰 토대 전기문 형식을 취한 흥미로운 이야기이다.

    주인공 과학자들 대부분의 이름은 물리학자들의 이름과 다르게 나에겐 아주 생소했음에도 불구하고 개인적인 호기심과 컴퓨팅에 관한 관심 덕분에 끈기를 가질 수 있었음을 이야기하면서 책속으로 들어가 본다.

    저자는 열 다섯명의 과학자들을 다음과 같은 네가지 범주로 구분지어 놓았다.
    -언어학자들 : 어떻게 기계와 대화를 할 것인가?
    -알고리즘 학자들 : 컴퓨터에서 문제를 빠르게 해결할 수 있는 좋은 방법은 무엇인가?
    -설계사들 : 보다 나은 컴퓨터를 제작할 수 있을까?
    -인공지능의 조각가들 : 자체의 해법을 찾아 내는 컴퓨터 프로그램을 작성할 수 있을까?

    또한 이 네가지 화두는 이들 과학자들이 가졌던 호기심과 이 호기심을 해결하고자 한 사고방식을 설명해가는 방식으로 진행된다. 제기된 많은 문제들 가운데서 다이크스트라(Dijkstra)가 자신의 학생들에게 낸 시험문제 하나를 소개하며 글을 마친다.

   
다이크스트라에게는 동료들과 다른 방식으로 사물을 보는 능력이 있었다. 그것은 그 자신이 '내가 고립되어 있다는 행복한 사실'이라고 표현했던 상황에서 비롯된 결과였다. 다른 사람들이 지나쳐버리는 본질적인 문제들을 끄집어 내는 그의 능력은 1965년 다시 한번 뚜렷하게 부각되었다.

    그 해 가을의 어느 날 저녁, 다이크스트라는 자리에 앉아 자신의 아인트호펜 공과대학 학생들을 위해 지금은 널리 알려져 있는 시험 문제 하나를 출제하고 있었다. 다이크스트라는 그것을 만찬의 5조(dining quintuple)문제라고 불렀었지만, 얼마 안 있어 옥스퍼드의 호아(Hoare) 교수가 지어준 만찬의 철학자들 문제라는 이름으로 유명해지게 되었다.
    후난 성의 철학자 다섯 명이 탁자에 둘러 앉아 있다고 상상해 보자. 그들은 각자 밥이 가득 담긴 밥그릇과 그 한쪽 옆에 놓인 젓가락을 하나씩 가지고 있다. 각 철학자의 오른쪽 젓가락은 그 옆에 앉은 사람의 왼쪽 젓가락이 된다. 그 만찬의 규칙은 다음과 같다.
    1. 각 철학자는 잠시 동안 생각을 하고, 잠시 동안 먹고 난 다음, 잠시 동안 기다린다.
    2. 먹을 때는 반드시 오른쪽 젓가락과 왼쪽 젓가락 모두 집어야 한다.
    3. 철학자들은 젓가락을 집어 들거나 내려 놓는 것만으로 의사 소통을 한다.(말을 할 수도 글을 쓸 수도 없다.)
    철학자들은 각자가 먹기 위해서 다음과 같은 알고리즘을 사용한다고 가정하자.
    (1) 오른쪽 젓가락을 사용할 수 있을 때 그것을 집어 올린다.(오른쪽에 앉은 사람이 그것을 들고 있을 경우엔 기다린다)
    (2)왼쪽 젓가락을 사용할 수 있을 때 그것을 집어 올린다.(왼쪽에 앉은 사람이 그것을 들고 있을 경우엔 기다린다)
    (3) 먹는다.
    여기서 몇 가지 경우가 발생할 수 있다. 만일 모든 철학자들이 동시에 먹기 시작하려고 결심한다면 그들은 (1)단계에는 모두 성공하겠지만 (2)단계에서는 영원히 기다려야만 하는 결과가 될 것이다. 이러한 상황을 교착(deadlock)이라고 부른다. 동료 철학자들이 모두 한 개의 젓가락만을 들고 있는 것을 보면서 (2)단계에서 기다리고 있던 어떤 철학자가 자신의 오른쪽 젓가락을 내려놓고 잠깐 동안 조용히 앉아 오른쪽 사람이 먹는 것을 지켜 볼 수 있다. 이렇게 되면 이타적인 철학자는 결코 먹지 못하게 될 가능성이 있다. 이러한 상황을 기아(starvation)라고 한다. 모든 철학자가 먹는다 하더라도 일부가 다른 사람들보다 많이 먹을 수 있다. 이러한 상황을 공평성의 결여(lack of fairness)라 부른다. 즉, 인생을 나타내는 것이다.
    컴퓨터 네트워크에서는 만찬의 철학자들 문제의 다양한 변형들을 종종 볼 수 있다. 예를 들어 근거리 통신망 내의 컴퓨터들은 흔히 한 번에 단 하나의 메시지만 보낼 수 있는 선이나 방송 채널을 공유한다. 만일 모든 사이트들이 동시에 전송을 시도할 경우 모두 실패하게 된다. 그리고 나서 곧바로 재시도를 하면 또 다시 실패하게 된다. 이것은 교착과 유사하다. 만일 어는 하나의 사이트가 항상 우선권을 가진다면 다른 사이트가 기아 상태에 놓이거나 혹은 프로토콜이 불공평하게 될 것이다.
    철학자들이나 네트워크 양쪽 모두에 적용되는 한 가지 해법은 무작위화(randomization)이다. 어떤 한 철학자나 사이트가 필요로 하는 자원을 확보할 수 없을 경우, 다소 임의적인 과정에 의해 결정되는 일정한 양의 시간 동안 기다리고 나서 재시도를 하는 것이다. 이러한 구성 역시 그 과정이 규칙적인 것은 아니지만 끊임없이 불운하게만 작용되어 여전히 기아 상태를 만들어 낼 수는 있다. 하지만 그런 사태가 발생할 가능성은 크지 않다.
    다이크스트라가 만찬의 철학자들 문제를 제기하고 나서 몇 년이 지난 후 그는 당시 존재하는 가장 복잡한 컴퓨터 시스템 가운데 하나였던 MIT의 멀틱스(Multix) 설계자들이 교착에 대해 전혀 고려해 보지 않았으며 그 시스템이 마치 아주 많은 철학자들이 각자 젓가락을 한 개씩만 들고 있는 경우처럼 이따금씩 갑자기 정지해 버릴 것이라는 사실을 알고 놀랐다. 다이크스트라는 깊이 생각하면서 완곡한 반어법을 사용해 이렇게 말한다.
    MIT측에서 네덜란드의 한 작은 마을에 사는 무명의 컴퓨터 과학자에게 주의를 기울이지 않은 것을 비난하기는 어렵겠지요.

(2002.05.04)