컴퓨터 전문가로서의 삶
앨런 제이 펄리스(Alan Jay Perlis)는 1922년 4월 1일에 미국 펜실베이니아주 피츠버그에서 태어났다. 공립이지만 지역에서 명문으로 꼽히던 테일러 올더다이스Taylor Allderdice 고등학교를 졸업한 그는 1939년에 카네기 기술 대학Carnegie Institute of Technology에 입학했고 화학을 전공하여 좋은 성적으로 1942년 12월 20일에 졸업했다.2
졸업식장을 나온 그를 기다리고 있던 것은 제2차 세계대전이라는 혼돈이었다. 졸업 후 이틀 만인 12월 22일에 그는 미 육군항공부대US Army Air Force의 기상 항공 장교 후보생 프로그램에 등록했다. 9개월의 훈련을 마치고 기상 담당 소위 계급장을 단 그는 펜실베이니아 해리스버그에 있던 육군 항공부대 정보 학교에 배치되었다. 이곳은 사진 판독과 전투 정보 수집을 훈련시키는 곳이었다. 얼마 후 펠리스는 영국에 파병된 미 육군 제9 항공부대의 작전 본부로 전출되었고 거기서 18개월 동안 항공정찰대대의 정보 장교이자 기상 장교로 복무했다.
1945년에 전쟁이 끝나자 그는 고향으로 돌아왔다. 9월에 군복을 벗은 그는 캘리포니아 공과대학California Institute of Technology의 화학과 대학원에 등록했다. 하지만 곧 그는 화학에 더 이상 흥미를 느끼지 못함을 깨닫게 되었다. 수학으로 눈을 돌린 그는, MIT 수학과에 입학해서 1949년에 석사 학위를, 1950년에 박사 학위를 받았다. 그리고 이 과정에서 운명적으로 컴퓨터와 조우하게 된다. MIT에서 개발하고 있던 훨윈드whirlwind 컴퓨터였다.
훨윈드 컴퓨터는 실시간 처리를 목표로 개발되던 야심적인 프로젝트였다. 펄리스의 지도교수이던 필립 프랭클린은 이 프로젝트의 수학 그룹Mathematics Group을 이끌고 있었다. 이 그룹이 맡은 임무는 훨윈드 컴퓨터를 위한 소프트웨어를 준비하는 것이었다. 훨윈드 프로젝트는 MIT의 젊은 대학원들을 끌어당겼고 현대적인 계산 기술을 맛보게 해주었다. 펄리스와 같이 군 경험이 있는 대학원생들이 파트 타임으로 프로젝트에 참여했다. 1948년 여름과 1949년 여름에 펄리스는 기본적인 프로그램을 작성하는 일을 도왔고 수치 계산법을 정리하는 일을 했다. 아직 기계는 완성되지 않은 상태였다.
그가 처음으로 직접 컴퓨터를 만지게 된 것은 1951년에 애버딘 성능 시험장Aberdeen Proving Ground의 탄도미사일 연구소에서 잠시 일할 때였다. 여기서 그는 탄도미사일 궤적 표를 계산했다. 컴퓨터를 탄생시켰던 일이 바로 그것이었고 그 첫 주역이었던 ENIAC이 그곳에 있었다. 펜실베이니아 대학교 무어 공대에서 개발된 이 컴퓨터는 1947년에 탄도미사일 연구소로 옮겨져 있었다. 뿐만 아니라 저장형 프로그래밍 컴퓨터의 탄생을 주도한 EDVAC도 1949년에 이곳에 설치된 상태였다.
1952년 1월에 펄리스는 다시 MIT로 돌아왔다. 훨윈드 프로젝트는 이미 끝난 후였고 훨윈드 컴퓨터를 기반으로 하는 방공 시스템 개발이 진행 중이었다. 적의 공습을 자동으로 실시간 감지하는 시스템이었다. Cape Cod라는 이름의 이 시범 프로젝트에 펄리스도 참여했다. 1953년에 가동을 시작한 Cape Cod 시스템은 미국 전역을 방어하는 SAGE의 기반이 되었다.
MIT에서의 시간은 짧았다. 9월에 그는 퍼듀 대학교Purdue University의 수학과 조교수이자 통계 연구소 계산 분과의 책임자로 채용되었다. 당시 퍼듀 대학교는 IBM의 CPC라는 초창기 계산 기계를 확보했는데 이 기계를 제대로 사용하기 위해서 현대적인 컴퓨팅 기술에 익숙한 사람을 찾고 있었다. 퍼듀에 도착한 펄리스는 CPC라는 기계에 실망했다. 이 기계는 펀치 카드를 사용했고 회계 처리용으로 설계된 장치였다. 그는 통계 연구소를 설득해서 Datatron 205라는, 당시로는 최신의 중형급 컴퓨터를 들여왔다. 그리고 1955년 초에 이 기계에서 사용할 “수학 언어 컴파일러” 개발에 착수했다. 후에 이 컴파일러에는 IT(Internal Translator)라는 이름이 붙었다.
IT 컴파일러의 완성은 퍼듀 대학교가 아닌 카네기 기술 대학에서 이루어졌다. 1956년에 그는 모교인 카네기 기술 대학의 수학과 조교수이자 계산 센터장으로 자리를 옮겼다.그리고 IBM 650 컴퓨터에서 IT 컴파일러의 첫 버전을 완성했다. 아직 포트란FORTRAN이 정식으로 발표되기 전이었다. IT 컴파일러는 다른 대학들로 퍼졌고 프로그래밍 기술과 컴파일러 기술 개발을 자극하는 역할을 했다.§
1957년에 펄리스 교수는 ACM의 카르(John Carr) 학회장으로부터 만나서 할 이야기가 있다는 연락을 받았다. 카르 학회장은 프로그래밍 언어에 큰 관심을 가지고 있었다. 특히나 당시 산업계에 컴퓨터가 점점 퍼지면서 컴퓨터를 사용하는 기업 담당자들은 프로그램의 부족과 프로그래밍 인력 확보에 어려움을 겪고 있었다. 다행히 ‘사용자 그룹’이라는 것이 결성되어 같은 기종을 쓰는 사용자끼리 정보를 교환하고 직접 작성한 프로그램을 공유하는 등의 활동이 활발해지고는 있었지만 현장의 수요를 만족시키기에 충분치 않았다. 개발 비용을 줄이기 위해서 그들은, ‘기종에 상관 없이 쓸 수 있는 단일한 프로그래밍 언어’를 학계에 요구하고 있었다.
이는 미국만의 문제가 아니었다. 유럽에서도 독일을 필두로 여러 국가에서 컴퓨터 프로그래밍 자원의 부족을 체감하고 있었다. 그래서 독일과 스위스의 프로그래밍 전문가들이 모여 연구 그룹(GAMM)을 결성했고 차세대 프로그래밍 언어를 설계했다. 이들은 미국도 함께 하기를 원했다. ACM의 카르 학회장은 펄리스 교수가 그 일에 적격이라고 생각했다. 펄리스는 기꺼이 임무를 맡았다. 미국의 연구 그룹을 이끌고 그는 컴퓨터 프로그래밍의 새로운 장을 열기 위한 발걸음을 크게 내딛었다.
취리히에서 일주일 동안 열렸던 회의 내내 우리 여덟 명은 정말로 모두 낙관적이었습니다. “무슨 비용을 치루더라도 타협을 이루겠다”라는 자세였죠. 내가 논문에도 적었지만 스티펠(Stiefel) 교수는 당시 회의가 시작될 때 이런 인삿말을 했습니다. “좋은 결과를 얻는 데 있어 가장 큰 적은 최고의 결과를 얻으려 하는 것입니다.”3
ACM과 GAMM 사이의 의견 교환은 서신과 제안서 등을 통해 이루어지고 있었지만 실무자들이 직접 얼굴을 맞대고 토론하게 된 것은 1958년의 취리히 회의가 처음이었다. 1958년 5월 27일부터 6월 1일까지 일주일 동안 미국 측 실무자 4명과 유럽 측 실무자 4명이 스위스 연방 공과 대학(ETH)에서 회의를 진행했다. 미국 대표단은 펄리스를 단장으로 존 배커스(John Backus)¶, 찰스 카츠(Charles Katz)#, 조셉 헨리 웨그스타인(J. H. Wegstein)으로 구성되었고 유럽 쪽은 프리드리히 바우어(F. L. Bauer)**, 허먼 보텐브루흐(H. Bottenbruch), 하인즈 러티스하우저(H. Rutishauser), 클라우스 사멜손(K. Samelson)으로 구성되었다. ETH의 응용수학부를 이끌던 저명한 수치분석가였던 스티펠 교수가 회의의 시작에 앞서 축사를 해주었다.4
양 측 모두, 사용자가 쓰기 편하고 기술적으로 개선된 프로그래밍 언어의 필요성을 공감하고 있었지만 그 배경에는 미묘한 차이가 있었다. 미국은 이미 포트란이 대단한 성공을 거두면서 고급 언어에 대한 관심이 커졌고 그래서 프로그래밍에 대한 새로운 관점을 얻고 싶은 갈망이 컸다. 이에 비해 유럽은 실제로 써 먹을 수 있는 프로그래밍 언어를 가지고 싶어했다. 영국에서는 기계어를 적극적으로 사용하고 있었지만 다른 지역에서는 그렇지 않았다. 특히나 IBM의 컴퓨터와 포트란 언어가 유럽의 컴퓨터 시장을 장악하기 시작하고 있어서 이에 대한 경계심도 강했다.
이렇듯 각자의 속셈은 달랐지만 더 좋은 프로그래밍 언어를 만들어보자는 목표에는 이의가 없었다. 놀랍게도 미국과 유럽에서 각자 미리 준비해온 개선안은 매우 유사했다. 새로운 언어에서 반드시 들어가야 할 사항으로 양 측이 모두 꼽은 것들은 다음과 같다.3
- 스칼라 데이터와 행렬 (scalar data and array)
- 대입문 (assignment)
- 조건문 (conditional)
- 반복문 (loop)
- 프로시저 (procedure)
- 점프 (jump)
물론 이견도 있었다. 예를 들어 대입문의 형식을 놓고 양 측은 완전히 다른 방식을 준비했다. 미국은 포트란에서와 같이 등호의 오른쪽에 있는 값이 등호의 왼쪽에 있는 변수에 대입되는 방식을 생각했지만 유럽은 정반대의 방향을 생각했다. 또한 대입에 사용되는 등호 기호의 형태도 미국에서는 그냥 일반 등호(=)를 생각했지만 유럽에서는 화살표 등호(=>)를 선호했다. 변수 x에 1을 대입하는 작업을 각자 제안한 방식으로 표현하면 아래와 같다.
x = 1; // 미국식
1 => x; // 유럽식
결국 타협이 이루어져서 기호의 형태는 콜론 등호(:=)를 사용하고 대입의 방향은 오른쪽에서 왼쪽으로 이루어지는 안이 도출되었다. 관습적인 차이는 쉽게 극복되기 어려웠다. 마지막 날까지도 결론이 나지 않고 팽팽히 맞섰던 것 중 하나가 소수점 기호였다. 미국은 마침표(.)를 선호했지만 유럽에서는 쉼표(,)를 선호했다. 누군가 책상을 주먹으로 내려칠 정도로 합의가 쉽지 않았다고 한다.4
일주일간의 격렬한 논의가 끝나고 양 측이 공동으로 작성한 보고서가 공개되었다. 펄리스가 직접 참여한 이 보고서는 후에 ‘알골 58 보고서’로 널리 알려지게 되며 현대적인 프로그래밍 언어의 토대가 되었다. 원래 이 회의에서 도출된 새로운 언어의 이름은 알골이 아니었다. 알골도 후보 중의 하나였지만 뭔가 이름이 국제적이지 않다는 이유에서 밀려났고 대신에 IAL(International Algebraic Language)이라는 이름이 선정되었다. 하지만 입에 잘 붙지 않았던지 1959년부터 슬그머니 알골에게 자리를 내어주기 시작했고 1960년에 알골 60 보고서가 나오면서 완전히 알골로 자리잡게 되었다.
알골 58 보고서는 컴퓨터 관련 학계와 업계에 모두 영향을 미쳤다. 미국에서는 알골 58을 하나의 가이드라인으로 삼고 새로운 언어를 만들려는 노력이 여기저기에서 벌어졌다. IBM에서도 내부적으로는 알골 58을 구현하자는 목소리가 있었으나 포트란의 성장을 막을지 모른다는 우려가 제기되면서 힘을 잃었다. 대신에 알골 58을 보완하기 위한 의견을 정리하여 ACM에게 전달했다.
유럽은 좀 더 적극적이었다. 알골 58을 하나의 언어 표준으로 보고 이를 구현하고 싶어했다. 독일과 스위스 외에 프랑스, 영국, 네덜란드, 덴마크, 스웨덴 등지의 컴퓨터 전문가들이 참여를 선언했고 1959년에 ALGOL Bulletin이라는 소식지를 창간했다. ALGOL Bulletin은 알골 58에 대한 개선안을 공유하는 매체가 되었다.
1959년 12월 19일에 바우어 교수는 미국과 유럽의 전문가들에게 초청장을 띄웠다. 2년 사이에 쌓인 개선안을 정리할 필요성이 있었다. 1960년 1월 11일부터 8일 간 13명의 전문가들이 프랑스 파리의 호텔에 모여 다시 한 번 격론의 시간을 가졌다. 잠깐의 회식 시간을 제외하고는 아침부터 저녁까지 13명은 머리를 맞대고 가장 완벽한 프로그래밍 언어를 설계하기 위해 땀을 흘렸다. 폭풍 같은 8일이 지나고 아쉬움을 달래며 이들은 알골 60 보고서를 남기고 자신의 자리로 돌아갔다.††
알골 60 보고서는 알골 58 보고서의 아쉬운 점을 보완해주었다. 특히나 BNF 형식이 도입되어 언어의 문법적인 명세syntax specification를 완벽하게 정의했다. 하지만 모든 것이 완벽하지는 않았다. 언어의 의미적인 명세semantics specification는 여전히 자연 언어(영어)로 기술되어 있었다. 그리고 알골 58에 제기된 다양한 의문들을 모두 다 답해주지도 않았다. 그래서 그것은 단지 읽으면 되는 것이 아니라 읽고 해석해야 한다는 점에서 ‘성경’과 유사하다고 펄리스는 말했다.4
1971년에 예일 대학교의 컴퓨터 과학과 학과장으로 자리를 옮긴 그는 1990년 2월 7일에 세상을 떠날 때까지 쉬지 않고 활동했다.
답글 남기기