‘어메이징 그레이스’. 이는 그레이스 머레이 호퍼(이하 ‘그레이스’)를 일컫는 또 다른 말입니다. 미합중국 해군의 제독이자 컴퓨터과학자 그리고 수학자로 활동하며 메이다 러브레이스 백작부인 이래 최고의 여성 프로그래머로 인정받는 ‘코볼의 어머니’이기도 한데요. 늦은 나이에 프로그래밍에 입문했지만 그 누구보다 뛰어난 실력을 자랑하며 가장 보편적인 비즈니스용 프로그래밍 언어인 코볼(COBOL)을 만드는 데 중요한 역할을 했습니다. 흔히들 남성적인 직업으로 인식하는 군인으로서, 또 프로그래머로서 그 누구보다 활발하게 활동했던 그녀. 특정 성의 영역에 얽매이지 않고 다양한 분야를 넘나들었던 그녀의 활약상을 함께 들여다보실까요?
그레이스는 1906년 12월 9일 뉴욕 주의 뉴욕시에서 태어났습니다. 아버지는 미군 해군 제독이었으며 외할아버지는 토목기사였는데요. 호퍼는 외할아버지의 영향을 받아 수학과 기하학에 관심을 갖게 됐고 '기하학 문제를 풀면서 온갖 색연필을 쓸 수 있어 좋았다'고 말하기도 했습니다. 또한, 어린 시절의 그레이스는 호기심이 무척 많았다고 하는데요. 몰래 몰래 7개의 알람시계를 분해하고 놀던 것을 알아차린 어머니가 하나의 알람시계만을 허락하며 그 개수를 제한했을 정도였습니다. 다행히 그녀의 아버지는 성차별에 얽매이지 않아야 한다는 진취적인 사고방식을 갖고 있었기 때문에 그런 그레이스의 기행을 대견하게 여기며 학업을 지원했다고 합니다.
이러한 아버지의 전폭적인 지원으로 그레이스는 사립학교(prep school)인 하트리지스쿨을 다녔고 16세에 바사 대학에 조기지원했는데요. 라틴어 성적이 나빠 낙방의 고배를 마셔야 했습니다. 하지만 이듬해에 다시 바사 대학에 지원했고 진학에 성공했죠. 대학시절, 그녀의 관심사는 단연 수학, 물리학, 공학이었다고 합니다. 이후 1928년 수학과 물리학으로 이학사 학위를 취득한 그레이스는 예일대학으로 옮겨 1930년 수학 석사학위를 받았으며, 1934년에는 동 대학에서 수리물리학으로 박사학위를 받았습니다.
▲ 젊은 시절의 그레이스 머레이 호퍼
그레이스가 본격적으로 프로그레밍을 접하게 된 것은 2차세계대전 때였는데요. 전쟁이 발발하자 그레이스는 수 천 명의 다른 미국 여성들처럼 군입대를 결심합니다. 그리고 1843년 미국 해군에 지원해, 해군 연구소에서 컴퓨터 프로젝트의 책임자인 하워드 에이킨을 만나게 되는데요. 이때 에이킨이 그레이스에게 보여준 것은 ‘마크 I’란 컴퓨터였습니다. 마크 I는 최초의 프로그램 방식 디지털 컴퓨터로, 에이킨은 바로 이를 만든 사람이었죠. 사실 당시 그레이스는 자신이 쳐다보고 있는 것이 무엇인지 조차 제대로 몰랐다고 하는데요. 그러나 에이킨은 곧바로 그녀에게 탄젠트 보간법의 계수를 구하는 일을 맡겼다고 합니다. 그 후 호퍼는 마크 I에 대한 매뉴얼 작업을 계속해야 했고 아무런 영문도 모른 채 최초의 프로그래밍 작업을 진행하게 되었습니다. 그야말로 밑바닥부터 하나하나씩 밟아 올라온 것이죠.
하워드 에이킨이 개발한 마크 I의 프로그래밍 스탭으로 일하면서 프로그래밍 언어와 코딩을 배워나가던 그녀는 쩔쩔매던 처음과는 달리 이내 빠르게 적응하며 미 해군과 민간 연구기관이 함께 진행하던 여러 컴퓨터 개발 프로젝트에 참여하기도 했습니다.
▲ 하버드 연구소 시절
그러던 어느 날 그녀에게 잊지 못할 작은 사건이 발생하는데요. 세계 최초로 컴퓨터 ‘버그’라는 개념을 발견한 것이 바로 그것입니다. 자신이 사용하는 하버드 대학의 Mark II 컴퓨터 회로 안에 침입한 나방 한 마리가 컴퓨터 동작을 멈추게 했고, 호퍼는 그의 조수와 함께 핀셋으로 이 나방을 잡아내는데요. 이 나방은 ‘세계 최초의 컴퓨터 버그’로 기록돼 현재까지도 미 해군 박물관에 전시돼 있다고 합니다. 한마디로 그녀가 컴퓨터 속 나방(버그)을 발견했고, 이를 발견한 날인 1945년 9월 9일은 세계 최초로 컴퓨터 ‘버그’가 발견된 날인 것이죠. 컴퓨터 프로그램 코딩 오류를 의미하는 ‘버그’가 그레이스에 의해 비롯되었다는 사실, 무척 놀라운데요.
★ 버그(Bug)란?
널리 알려진 바와 같이 컴퓨터 기술 분야에서 ‘버그’란 컴퓨터 프로그램 코딩 오류를 의미하는 용어입니다. 프로그램 사용자가 이러한 버그를 발견하기 전에 찾아 수정하는 것을 ‘디버깅(debugging)’이라 하죠. 디버깅은 프로그램의 개발 시작 단계부터 완료될 때까지 계속해서 이루어집니다. 제품이 출시된 후나 베타테스트(정식상품으로 내놓기 전에 오류가 있는지를 발견하기 위해 미리 정해진 사용자 계층들이 써보도록 하는 것) 기간 중에도 버그는 여전히 남아있을 수 있죠. 그러나 일반적으로 프로그램 개발 절차가 잘 확립되어 있고 프로그램의 설계를 잘한다면, 그것이 비록 수천, 수만 개의 명령문이 조합된 대형 프로그램이라 하더라도, 버그를 최소한으로 줄일 수 있습니다.
▲ 최초의 ‘버그’를 기록한 노트 메모
그녀는 나방을 컴퓨터에서 꺼내 공책의 한 페이지에 스카치 테이프로 붙여놓고 나서 그 밑에 이렇게 적었습니다. "최초로 실제의 버그가 발견되었다. (First actual case of bug being found)”
그레이스는 제대 후 1952년부터 스페리라는 회사에서 시스템 엔지니어로 일했습니다. 원래 실수가 잦을 수밖에 없는 코드 작성 업무 때문에 호퍼는 하도 고생을 해 이와 관련해 '뭔가 혁신적인 일'을 생각하게 됐는데요. 그가 개발하고 싶었던 새로운 종류의 프로그램은 컴파일러로 1952년 그레이스 호퍼와 그의 연구진에 의해 개발된 A-0이 최초의 컴파일러입니다. 그녀는 컴파일러의 개념을 최초로 정의해 <컴퓨터의 교육(The Education of Computer)>이라는 제목의 보고서를 발표했는데요. 이 보고서에서 그녀는 고급 프로그래밍 언어로 작성된 코드를 컴퓨터가 이해할 수 있는 이진 코드로 만들어주는 기술을 소개해 오늘날 컴파일러의 개념과 프로그래밍 코드 해석 방법을 정의했습니다.
▲ 컴파일러를 개발 중인 그레이스 머레이 호퍼
이후 1954년 미분해석기를 개발한 호퍼는 사람들을 초청하면서 컴퓨터 프로그램이 미분할 수 있는 함수를 아무거나 가져오도록 요청했다고 합니다. 한 사람이 무려 6개월 동안 매달렸던 복잡한 함수를 가져왔는데 불과 18분만에 그 문제를 해결하자 그 사람은 호퍼가 컴퓨터 속에 사람을 감춰놓고(?) 해답을 내놓게 했다고 억지를 부렸다고 하는데요. 그 후 불어나 독어로 쓰여진 동일한 프로그램을 기계 코드로 변환하는 루틴을 작성하려고 했으나 경영진은 처음에는 전혀 믿지를 않았습니다.
▲ 유니백과 그레이스 머레이 호퍼
그러나 그레이스는 1957년 B-0로 알려진 플로-매틱스(Flow-Matics)라는 프로그램을 유니백에서 구현했습니다. 이 프로그램은 최초의 영어 데이터 처리 컴파일러였으며, 단어를 사용하는 컴퓨터 언어로도 최초였는데요. 1957년 과학계에는 포트란이 소개됐지만 일반 산업계에는 그런 것이 전혀 없었기 때문에 컴퓨터 업계의 주요 인사들을 불안한 상태였죠. 일단 플로-매틱스가 나오자 IBM과 허니웰에서도 비슷한 컴파일러를 발표하기에 이르는데요. 두 가지 이상의 상용언어가 표준으로 지정됨에 따라 업계에서 일어날 많은 혼란을 우려해 중립적 위치에 있는 대학에서 ‘코볼(COmmon Business-Oriented Language)’을 출범시키는 모임이 열렸습니다. 비록 코볼이 최종 형태로 나온 것은 그레이스가 속해 있지 않은 위원회였지만, 위원들은 호퍼의 플로-매틱스가 자신들의 사고에 엄청난 영향을 미쳤다는 사실을 인정했다고 합니다.
★ 코볼(COBOL)이란?
코볼은 전문가부터 일반 슈퍼마켓 계산원까지 누구나 쓸 수 있도록 고안된 비즈니스 프로그래밍 언어로, 영어의 지시문과 상당히 유사하게 만들어졌습니다. 미 정부기관의 도입과 민간에의 상용화가 대박을 터뜨리면서 오랫동안 마르고 닳도록 쓰였던 히트작이기도 합니다.
그레이스는 1992년 별세할 때까지도 군인으로서의 역할을 다했는데요. 여성으로는 이례적으로 주력 이지스 전투함인 알레이 버크급 구축함 DDG-70에 이름이 붙여졌고, 에너지부에서 운용하는 슈퍼컴퓨터 Cray XE6가 Hopper로 이름 지어지기도 했습니다. 학계에서도 호퍼의 이름을 딴 상을 제정하고 세미나를 여는 등 사후에도 그녀를 추모하는 움직임은 계속되고 있습니다. 그녀는 “우리말 중 가장 위험한 표현은 ‘여태껏 이렇게 해왔어’다.”라는 말을 남겼는데요. 이 말 속에는 그녀가 혁신적인 발견과 개발을 이끌어낸 생각의 원동력이 담겨 있습니다. 현재의 우리 역시 기성 사고의 틀 안에 갇혀 앞으로 나아가지 못하고 있는 것은 아닐까요? 혁신과 도전 그 자체였던 그녀의 삶을 다시금 되짚어보는 것, 지금을 살아가는 우리에게 꼭 필요한 일이 아닐까 싶습니다.