토니 호어​*​

프로그래머는 항상 복잡함에 둘러싸여 있다. 그건 피할 길을 없다. 야심 차게 계속 더 복잡한 방식으로 컴퓨터를 쓰려고 하다 보니 우리의 응용 프로그램은 복잡해진다… 우리의 기본 도구, 즉 프로그램을 설계하고 작성하는 데 쓰는 언어까지 복잡하다면 그 언어는 해결을 위한 도구가 아니라 문제를 일으키는 도구가 되어 버린다.

1980년 튜링상 수상 강연 중에서​1​

그는 토니를 빤히 쳐다보며 말했다.

“자네 말이 틀렸다는 데 100원을 걸겠네.”

감히 신입사원 주제에 무슨 패기로 그런 주장을 하느냐는 말투였다. 토니는 괜히 말을 꺼냈나 하는 생각이 들었지만 이미 엎질러진 물이었다. 이렇게 된 바에야 적극적으로 나서는 편이 앞으로의 직장 생활을 위해 좋을 듯싶었다.

“제가 한 번 설명해보겠습니다. 들어보신 후에 제 생각이 맞는지 틀렸는지 판단해주세요.”


토니가 엘리엇 브라더즈Elliott Brothers 사에 입사하게 된 것은 참으로 신기했다. 대학에서 철학을 전공한 그가 컴퓨터 제조사에 프로그래머로 취직을 할 줄 누가 알았겠는가? 그가 러시아에 유학을 간 것이나 러시아에서 엘리엇 브라더즈 사를 만나게 된 것이나 모두 우연의 연속이라고밖에 설명이 되지 않았다.

옥스퍼드 대학교 대학원에서 통계학을 공부하던 그는 군 복무를 위해 해군에 입대했다가 언어 실력을 인정받아 특별 차출되어 러시아어를 교육받았다. 거의 2년 동안 군에서 러시아어를 공부하고 제대한 후, 남아 있던 대학원 학기를 마무리하던 중, 학교 게시판에 붙은 안내문이 그의 눈길을 붙잡았다. 영국 문화원British council에서 러시아의 유명 대학교로 보낼 교환 학생을 모집한다는 안내문이었다. 이미 러시아어도 배웠겠다, 토니는 모스크바에 가면 재미있을 것만 같았다. 선발된 20명에 포함된 그는 모스크바 대학교Moscow State University로 날아갔다.

모스크바에서 교환 학생으로 즐거운 학교생활을 하고 있던 그에게 어느 날 영국에서 편지 한 장이 도착했다. 국립물리연구소에서 진행할 자동번역 시스템 프로젝트에 프로그래머로 참여할 수 있는지 묻는 편지였다. 어떻게 그를 알아냈는지는 모르겠으나 그에게 무려 선임급 자리를 제안했다. 국립물리연구소는 제임스 윌킨슨​2​이 이끄는 팀이 만든 Pilot ACE 컴퓨터를 사용해서 러시아어를 영어로 번역하는 프로그램을 만들고 싶어 했다.

‘자동번역 시스템이라고? 러시아어로 쓰인 글을 영어로 바꾸려면 어떻게 해야 하지?’ 토니는 호기심이 생겼다. 그런데 자동변역시스템에서 가장 기본이 되는 일은 사전 찾기였다. 한 문장을 구성하는 러시아어 단어들에 대해 대응되는 영어 단어를 찾아야 했다. 러·영 사전이 테이프에 저장되어 있으면, 컴퓨터는 테이프를 쭉 훑어서 러시아어 단어를 찾아냈다. 문제는 테이프를 검색하는 속도가 너무 느렸다는 것이다. 한 단어를 찾을 때마다 테이프를 다시 처음으로 되감고 시작해야 한다면 한 문장을 번역하기 위한 단어 검색에만 몇 분을 써야 할 지경이었다.

토니는 꾀를 냈다. 테이프에 들어 있는 러·영 사전 정보는 알파벳 순서로 저장되어 있으므로, 검색해야 할 단어들도 알파벳 순서로 준비해 놓는다면 단 한 번의 테이프 훑기 동작 안에 원하는 단어들을 모두 찾을 수 있었다. 그렇다면 이제 남은 문제는 검색해야 할 단어들을 알파벳 순서대로 정렬sorting하는 일이었다.

소파에 앉아 토니는 이런저런 방법을 궁리해보았다. 그의 머릿속에서 러시아어 단어들이 이리저리 날아다녔다. 그는 방법을 생각해 냈지만 마음에 들지 않았다. 뭔가 더 영리한 방법이 있어야 할 것만 같았다. 마치 수수께끼를 푸는 마음으로 끙끙대며 궁리하던 그에게 갑자기 ‘번쩍’하며 영감이 떠올랐다. 당장 프로그램을 작성할 수는 없는 상황이었지만 분명히 좋은 알고리듬이었다.

하지만 그는 국립물리연구소의 입사 제안을 거절했다. 러시아에서의 생활은 그를 바쁘게 만들었고 그렇게 시간이 흘렀다. 그런데 엘리엇 브라더즈 사의 프로그래머로 영국에 돌아온 그를 기다리고 있던 것은 다름 아닌 정렬 문제였다.


“토니 군. 자네 말이 맞았어. 100원은 자네 걸세.”

토니의 사수는 쿨하게 자신이 틀렸음을 인정했다. 처음에는 무시하는 듯한 태도로 마지못해 토니의 설명에 귀를 기울였던 그였지만 설명을 다 들은 후에는 진지한 표정으로 바뀌어 있었다. 그는 토니의 알고리듬을 직접 프로그램으로 작성해보겠다고 소매를 걷었다. 그리고 마침내 결과를 확인하고는 토니를 칭찬했다.

“자네. 어떻게 이렇게 훌륭한 알고리듬을 생각해냈나. 대단하군.”

토니는 그냥 말없이 빙그레 웃음을 지었다.

“그런데 이 알고리듬은 뭐라고 불러야 할까? 뭐 좋은 아이디어 있나?”

미처 생각해보질 않았던 토니는 적당한 답이 떠오르지 않았다.

“글쎄요. 그냥 빠른 정렬Quick sort이라고 하면 어떨까요.”

1 2 3 4 5 6