켄 톰슨: 모든 것의 조용한 설계자
1969년 벨 연구소(Bell Labs)가 멀틱스(Multics) 프로젝트에서 철수했을 때, 켄 톰슨(Ken Thompson)에게는 구석에 방치된 구식 PDP-7 미니컴퓨터 한 대와 어떠한 공식적인 임무도 남아있지 않았습니다. 그는 그럼에도 불구하고 그것을 이용해 운영체제를 만들었습니다. 현재 유닉스(Unix)와 그 후예들은 지구상의 거의 모든 서버, 전화기, 임베디드 장치에서 실행되고 있습니다. 톰슨의 가장 가까운 동료이자 그 자체로 거물인 데니스 리치(Dennis Ritchie)는 그 첫 번째 버전에 대해 "대부분의 아이디어와 그에 관한 대부분의 작업은 그의 것이었다"고 말했습니다.
이진법 산술
케네스 레인 톰슨(Kenneth Lane Thompson)은 1943년 2월 4일 루이지애나주 뉴올리언스에서 태어났습니다. 자신의 어린 시절에 대한 그의 설명은 특징적으로 소박합니다. "나는 항상 논리에 매료되어 있었고, 초등학교 때조차 이진법으로 된 산술 문제를 풀곤 했습니다. 단지 매료되었기 때문이죠." 마지막 문장은 그 사람 전체를 보여줍니다. 즉, 실용적인 목적이 결합되지 않은 지적 욕구입니다.
그는 1965년에 학사 학위를, 1966년에 석사 학위를 받았으며, 두 학위 모두 캘리포니아 대학교 버클리(University of California, Berkeley)에서 전기 공학 및 컴퓨터 과학 분야였습니다. 그곳에서 그의 논문 지도 교수는 코딩 이론가인 엘윈 벌레캠프(Elwyn Berlekamp)였습니다. 벨 연구소는 1966년 그를 뉴저지주 머레이 힐의 컴퓨팅 과학 연구 센터로 채용했습니다.
유닉스 (Unix)
1967년에서 1969년 사이 톰슨은 벨 연구소, 매사추세츠 공과대학교(MIT), 제너럴 일렉트릭(General Electric) 간의 야심 찬 공동 시분할 프로젝트인 멀틱스에서 일했습니다. 멀틱스는 거대하고 느렸으며 늦었습니다. 벨 연구소는 철수했습니다. 톰슨이 그 프로젝트에서 가져온 것은 아이디어는 옳았지만 실행이 잘못되었다는 확신이었습니다.
그 기원에 관한 이야기는 잘 알려져 있고 약간은 터무니없습니다. 그는 자신이 쓴 게임인 '스페이스 트래블'(Space Travel)을 계속하고 싶었고, 일하기에 적절한 환경을 원했습니다. 버려진 PDP-7에서 최소한의 자원과 제도적 지원 없이 그는 운영체제의 핵심인 계층적 파일 시스템, 프로세스, 일반 파일로 취급되는 장치 파일, 커널과 분리된 명령줄 인터프리터, 그리고 프로그램을 연쇄적으로 연결하는 파이프를 구축했습니다. 이들 각각은 현재 너무나 표준적이어서 그것을 선택으로 인식하기 위해 노력이 필요할 정도입니다.
디자인 철학은 압축이었습니다. 유닉스는 모든 필요를 예상하는 시스템보다는 소수의 조합 가능한 기본 요소를 제공하고 사용자가 원하는 것을 조립하게 했습니다. 1973년에는 20개가 넘는 설치 사례가 존재했습니다. 커널이 아닌 부분을 더 쉽게 작성하기 위해 톰슨은 BCPL에서 파생된 B 프로그래밍 언어를 만들었고, 리치는 이를 개발하여 C 언어를 만들었습니다. 오늘날 세계 인프라 소프트웨어의 대부분은 여전히 이 언어로 작성됩니다.
작은 도구, 깊은 뿌리
톰슨의 다른 작업들도 같은 특징을 가지고 있습니다. 바로 중요한 역할을 하는 간결한 아이디어입니다. 그는 QED 및 ed 편집기에서 정규 표현식을 구현했고, 정규 표현식을 유한 오토마톤으로 변환하는 알고리즘인 '톰슨의 구성'(Thompson's construction)을 고안했습니다. 오늘날 사용되는 거의 모든 정규 표현식 엔진은 이 표기법의 후손입니다.
그는 1971년에 체스 프로그램을 만들었고, 이후 조셉 콘돈(Joseph Condon)과 함께 당시 컴퓨터 체스를 지배했던 특수 목적 체스 기계인 벨(Belle)을 제작했습니다. 그 후 4개, 5개, 6개 기물 엔드게임을 위한 완전한 엔드게임 테이블베이스를 생성했는데, 이는 전체 체스 포지션 클래스에 대한 완전한 해결책으로, 엔드게임 이론을 영구적으로 변화시킨 작업이었습니다.
1992년에는 롭 파이크(Rob Pike)와 함께 UTF-8을 설계했습니다. 이는 단일 바이트 스트림이 지구상의 모든 문자를 전달하면서도 ASCII와 호환성을 유지할 수 있게 하는 문자 인코딩입니다. 현재 웹의 90퍼센트 이상이 이를 사용합니다. 그는 또한 벨 연구소가 1980년대 중반 유닉스 아이디어를 유닉스 그 자체보다 더 발전시키기 위해 만든 분산 운영체제인 Plan 9의 핵심 인물이기도 했습니다.
그의 1983년 튜링 강연인 "신뢰에 대한 성찰"(Reflections on Trusting Trust)은 컴파일러가 자신이 컴파일하는 프로그램에 백도어를 삽입하고 미래의 자기 버전에도 삽입하여 악성 코드가 누구나 읽을 수 있는 소스 코드 어디에도 나타나지 않도록 하는 방식을 설명했습니다. 톰슨 해킹(Thompson hack)은 컴퓨터 보안의 기초 문서이며, 소스는 2023년에 주석과 함께 출판되었습니다.
구글, 그리고 Go
톰슨은 2000년 말 벨 연구소를 은퇴하고 2006년 구글(Google)에 입사하여 롭 파이크 및 로버트 그리세머(Robert Griesemer)와 함께 Go 프로그래밍 언어를 설계했습니다. 그 동기에 대한 그의 설명은 솔직합니다. "우리 셋이 모여서 C++를 싫어하기로 결정했죠." 그는 C++를 "서로 배타적인 아이디어들의 쓰레기 더미"라고 부르기도 했습니다. Go는 세 명의 설계자가 모든 기능을 설득해야 한다는 규칙에 기반을 두었는데, 이는 언어를 작게 유지하기 위한 규율입니다.
훈장과 영예가 꾸준히 쌓였습니다. 1980년 미국 공학한림원(National Academy of Engineering) 선출, 1982년 IEEE 에마누엘 R. 피오레 상(IEEE Emanuel R. Piore Award), 1983년 리치와 함께 ACM 튜링상 수상, 1985년 미국 국립과학원(National Academy of Sciences) 회원, 1990년 IEEE 리처드 W. 해밍 메달(IEEE Richard W. Hamming Medal), 1994년 컴퓨터 파이오니어 상, 1997년 컴퓨터 역사 박물관 펠로우십, 1998년 국가 기술 훈장, 1999년 제1회 쓰토무 카나이 상(Tsutomu Kanai Award), 2011년 일본 국제상(Japan Prize) 등입니다.
켄이 천재라 불리는 이유
ACM의 튜링상 인용은 이례적으로 정확한 주장을 담고 있으며, 그 특성을 정확히 짚어내기 때문에 인용할 가치가 있습니다. "UNIX 시스템의 성공은 몇 가지 핵심 아이디어에 대한 세련된 선택과 그 우아한 구현에서 기인한다... 유닉스 시스템의 천재성은 프로그래머가 다른 사람의 작업 위에 설 수 있게 하는 프레임워크에 있다."
취향은 운영 단어입니다. 톰슨의 재능은 빼기입니다. 즉, 가장 큰 유용한 행동 공간을 생성할 최소한의 개념 세트를 식별하고 나머지는 모두 거부하는 능력입니다. 파이프가 정형적인 예입니다. 한 프로그램의 출력을 다른 프로그램의 입력으로 연결하는 사소한 메커니즘이 작은 도구들의 모음을 조합 시스템으로 바꿉니다. 정규 표현식, UTF-8, Go는 모두 동일한 최소 충분 설계 패턴을 보여줍니다. 그는 일상적으로 역사상 가장 위대한 프로그래머 중 한 명으로 거론되며, 이 판단은 상을 주는 위원회가 아니라 생계를 위해 코드를 작성하는 사람들로부터 나옵니다.
반론은 이 목록에 있는 대부분의 사람들보다 근거가 빈약하지만 존재합니다. 유닉스는 협업의 산물이었으며, 리치, 브라이언 커니핸(Brian Kernighan), 파이프를 제안한 더글러스 맥길로이(Douglas McIlroy) 등이 깊은 영향을 주었고 튜링상도 공동 수상했습니다. 많은 유닉스 아이디어는 새로 발명된 것이 아니라 멀틱스에서 조정되었습니다. 톰슨은 컴퓨터 과학에서 이론적 결과를 낳지 않았으며, 그의 영향력은 전적으로 인공물과 설계 판단에 있습니다. 이것이 천재성을 구성하는지, 아니면 매우 잘 발달된 기술인지는 타당한 질문입니다. 가장 솔직한 대답은 소프트웨어 분야에서는 그 둘을 구분하기 어렵고, 톰슨의 기술이 대부분 사람의 이론보다 더 중요한 결과를 낳았다는 것입니다.
유산
리눅스(Linux), macOS, Android, iOS 및 거의 모든 인터넷 서버를 실행하는 소프트웨어는 1969년 버려진 기계에서 톰슨이 단독으로 내린 결정에서 비롯되었습니다. 그의 문자 인코딩은 온라인상의 거의 모든 기록된 텍스트를 담고 있습니다. 그의 정규 표현식 알고리즘은 모든 텍스트 편집기 내부에 자리 잡고 있습니다. 그는 2024년 컴퓨터 역사 박물관을 위해 긴 구술 역사를 기록했으며, 애플 제품을 버리고 라즈베리 파이 OS(Raspberry Pi OS)를 운영하며 노년을 보내고 있습니다.
.jpg)