컴퓨터 과학자로서의 삶
윌리엄 카한 (William Morton Kahan)은 1933년 6월 5일에 캐나다 온타리오주의 토론토에서 태어났다. 그는 벨벨Velvel이라는 애칭으로 불렸는데 작은 늑대라는 의미이다.
그의 부모는 폴란드 출신으로 1920년대에 유대인 박해를 피해 캐나다로 이민 왔다. 아버지는 의류공장을 운영했고 어머니는 여성복을 디자인했다. 두 사람은 자녀 교육에 관심 많았고, 그래서 생활은 불편했지만 공립학교가 좋기로 유명했던 포레스트 힐 빌리지Forest Hill Village라는 곳에서 아이들을 키웠다.2
그가 9학년(한국으로 치면 중학교 3학년)에 올라갔을 때 선생님은 그가 아직 학문적인 과목을 들을 수준이 되지 않는다고 판단해서 직업교육 프로그램에 집어넣었다. 그는 드릴 프레스, 선반, 납땜질, 용접 등을 배웠는데 적성에 맞았다고 한다.2
10학년이 되면서 그는 학문적인 과목을 듣게 되었고 점점 두각을 나타냈다. 그는 1950년에 토론토 대학교에 입학했다. 그는 수학, 물리학, 화학 등을 공부했다. 그러다가 4학년 때에 수학으로 진로를 결정했는데 그 이유가 조금은 허망하다.
조금은 완전히 비합리적인 이유로 그런 결정을 내렸습니다. 3학년 때 광학 실험 수업을 들었는데, 담당 교수는 나와 내 실험 조원이 다른 조보다 훨씬 뛰어난 실험 결과를 얻는다는 사실을 알아챘습니다…. 어느 금요일 오후에 그 교수는 복도에서 나를 한쪽 구석으로 데리고 가더니 이렇게 말했습니다. “카한. 자네는 내년에 정말로 물리학을 선택해야만 하네. 알다시피 이 세상에서 가장 위대한 과학자들은 모두 물리학자라네.” … 그런데 나는 그의 입 냄새를 맡았습니다. 그 순간 나는 결정했습니다. 물리학자가 된다는 것이 금요일 오후 3시 30분에 술 냄새를 풍기는 것을 의미한다면 그런 건 사양하겠다구요. 그래서 나는 수학을 선택했습니다.2
‘컴퓨터’라는 기계가 있다는 이야기를 들은 것은 1953년이었다고 한다. 그는 ‘컴퓨터’의 원리에 대해 들은 후 직접 컴퓨터를 설계해 보기도 했다. 그의 설계는 많은 릴레이를 사용하고 있어서 실제로 구현하려면 수력 발전소 하나가 필요할 정도였다.
한편 토론토 대학교는 1952년에 영국의 페란티 사로부터 Mark I 컴퓨터를 구매했다. 상업용으로 판매된 최초의 컴퓨터인 Mark I은 맨체스터 대학교에서 개발했던 전자식 컴퓨터의 상용 버전이다. 카한이 처음 접한 컴퓨터가 이 Mark I 컴퓨터이다. 그는 여름 방학 동안 이 기계에 매달렸고 상당히 괜찮은 프로그래머가 되었다.
그 컴퓨터에는 심각한 결점이 있었습니다. 상태가 좋은 날이더라도 오류 없이 동작하는 시간이 평균적으로 5분 정도에 불과했고 상태가 안 좋은 날이라면 더 줄어 들었습니다. 그래서 나는 프로그램을 작성할 때 온갖 종류의 대응책을 구현하는 법을 배웠습니다. 일부러 중복을 두었고, 중간 중간에 이상이 없는지 확인하는 코드가 들어갔으며, 백업이 이루어지도록 했습니다.2
컴퓨터 프로그래밍을 잘하는 학부생이 있다는 소문이 퍼졌고 그는 토론토 대학교 컴퓨팅 센터의 조셉 케이츠Josef Kates 눈에 들었다.
1954년 여름에 그는 나를 채용했습니다. 나는 5월 초부터 항공권 예약 시스템을 흉내 내는 프로그램을 작성했습니다. 만약 예약 시스템을 전산화할 수 있다면 전화나 전신을 통한 예약에 사용되는 통신 비용을 줄일 수 있음을 보여주려는 목적이었습니다… 8월 말에 회색 정장을 차려입은 (트랜스-캐나다 항공의) 신사들이 우르르 나타났습니다… 그 프로그램은 원래의 예약 시스템과 똑같은 방식으로 동작했습니다. 그래서 그들이 즐거워했을 것으로 생각한다면 그건 틀렸습니다. 그들은 즐거워하지 않았습니다. 트랜스-캐나다 항공은 그 프로그램을 그냥 창고에 처박아버렸습니다.2
트랜스-캐나다 항공은 세계 최초로 항공권 예약 시스템을 도입할 기회를 놓쳐 버렸다. 1960년에 트랜스-캐나다 항공은 개발 회사를 선정하여 항공권 예약 시스템을 도입하려 했으나 실패했다. 그래서 결국은 미국 아메리카 항공이 사용하던 SABRE 시스템을 도입하게 된다.
1958년에 박사 학위를 받은 윌리엄 카한은 영국 케임브리지 대학교에 2년 동안 연구원으로 방문했다. 원래는 더글라스 하트리와 함께 공동 연구를 하려는 계획이었으나 갑자기 하트리 교수가 세상을 떠나는 바람에 그 계획은 어긋나고 말았다. 하지만 그는 이 시기에 모리스 윌크스, 데이비드 휠러 등과 교류하였고 후에 튜링상을 수상하는 제임스 윌킨슨과도 만나서 수치 해석의 오차에 관해 의견을 나누는 시간을 가졌다.
1960년에 그는 모교인 토론토 대학교의 수학과 조교수로 임용되었다. 이 시기에 그는 수치 해석용 라이브러리 개발에 많은 기여를 했다. 사실 박사 과정 동안 그는 토론토 대학교에 있던 IBM 650 컴퓨터용 라이브러리를 개발한 바 있었다. 순전히 그의 논문을 위해서 만들었다. 그런데 그가 영국에 있는 동안, 이 라이브러리가 인기를 끌며 퍼져나갔다. 그래서 1960년에 그가 돌아왔을 때 그는 희한한 상황을 접하게 된다.
내가 돌아온 시기는 1960년 8월 말이었습니다. 학교에는 IBM 650을 대신하여 IBM 7090 컴퓨터가 설치되어 있었습니다. 그런데 우스운 일이 벌어지고 있었습니다. 사람들은 7090 컴퓨터에서 650 에뮬레이터를 사용하고 있었습니다. 내가 만들었던 라이브러리를 사용하기 위해서였습니다.2
결국 카한은 IBM 7090용 수치 해석 라이브러리를 다시 만들었다. 그리고 이 과정에서 보정 합산 알고리듬compensated summation algorithm이라는 아주 중요한 기법을 생각해 냈다. 그는 개발한 수치 해석 라이브러리를 SHARE라는 사용자 커뮤니티에 공개했고 그 덕분에 산업 현장에서 수치 해석 프로그램의 정확도가 향상되었다.
1965년에는 특이값 분해Single value decomposition에서 중요한 연구 결과를 발표했다.3 진 골럽Gene Golub과 함께 발표한 이 방법은 현재도 행렬을 분해factoring하는 방법으로 널리 사용되고 있다.
1968년에 그는 캘리포니아 대학교 버클리로 자리를 옮겼다. 왕성하게 연구와 교육 활동에 매진하던 그에게 HP가 도움을 요청하면서 그의 경력은 큰 전환점을 맞게 된다. HP는 공학용 계산기의 계산 오류 문제를 해결하고 싶어 했다. 카한은 문제 해결을 위한 자문을 하는 과정에서 부동소수점 연산의 품질을 향상하는 여러 방법을 고안했다.
인텔도 그에게 도움을 요청했다. 마이크로프로세서 시장이 폭발적으로 성장하면서 인텔은 부동소수점 연산을 위한 전용 칩을 만들고 싶어 했다. 그는 HP와의 작업에서 얻은 경험을 확장했다. 그는 언더플로우underflow 문제에 대한 해결책을 제시했으며 NaN(Not a Number)라는 개념을 도입했다.
인텔과의 협업이 진행되는 와중에 IEEE는 부동소수점 연산을 표준화하기 위한 작업에 착수했다. 이 소식이 들리자 그는 바로 달려갔다. 당시 과학 계산용 컴퓨터 시장을 장악하고 있던 DEC, CDC, Cray 등은 이런 표준화 작업에 적극적이지 않았다. 자신들의 부동소수점 연산 방식을 포기하고 싶은 생각이 없었기 때문이었다. 하지만 카한은 표준화에 적극 참여했고 인텔의 협조를 얻어 K-C-S 제안서§를 제출했다. 부동소수점 연산 표준안 IEEE 754는 1985년에 공식적으로 공개되었다.
1994년에 인텔이 발표한 펜티엄 프로세서는 부동소수점 연산 회로에 심각한 버그를 가지고 있음이 밝혀졌다. 결국 인텔은 부동소수점 연산 회로를 새롭게 설계해야 했는데 이때 카한은 이를 검증할 수 있는 테스트 프로그램을 제공했다.
현재 그는 은퇴한 후 캘리포니아 대학교 버클리의 명예교수로 있다.
답글 남기기