컴퓨터 전문가로서의 삶
데니스 리치(Dennis MacAlistair Ritchie)는 1941년 9월 9일에 미국 뉴욕주 브롱크스빌에서 태어났다. 그의 아버지는 AT&T 벨 연구소에서 일했고 리치는 뉴저지에서 성장했다.
1963년에 하버드 대학교에 입학한 그는 물리학을 전공했고 대학원에 진학해서 응용 수학을 전공했다. 그가 컴퓨터에 처음 관심을 가지게 된 것은 학부 때 우연히 컴퓨터 관련 강연을 들으면서부터였다.4 그는 이를 계기로 한 학기짜리 컴퓨터 개론 수업을 들었다.
비록 응용 수학으로 박사 과정을 밟기는 했으나 대학원 때 그는 이미 컴퓨터에 빠져 있었던 것으로 보인다. 그는 대학원 1학년 때부터 프로그래밍 개론 수업 강사를 맡았고 MIT의 MAC 프로젝트에서 파트타임으로 일하기도 했다.5
MAC 프로젝트에서 그가 코딩 작업을 하지는 않았다고 한다. 그는 주로 문서 작업을 했으며 특히 파일 시스템의 다양한 측면에 관해 글을 작성했다. 후에 유닉스가 파일 시스템에서 출발한 점을 생각하면, 그 인연은 여기서 시작했다고 생각해도 좋을 듯싶다.
아버지가 벨 연구소에서 일했으므로 리치는 벨 연구소에서 무슨 일이 벌어지고 있는지를 어느 정도 알고 있었다고 한다. 그리고 MIT에서 파트타임으로 일하면서 멀틱스 프로젝트도 이미 알고 있었다. 그는 벨 연구소의 여러 곳에서 입사 면접을 보았고 연구 그룹을 선택했다.5
벨 연구소에 입사한 리치는 멀틱스 프로젝트에 참여했고 이때 켄 톰슨과 함께 일했다. 아울러 그는 벨 연구소에 근무하던 스탠 브라운Stan Brown이 설계한 기호 대수symbolic algebra 언어인 Altran의 컴파일러를 개발하는 일도 했다. 이때 그는 터미널에서 코드를 작성한 후, 그것을 펀치카드로 옮겨서, 일괄처리 방식으로 실행하는 작업 순서를 따랐다. 그는 더 매끄럽게 일하기를 원했다.
컴퓨터와의 상호 작용이 매끄러우면 일이 더 재미있고 덜 귀찮아진다는 점이 아주 분명해 보였습니다… 켄이 지향하는 스타일이 아주 바람직해 보였죠. 나는 그와 일하면서 그 점을 알고 있었습니다.5
켄 톰슨(Kenneth Lane Thompson)은 1943년 2월 4일에 미국 루이지애나주 뉴올리언즈에서 태어났다. 그의 아버지는 해군에서 일했고 그래서 가족들은 1~2년에 한 번씩 이사를 다녀야 했다.6 캘리포니아 대학교 버클리에 입학한 그는 1965년에 과학 학사 학위를 받았고 1966년에는 전기 공학 및 컴퓨터 과학 석사 학위를 받았다. 그는 학부 때부터 컴퓨터 게임에 관심이 많았다. 그래서 여러 게임들을 IBM 7094 대형 컴퓨터에서 만들었다. 그는 좀 못된 장난기도 있었던 것으로 보인다.
BridgIt이라는 게임이 있었습니다. 행과 열이 N개인 정방형에서 벌어지는 게임이었는데 한 줄이 19개인가 그랬어요… 학교에는 이 게임을 정말로 잘하는 녀석이 있었습니다. 어느 날 나는 이 녀석을 도저히 이길 수 없다고 생각했고 그래서 몰래 19 x 18 짜리로 바꿔 놓았습니다. 그렇게 하면 먼저 시작하는 사람이 엄청나게 유리하거든요. 당시의 모니터 화면은 좀 둥근데다가 볼록하게 튀어나와서 그 친구는 알아채지 못했고 그래서 내가 연거푸 이겼습니다. 결국은 사각형이 정방형이 아닌 것이 들통났습니다. 6
그는 자유로운 영혼의 소유자이기도 했다. 그는 졸업 후에 직장을 구할 생각을 하지 않았고 캠퍼스 내에서 컴퓨터와 관련된 일에 벌어지면 항상 얼굴을 들이밀었다. 그런 그가 안쓰러웠는지, 아니면 못마땅했는지, 지도교수들은 벨 연구소의 채용 담당자에게 그를 소개했다. 하지만 1주일 일정으로 캠퍼스에 찾아온 채용 담당자를 그는 피해 다녔다. 결국 채용담당자는 떠나기 전날 밤에 그의 집까지 찾아와서 면담을 진행했다.
벨 연구소는 그에게 정식으로 입사 면접을 제안했다. 정식 면접을 위해서는 벨 연구소가 있는 미국 동부로 날아가야 했다. 톰슨은 벨 연구소의 일자리에 전혀 관심이 없었지만 옛 친구들 중에 동부에 사는 친구들이 많아서 공짜로 비행기를 타야겠다는 생각으로 면접에 응했다. 그는 이틀 동안 두 부서에서 면접을 봤고 친구들과 좋은 시간을 보냈다. 그리고 서부로 돌아와 보니 이미 집에 합격 통지서가 도착해 있었다. 면접을 본 두 부서 중 한 곳을 마음대로 선택하라는 혜택까지 제공되었고 그는 머리 힐Murray Hill을 선택했다. 그렇게 해서 켄 톰슨은 벨 연구소에 입사했다.6
벨 연구소는 처음부터 그를 멀틱스 팀에 배정할 생각이었다. 그는 MIT에서 개발한 CTSS 시분할 시스템을 이용해서 멀틱스 시스템 개발 작업을 했다. 그는 파일 시스템 개발에 참여했고 이곳에서 데니스 리치를 만나게 된다.
MIT, GE, 벨 연구소라는 내로라하는 연구 기관이 참여한 멀틱스 개발은 실패로 막을 내렸다. 가장 먼저 발을 뺀 곳은 벨 연구소였다. 기대했던 목표를 달성하기 어렵다는 판단에서였다. 따라서 자연스럽게 멀틱스 개발팀의 일도 사라졌다. 그렇다고 해서 멀틱스 개발팀에게 새로운 일이 할당된 것도 아니었다. 벨 연구소는 연구원들이 스스로 문제를 찾아 해결하기를 기대하는 곳이었다.
복도 한구석에 처박혀 있던 PDP-7을 붙잡고 톰슨이 운영체제를 개발하기 시작하게 된 계기를 딱 하나로 단정 지어 말하기는 어렵다. 물론 그는 ‘스페이스 트레블’이라는 게임을 개발하기 위해서 그랬다고 말하기는 했다. 하지만 그 게임을 위해서 굳이 운영체제를 새로 만들었을 것 같지는 않다. ‘스페이스 트레블’이라는 게임은 하나의 방아쇠 역할을 한 것이고, 그는 멀틱스 개발 과정에서 고민했던 것들을 그대로 버리고 싶지 않았던 것으로 보인다.
또 한 가지 변수는 당시 벨 연구소의 변화이다. 멀틱스 프로젝트를 포기한 벨 연구소는 컴퓨터 과학 연구 부서에서 컴퓨터 센터를 독립시켰다.3 원하면 언제든지 바로 컴퓨터를 사용할 수 있던 환경에서, 이제는 컴퓨터 사용 시간을 신청해야 하는 환경으로 변한 것이다. 톰슨에게 얼마나 짜증 나는 일이었을지 상상이 된다.
파일 시스템 구현에서 시작된 실험은, 프로세스 관리로 확장되었고 셸shell이라는 사용자 인터페이스를 포함하면서 운영체제의 모습을 갖추게 된다. 이 모든 것이 어셈블리어로 작성되었다. 전체 운영체제의 크기는 몇십 킬로바이트밖에 되지 않았다.
톰슨과 리치, 그리고 뜻을 같이한 몇몇 연구원들의 노력으로 PDP-11 컴퓨터를 확보하면서 이 운영체제는 좀 더 다듬어졌고 대중성을 확보하기 시작했다. 유닉스의 신화는 이렇게 출발했다.
유닉스의 성공 이후에도 톰슨과 리치는 흥미로운 여정을 계속 이어 나갔다.
리치는 유닉스 개발에서 입출력 장치 관련된 코드를 담당했다. PDP-7 에서 PDP-11 으로 기계를 전환하는 과정에서 전체 프로그램을 다시 어셈블리어로 작성하는 일은 고단했다. 이 과정에서 톰슨은 B라는 프로그래밍 언어를 직접 만들어 사용했는데 B 언어는 인터프리터 방식이었고 몇 가지 단점이 있었다. 그래서 리치가 소매를 걷고 뛰어들었다. 원래는 B 언어에 타입type 개념을 추가하려는 의도였는데 하다 보니 훨씬 괜찮은 언어가 만들어졌다. 리치는 이 언어를 뉴비New B라고 불렀지만 최종 결과물이 B 언어와 상당한 차이를 보이자 C라는 이름을 붙였다. C 언어는 유닉스 시스템과 함께 제공되었고 곧 고급 프로그래밍 언어의 대표 주자가 되었다.
리치는 1990년에 벨 연구소 컴퓨팅 기술 연구 부서장에 올랐고 인페르노Inferno라는 분산 운영체제 및 림보Limbo 언어 개발에 참여했다. 리치는 2011년 10월에 세상을 떠났다.
톰슨은 1980년대부터 1990년대 말까지 플랜Plan 9이라는 분산 운영체제 개발에 참여했다. 이 과정에서 톰슨은 UTF-8이라는 문자 인코딩 방식을 고안해 냈다. 톰슨은 체스 프로그램 개발로도 유명하다. 그는 벨Belle이라는 체스 전용 하드웨어까지 제작하는 열의를 보였고, 전 세계 체스 프로그램 대회에서 우승을 여러 번 차지했다.
답글 남기기