컴퓨터 과학자로서의 삶

젊은 시절의 니클라우스 비르트(1969)​†​

니클라우스 비르트(Niklaus Emil Wirth)는 1934년 2월 15일에 스위스 빈터투어에서 태어났다. 당시 부모님이 모두 40대였다고 하며 아버지는 지역 고등학교gymnasium의 지리 선생님이었다.

아주 어렸을 때는 기차에 관심이 많았다고 한다. 당시 그의 집 옆으로 기찻길이 지나가서 매일 기차를 볼 수 있었고 기차 그리기를 즐겨 했다.​3​ 그러다가 좀 커서는 비행기 조종사로 희망이 바뀌게 되는데 전쟁통에 머리 위로 날아다니던 비행기를 보고 비행기에 빠졌기 때문이었다고 한다. 그리고 고등학생이 되어서는 전자회로에 꽂혀서 무선 제어 장비를 구매하기도 했는데 스위스의 첫 구매자 중 한 명이었다.​4​

취리히 연방 공과대학의 전자 공학과를 졸업한 그는 회사 생활을 시작했으나 잘 적응하지 못했다. 그러던 중 그의 아버지는 그에게 넓은 세상에 나가볼 것을 권유했고 그래서 그는 결혼한 지 나흘 만에 짐을 싸서 미국으로 향했다. 프랑스 파리를 거쳐 르아브르 항구에서 배를 타고 일주일 만에 미국 뉴욕에 도착한 그는 친구의 환영을 받았으나 미국에 정착하지 않았다. 원래는 미국에 머무르고 싶었지만 베트남 전쟁이 시작되면서 이민자로서의 위치가 불안하게 느껴졌기 때문이었다.​3​

그래서 그는 부인과 함께 캐나다로 넘어갔고 퀘벡주에 있는 라발 대학교 대학원에 입학했다. 그리고 굿스피드Goodspeed라는 이름의 교수가 하는 수치계산 과목을 들으면서 처음으로 컴퓨터를 접하게 된다.​4​ 안타깝게도 그는 컴퓨터를 실제로 사용하지는 못했다. 그는 매우 원했지만 쓰려고 하면 항상 수리 중이었다고 한다.

일 년 만에 석사학위를 받은 그는 주위의 권유로 박사 과정에 진학하기로 마음먹었고 미국 캘리포니아 대학교 버클리의 컴퓨터 과학과 대학원으로부터 입학허가를 받았다. 초기에는 수학에 치중한 이론적인 연구에 흥미를 잃어가기도 했지만 해리 허스키Harry Huskey교수를 만나면서 재미를 붙이게 된다.​‡​ 비르트는 허스키 교수가 설계해서 정식으로 시장에서 판매되던, 벤딕스 사의 G-15 컴퓨터로 프로그래밍을 시작했다. 동시에 그는 박사 논문 주제를 찾던 중, 알골 언어의 컴파일러를 만들려고 시도하던 대학원생 팀을 만나게 되었다.

그것은 넬리악NELIAC이라는 언어였고 알골 58에서 파생된 언어였습니다. 정말로 엉망진창이었고 이해하기가 너무 어려웠습니다… 나는 그것을 파고들었습니다. 그리고 처음으로 작은 알골 컴파일러를 만들었습니다. 알골 60 컴파일러였습니다… 내가 프로그래밍 언어, 컴파일러 설계에 발을 담그게 된 계기입니다.​4​

이 컴파일러는 수학자의 이름을 따서 오일러Euler라고 불렀다.

1963년에 박사 학위를 받은 그는 스탠퍼드 대학교 컴퓨터 과학과의 조교수로 채용되었다. 그는 박사 과정에 하던 일을 계속할 수 있었고 그 과정에서 알골 언어 위원회에도 초대되었다. 위원회에서 그는 토니 호어, 에드스거 다익스트라 등과 교류하면서 적극적으로 참여했다. 워킹그룹 2.1은 알골 60의 다음 단계를 준비하는 그룹이었다. 여기에 속한 비르트는 알골 60 설계의 주요 인물이었던 반 베인하든 박사와 자주 만남을 가지면서 제안서를 준비했다. 그런데 제안서를 발표하는 자리에서 놀라운 일이 벌어졌다.

나는 암스테르담에서 두 달 동안 작업했습니다. 반 베인하든 박사와는 자주 만남을 가졌죠. 그리고 두세 달이 지난 후에 그르노블 근처에서 열린 회의에서 만났고 나는 내 제안서를 발표했습니다. 그런데 깜짝 놀라게도 반 베인하드 박사는 그의 제안서를 따로 발표했습니다. 그건 내가 전혀 알지 못하던 것이었습니다.​4​

비르트가 제안한 언어는 알골 X라고 불렸고 반 베인하든 박사가 제안한 언어는 알골 Y라고 불렸다. 비르트, 토니 호어, 에드스거 다익스트라 등을 포함하는, 알골 X 지지자들은 최대한 빨리 알골 60의 새 버전을 만들자는 입장이었다. 당시에 PL/I이라는 언어가 강력한 경쟁자로 대두되고 있었으므로 알골 60을 크게 건드리지 않고 부족한 면을 보완하는 식으로 새 버전을 빨리 만들고 싶어 했다. 이에 비해 알골 Y는, 알골 60처럼 프로그래밍 언어의 새로운 이정표가 될 수 있는 획기적인 언어를 만들자는 것이었고 그러다 보니 당장 구현하기에는 어려운 개념들이 많이 포함되었다.

위원회에서는 알골 Y를 선택했다. 자신의 제안이 거부되자 비르트는 조용히 위원회에서 빠져나왔고 스탠퍼드 대학교로 돌아왔다. 그러고는 대학원생들과 함께 알골 X를 구현했다. 이때가 1966년이다. 이것은 후에 알골-W로 알려졌으며 IBM 컴퓨터 사용자들 사이에 널리 퍼졌다.


알골 언어와 관련하여 국제 모임에 자주 참석해야만 했던 비르트는 육체적으로 많이 지쳤다. 알골-W를 완성한 그는 일 년의 무급 휴가를 신청할 생각까지 하고 있었다. 그런데 이때 취리히 대학교에서 조교수 자리를 주겠다는 제안을 해왔다. 그는 미련 없이 스탠퍼드 대학교의 교수직을 버리고 스위스로 향했다. 그리고 다음 해인 1968년에 모교였던 취리히 연방 공과대학에 갓 생긴 컴퓨터 공학과로 자리를 옮겼다.​4​

컴퓨터 공학과에 맞는 교육 과정을 만들고 싶었던 그는 교육용 프로그래밍 언어의 필요성을 절감했다. 그래서 알골 언어의 특징을 계승하면서 가볍게 쓸 수 있는 언어를 설계했고 CDC 6000 메인프레임 컴퓨터에서 돌아가는 컴파일러를 만들었다. 그는 이 언어에도 수학자의 이름을 붙였다. 파스칼Pascal이었다. 파스칼은 구조적 프로그래밍과 함께 자료구조를 가르치기에 적합한 언어였다.

파스칼이 문서로 공개된 것은 1970년이었습니다. 1972년에는 처음으로 300명 정도 수강하는 수업에서 사용했습니다. 하지만 진짜로 확 퍼지게 된 것은 몇 년이 지나서 1975년쯤이었을 겁니다. 그때 미국에서 마이크로컴퓨터가 본격적으로 확산되면서 학교와 가정에도 보급되기 시작했습니다… 캘리포니아에 있는 볼랜드Boland라는 회사가 파스칼에 관심을 가졌습니다. 터보 파스칼Turbo Pascal을 만들었죠. 한 장의 디스켓에 넣어서 50불에 판매했는데 당연히 중요한 사건이었습니다.​4​

당시에 메인프레임 컴퓨터용 컴파일러의 가격이 10,000불 이상이던 시절이었으므로 50불짜리 컴파일러가 학생이나 일반인에게 큰 호응을 받았음은 충분히 짐작이 가능하다.

그런데 볼랜드는 어떻게 그렇게 저가에 컴파일러를 판매할 수 있었을까? 컴파일러를 개발하려면 만만치 않은 자원이 들어갔을 터인데 말이다. 그 이유는 파스칼 P 컴파일러에 있었다. 취리히 연방 공과대학교에서만 교육용으로 사용되던 파스칼은 소문이 나기 시작했다. 당시 미국과 유럽을 비롯하여 세계의 많은 대학교에서는 컴퓨터를 본격적으로 가르치기 시작했는데 교육용으로 적합한 언어가 마땅히 없었다. 아직 C 언어가 공개되기 전이었다. 그래서 비르트 교수에게 지원을 요청하는 편지가 많이 왔다. 하지만 문제는, 학교마다 보유한 컴퓨터 기종이 다르기 때문에 비르트 교수가 그 모든 요청을 들어줄 수 없었다는 점이다. 비르트 교수는 멋진 해결책을 내놓았다. 가상의 컴퓨터를 가정하고 그 컴퓨터의 명령어로 컴파일되는 파스칼 컴파일러를 만들었다. 그러면 각 대학에서는 이 가상의 컴퓨터가 사용하는 명령어 집합을, 각자 보유한 실제 컴퓨터의 명령어 집합으로 변환하는 후처리 프로그램만 작성하면 되었다. 비르트 교수는 이 파스칼 컴파일러를 P 컴파일러라고 불렀다. P는 portable(이식가능한)의 첫 글자를 따온 것이다. 타 기종에 이식하기 쉽다는 의미였다. 그리고 그가 만든 가상의 컴퓨터 명령어 집합을 p-코드라고 불렀다.​4​

P-코드는 오늘날 가상 기계virtual machine에 해당한다. 파스칼 언어는 자바Java 언어의 시조에 해당하는 셈이다.


1976년에 비르트는 안식년을 맞이했다. 비르트는 다른 대학교에서 강의하면서 안식년을 보낼 생각은 없었다. 마침 그는 미국 로스앤젤레스에서 열린 학회에 참석했다가 버클리 시절에 알고 지냈던 사람을 만나게 된다. 그는 버틀러 램슨​§​이었다. 비르트는 램슨이 제록스에서 일하는 줄 알고 있었다. 그래서 그에게 제록스 연구소도 안식년 교수를 받아주는지 물었다. 그런데 안타깝게도 제록스는 그런 프로그램이 없었다. 하지만 램슨은 노력해 보겠다고 했고, 몇 달 후에 비르트는 초대장을 받았다.

나는 (외국에서) 폭스바겐 캠핑 버스를 한 대 구매해서 스위스로 배달시켰습니다. 여행 가방들을 꾸겨 넣고 아내와 세 아이들을 그 작은 차에 태우고는 벨기에의 안트베르펜Antwerpen으로 향했고, 해협을 건너 영국으로 넘어간 후에 사우샘프턴에서 퀸 엘리자베스 2호 배에 올라탔죠. 그리고 7일 만에 뉴욕에 도착했습니다.​4​

미 대륙을 횡단해서 마침내 서부에 있는 제록스 연구소에 도착한 그는 그곳에서 벌어지는 일들에 흥분하고 말았다. 특히나 개인용 컴퓨터인 알토Alto는 그의 마음을 뺏어갔다. 이제 그는 대형 컴퓨터에 연결된 터미널을 사용하고 싶지 않았다. 나 혼자 쓸 수 있는 개인용 컴퓨터를 쓰고 싶었다. 아, 그런데 알토 컴퓨터는 파는 물건이 아니었다. 알토가 사용하던 컴파일러도 마찬가지였다. 비르트에게 남은 선택지는 하나밖에 없었다. 직접 만드는 수밖에.

스위스로 돌아온 비르트는 제록스의 알토와 같은 개인용 컴퓨터를 직접 만들기로 마음먹었다. 어릴 적 기차에서 비행기로, 전자회로로 넘어갔던 그의 관심이 이제는 개인용 컴퓨터가 된 셈이었다. 하지만 비르트는 컴퓨터 하드웨어를 만들 자신이 없었다. 그런 그에게 백기사가 나타났다. 미국 유타 대학교에서 하드웨어 강의를 하던 조교수가 그의 밑에서 소프트웨어로 박사 과정을 밟고 싶다는 연락을 해 온 것이다.

나는 이렇게 말했습니다. “음, 우리는 하드웨어에 관해 배우고 싶습니다. 아마도 서로에게 좋은 교환이 될 것 같군요.” 그는 (스위스에서) 가족과 함께 3년을 보냈습니다. 그 결과물이 릴리스Lilith 컴퓨터입니다. 알토를 좇아 만들었죠. 약간은 더 현대적인 기술이 적용되었습니다.​4​

릴리스 컴퓨터를 만드는 과정에서 비르트는 시스템 설계와 시스템 프로그래밍에도 사용할 수 있는 새로운 언어를 만들었다. 모듈라-2Modula-2 언어는 파스칼 언어를 계승했다고 볼 수 있는데 한 명의 개발자가 아닌 여러 명의 협업에 적합하며 다중 처리를 지원할 수 있도록 설계되었다.


비르트는 직접 손으로 뭔가를 만드는 것을 좋아하는 사람이었다. 그는 수학 이론에는 흥미를 느끼지 못했다. 한 인터뷰에서 그는 앨런 튜링의 <계산 가능한 수에 관하여 – 결정문제에 대한 응용과 함께​5​> 논문을 읽은 적이 없다고 솔직하게 인정했다.

솔직히 말해서 튜링 기계 없이도 나는 아주 잘 살아왔다고 말하고 싶네요. 그것은 정말로 실용성은 전혀 없습니다. 계산 가능성을 정의하는 사고 실험일 뿐입니다.​3​

1980년대에도 그의 열정은 식지 않았다. 그는 모듈라-2 언어가 너무 비대해졌다고 느꼈다. 그래서 더 간결하면서도 유연하고 강력한 언어를 만들기 위해 오베론Oberon 언어를 개발했다. 1990년대 초에는 하드웨어 설계에도 관심을 가져서 Verilog 언어를 사용하여 FPGA 회로를 직접 설계하기도 했다. 그는 1999년에 은퇴했다.

1 2 3 4 5