컴퓨터 과학자로서의 삶
케네스 아이버슨(Kenneth Eugene Iverson)은 1920년 12월 17일에 캐나다 알버타주의 작은 마을인 캠로즈 근처 농장에서 태어났다. 아직 만 6살도 되기 전인 1926년 4월 1일에 그는 초등학교에 입학했는데 그해 6월에 2학년으로 월반했고 그다음 해 말에는 4학년으로 월반했다. 아이버슨은 당시 상황을 좀 희화해서 회상한 바가 있다.
내가 이해하는 바로는, 내 부친께서는 재미 삼아서 그 상서롭지 못한 날(역자: 만우절을 의미한다)을 입학일로 골랐는데, 연로하고 미신을 믿었던 교장 선생님은 불과 3개월 만에 나를 2학년에 올리는 식으로 대응했다. 물론 내가 2학년이 될 준비가 되었을 리는 만무했다. 마침 그 교장 선생님이 은퇴하시고 새 교장 선생님이 오셨다.
놀랍게도 새 교장 선생님은 나를 1학년에도, 2학년에도 넣어주지 않고 따로 가르쳤다… 그 해 말에 나는 4학년으로 올라갔고 12살이 되었을 때는 9학년‡으로 올라갈 수 있었다.2
그가 월반을 쉽게 할 수 있었던 이유 중 하나는, 학습 환경에 있다. 그가 사는 마을은 워낙 인구가 적었고 그래서 전교생이 30명에 정식 선생님이 한 명뿐이었다. 그래서 모든 학생이 한 교실에서 공부했다. 따라서 저학년 학생이 고학년 학생의 수업을 접하기 쉬웠으며 재능만 있다면 고학년의 공부를 따라잡을 수 있었다.
그런데 그가 9학년이 되었을 때 환경에 변화가 찾아왔다. 주province 정부에서 시골 학교에 대한 구조 조정을 시작했고 교실 한 개짜리 학교들이 통폐합되었다. 그래서 아이버슨은 이제 걸어 다니기 힘든 거리의 학교에 배치받았고 결국 새 학교에서 가까운 지인의 집에 기숙하게 된다. 새로운 환경에서 이제 12살에 불과했던 아이버슨이 나이 차가 많은 학생들과 함께 생활하기는 쉽지 않았다. 그래도 학교생활이 재미있었던 아이버슨이었지만 9학년을 마치고 큰 결정을 내렸다. 학업을 중단하기로 한 것이다. 여러 이유가 있었지만 가장 큰 이유는 앞날이 너무 뻔하다고 생각했기 때문이었다. 그는 공부를 계속해봤자 결국 학교 선생님이 최선이라고 보았다. 시골 촌구석에 살았던 그는 대학교에 대해서는 전혀 들어본 바가 없었다.
더 이상 학교에 다니지는 않았지만 그의 학습 욕구가 사라진 것은 아니었다. 그는 대도시(에드먼튼)에서 공부하고 있던 사촌을 통해서 과학 관련 서적을 빌려서 보았다. 무선 통신에 관한 관심을 키우던 그는 17살이 되던 해에 미국 시카고에 있는 디포레스트 직업훈련학교De Forest’s Training School의 원격 강좌correspondence course에 등록했다. 이 원격 강좌는 우편을 통해서 진행되었지만 마지막에 시카고에서 2주간의 실습을 하게 되어 있었다. 시카고에서 2주일을 보낸 그는 무선 통신 관련 서적들에서 미적분이 사용됨을 깨닫게 되었고, 고향으로 돌아오는 길에 에드먼튼에 들러서 미적분에 관한 중고 서적을 구입했다.
알버타의 겨울은 길고 추워서 농장 일을 하기 어렵게 만들 때가 많았다. 그래서 덕분에 미적분학 책을 공부할 여유가 생기곤 했다. 삼각함수들이 결국은 지수 함수를 써서 하나로 통합되는 방법을 발견했을 때의 기쁨은 여전히 가장 생생하게 기억에 남아 있다.2
그의 인생에 있어 결정적인 계기는 군 생활 중에 찾아왔다. 그는 1942년에 육군으로 징집되었다가 1943년에 공군에 합류했다. 캐나다 군에서는 군 장병에게 원격 교육 강좌를 들을 수 있게 해 주었다. 그는 8 과목이나 이수해서 고등학교 과정을 끝낼 수 있었다. 더 중요했던 것은 대학교라는 곳에 진학하면 그저 초중고등학교 선생이 아니라 다른 직업을 가질 수 있음을 알게 된 것이었다.
1946년에 제대한 그는 캐나다의 퀸즈 대학교Queen’s University에 입학했고 수학과 물리학을 공부했다. 수학과 학과장이었던 제프리 교수는 그에게 대학원 진학을 권유했다. 아이버슨은 군 복무 경력 때문에 학비 걱정을 할 필요가 없었고 대학교 졸업 후에 딱히 뭘 해야겠다는 계획도 없었으므로 제프리 교수의 권유를 받아들였다. 그가 퀸즈 대학교 대학원에 진학하겠다고 말하자 제프리 교수는 친절하게도 퀸즈 대학교에서는 더 이상 배울 것이 없다고 말해주었다. 이미 30살이나 되었고 애가 둘이나 있었던 아이버슨은 고민에 빠졌다. 하지만 제프리 교수는 강력하게 대학원 진학을 추천해주었다. 결국 아이버슨은 1950년에 퀸즈 대학교를 졸업함과 동시에 미국 하버드 대학교 수학과 대학원에 입학했다.
아이버슨은 1년 만에 석사 학위를 받았다. 그런데 다시 고민에 빠졌다. 수학 성적이 나쁘지는 않았지만 수학 공부가 즐겁지 않았다. 그래서 그는 공과 대학원으로 방향을 틀었다. 왜냐하면 하워드 에이컨 교수의 “스위칭 이론switching theory” 강의가 재미있었기 때문이었다.
에이컨 교수는 그에게 하버드 대학교 경제학과 교수이던 바실리 레오티에프§를 도우면서 박사 논문을 준비하라고 권유했다. 레오티에프 교수는 “투입-산출 분석Input-Output Analysis” 이론을 위해 에이컨의 컴퓨터를 사용하고 있었다. 아이버슨은 그 작업에 “자본재Capital Goods“를 추가하는 일을 했다.
1954년에 박사 학위를 받은 그는 강사로 고용되었다. 당시 에이컨 교수는 “자동 데이터 처리Automatic Data Processing“라는 이름으로 석사 과정¶을 만들었고 이 과정에서 강의할 사람이 필요했다. 아이버슨은 컴퓨터를 이론적으로 가르쳐야 하는 상황에서 큰 어려움에 봉착했다. 그가 배워왔고 익숙했던 수학적 표기법으로는 컴퓨터의 동작을 제대로 표현해내기 어려웠다. 결국 그는 수업을 위해서 직접 자신만의 표기법을 만들어야 했다.
나는 박사 논문을 쓸 때 사용했던 행렬 대수, 퀸즈 대학교 3학년 때 수강했던 텐서 분석Tensor analysis 강의에서 배웠던 고차원 배열과 행렬의 체계적 사용법, 그리고 올리버 헤비사이드Oliver Heaviside#가 맥스웰 방정식을 다루면서 소개했던 연산자Operators 개념 등을 도입했다.2
1955년에 조교수에 임명된 그는 5년의 조교수 생활이 끝나자 사회로 나와야 했다. 하버드에서는 5년 안에 종신 교수가 되지 못하면 떠나야 한다는 규칙이 있었다. 하지만 상황은 그에게 나쁘지 않았다. 민간 연구 센터들이 여기저기에서 설립되고 있었고 덕분에 유수의 대학교에서 가르쳐 본 경험이 있는 사람들에게는 대학 봉급의 두 배가 제시되었다. 아이버슨은 IBM의 연구 부문에 입사했다.
1960년에 IBM에 입사할 때 이미 아이버슨은 자신의 표기법에 관한 책을 거의 다 완성해 놓은 상태였다. 그는 자신의 표기법이 실제로 사용될 수 있음을 맥킨지 컨설팅에서 6개월 동안 일하면서 확인한 상태였다. 그는 하버드 대학교 시절에 자신의 강의를 도와주던 대학원생이었고 이제는 그보다 먼저 IBM에 입사한 상태였던 프레드 브룩스Fred Brooks**와 함께 이 책을 다듬고 보완했다. 내용이 너무 많아지자 <프로그래밍 언어3>와 <자동 데이터 처리4>라는 두 권의 책으로 나누어 출간되었다.
<프로그래밍 언어>의 2장은, 그의 표기법을 사용해서 IBM 7090 컴퓨터를 정규적으로formally 기술하는 내용을 담고 있다. 이 책이 출간되자 System 360 설계에 참여하고 있던 에이든 팔코프Adin Falkoff가 이 표기법을 사용하여 System 360 컴퓨터를 정규적으로 기술하기 시작했고, 아이버슨도 참여하여 작업을 완수했다.5
표기법에 대한 자신감이 붙은 아이버슨은 이제 이 표기법을 하나의 프로그래밍 언어로 구현할 생각을 하게 된다. 마침 스탠퍼드 대학교의 학생 몇 명이 아이버슨의 방법에 큰 관심을 보였고 IBM에 입사하여 아이버슨의 팀에 합류했다. 이들의 노력으로 1965년 말에 7090 컴퓨터에서 포트란 언어를 사용하여 인터프리터가 구현되었다. 그리고 1966년에는 시분할시스템에서 동작하는 인터액티브 버전 APL\360이 System 360용으로 구현되면서 IBM 내부에서 사용되기 시작했다. 1968년부터는 IBM 외부에도 서비스가 제공되었다.
아이버슨의 표기법은 1966년까지 계속 ‘아이버슨의 수학적 표기법’이라는 이름으로 불렸다. 1966년에 APL\360을 출시하면서 처음으로 APL이라는 이름이 사용되었다. APL은 아이버슨이 발표한 책 <프로그래밍 언어 A Programming Language3>의 제목에 있는 단어들의 첫 글자를 따온 것이다.
1966년 6월에 구현이 시작되면서 문서화 작업도 함께 시작되었습니다. 팔코프와 아이버슨은 ‘그것’이라고 표현하던 것에 이름을 붙일 때가 되었음을 깨달았습니다. 여러 제안들이 있었습니다…. ‘Mathlab’, …, ‘Iverson’s Better Math’…
그러던 어느 날 팔코프가 아이버슨의 사무실로 뚜벅뚜벅 걸어들어와서는 칠판에 ‘A Programming Language’라고 쓰고는 그 밑에 약자인 ‘APL’을 덧붙였습니다. 그렇게 해서 그 이름이 태어났습니다.6
IBM은 APL의 가능성을 높게 보았고 아이버슨을 포함하여 관련 연구원들을 모아 별도의 센터를 만들었다. 그리고 1970년에 아이버슨은 IBM의 펠로우가 되었다. 그는 APL의 확산을 위해 노력했고 특히나 교육 현장에서 유용한 도구로 쓰일 수 있기를 희망했다. 수학, 물리뿐만 아니라 영문학, 기계 공학, 화학 등의 과목에도 적용하려는 시도가 있었다.
시간이 흐르면서 APL의 주도권이 IBM의 팔로알토 센터로 넘어가 버리자 아이버슨은 IBM을 떠나기로 결심한다. 그는 다음 행선지로 시분할 서비스 회사인 I.P. Sharp를 마음에 두었다. 캐나다에 본사를 둔 I.P. Sharp는 APL을 적극적으로 도입하던 중이었다. 7년을 이곳에서 보내고 그는 1987년에 퇴사를 하면서 더 이상 봉급쟁이로 살지 않겠다고 선언했다. 그리고 APL을 현대적으로 개선하는 일에 다시 뛰어들었다. 그 결과물이 J라는 프로그래밍 언어이다. J는 APL과는 다르게 특수문자를 사용하지 않았고 다양한 플랫폼 위에서 실행이 가능했다.
J를 개선하는 일을 계속하던 그는 2004년 10월 16일에 J 안내서를 수정하던 중 뇌졸중을 일으켜 쓰러졌다. 그리고 사흘 후에 83세를 일기로 세상을 떠났다.
답글 남기기