IT Life

디버깅의 신화, 그레이스 호퍼(Grace Hopper)

2016.02.01 09:30



세계 최초의 컴퓨터 프로그래머로 알려져 있는 에이다 러브레이스(Ada Lovelace)를 비롯하여 ENIAC과 같은 선구적 컴퓨터 개발에도 많은 여성들이 참가한 것으로 알려져 있습니다. 하지만 전산 분야의 경우, 특히 초창기에는 전적으로 남성들만의 영역이라고 해도 과언이 아니었는데요. 


이런 시기에 그레이스 호퍼(Grace Hopper)라는 여성이 단연 두각을 나타냈습니다. 그녀의 연구는 컴퓨터 하드코딩과 프로그래머들이 이용 가능한 명령 집합 간의 관계에 중대한 영향을 미쳤습니다. 사용 가능한 도구와 명령을 혁신하고 확장하는 동시에 사용 편의성도 대폭 향상시킨 호퍼는 프로그래밍을 더 접근하기 쉽고 유연하며 다양하게 만든 선구자 중 한 명입니다.


그레이스 호퍼의 본명은 그레이스 브루스터 머레이(Grace Brewster Murray)로 1906년 뉴욕에서 태어났습니다. 호퍼는 17세에 뉴욕에 있는 바사대학교(Vasser College)에 입학하여 수학과 물리학 학위를 취득했는데요. 바사대학교에서 강사로 근무하며 당시 여성으로서는 드물게 예일대학교 대학원에 진학하여 학업을 계속했고, 예일대학교에서 1930년에 수학 석사 학위를, 1934년에는 수학 박사 학위를 취득했습니다. 호퍼가 졸업 후 바사대학교에서 근무하며 부교수로 임명되었을 때, 미국은 제2차 세계대전에 참전하게 되었습니다. 


호퍼는 전쟁 중 국민의 의무를 다하기 위해 미해군에 지원하지만 몸무게 미달로 입대가 거부되고 말았습니다(당시 최소 몸무게 기준인 54kg에서 7kg이 모자랐습니다). 대신 그녀는 미해군 예비군 산하의 여성부대인 여성비상자원봉사대(WAVES: Women Accepted for Volunteer Emergency Service)에 들어갔습니다. 


기초 훈련을 마친 후 중위로 임관된 호퍼는 1944년 하버드대학교에 배치되고, 크러프트 연구소(Cruft Laboratories)에서 이후 하버드 마크 Ⅰ(Harvard Mark Ⅰ)으로 불리게 되는 전기 기계식 컴퓨터인 IBM ASCC(Automatic Sequence-Controlled Calculator) 연구에 참가하게 되었습니다. 호퍼는 이런 기계를 다뤄본 경험이 전혀 없었지만 배치되자마자 궤적 계산을 맡게 되면서 프로그래밍의 세계에 입문했습니다. 


그레이스 호퍼 초상화 “나에게 프로그래밍은 실용적 기술 그 이상의 의미가 있다. 프로그래밍은 지식의 근본을 탐구하는 대규모 프로젝트다." - 그레이스 호퍼, Management and the Computer of the Future 인용(Sloan School of Management, 2012) 


호퍼는 ASCC 설계도를 철저히 분석하기 시작했고, 동료들에게 끊임없이 질문을 던지며 모든 계산식을 최소 단위로 분해했습니다. 처음 접하는 해군 기술 및 기법과 관련된 용어를 모두 새로 배워야 했지만 다행히 호퍼는 언어에 타고난 재능이 있었습니다. 


월터 아이작슨(Walter Isaacson)이 쓴 ‘혁신가들: 해커•천재•괴짜로 구성된 그룹은 어떻게 디지털 혁명을 만들었는가(The Innovators: How a Group of Hackers, Geniuses and Geeks Created the Digital Revolution)’에서 호퍼는 "저는 해양학, 지뢰제거, 기폭장치, 근접전파신관, 생물의학 등 생소한 분야의 용어들을 배웠습니다. 문제를 해결하려면 우선 그 분야의 용어들을 알아야만 했습니다. 저는 프로그래머와 대화할 때는 전문 기술 용어를 사용하고, 몇 시간 뒤 관리직들과 똑같은 내용에 대해 얘기할 때는 완전히 다른, 일상적인 언어로 표현할 수 있었습니다."라고 말했습니다.


이러한 호퍼의 언어에 대한 재능과 상대에 따라 다른 스타일로 의사소통할 수 있는 재능을 눈여겨본 사람이 있었는데요. 바로 하버드 마크 Ⅰ 프로젝트의 책임자인 하워드 H. 에이킨(Howard H. Aiken)이었습니다. 에이킨은 호퍼에게 세계 최초의 컴퓨터 매뉴얼이라 할 수 있는 문서를 작성하는 일을 맡겼습니다. 이것은 하버드 마크 Ⅰ의 역사, 작동원리 및 운영에 대한 500페이지 분량의 문서였습니다. 이후 호퍼는 에이킨과 함께 마크 Ⅰ에 대한 각종 기술문서를 함께 작성했고, 제2차 세계대전이 끝난 후에는 그 후속 모델인 마크 Ⅱ 개발에 참여하게 되었습니다.

1947년 마크 Ⅱ 개발 중 호퍼는 컴퓨터 용어 중 가장 유명하면서도 어원이 잘못 알려져 있는 용어와 관련된 사건을 겪게 됩니다. 마크 Ⅱ에 결함이 발생하자 호퍼의 기술진들은 이 컴퓨터의 패널 F를 조사했고, 그 결과 릴레이 스위치 사이에 나방이 끼어있는 것을 발견했습니다. 호퍼는 잡은 나방을 마크 Ⅱ 일지에 붙이고 '버그가 발견된 첫 번째 실제 사례(First actual case of bug found)'라고 기록했습니다. 이를 근거로 호퍼의 연구진은 컴퓨터를 '디버깅'했다고 주장했습니다.


일지에 테이프로 붙여둔 나방. 하버드 마크 II 일지에 붙어 있던 나방은 현재 스미소니언 박물관 산하의 미국기술역사박물관(History of American Technology Museum)에 전시되어 있습니다. 


하지만 수십 년 동안 언론을 통해 알려진 바와 달리 디버그라는 용어를 처음 사용한 것은 호퍼가 아닙니다. 1878년 발명가 토머스 에디슨(Thomas Alva Edison)은 자신의 기계 및 전기발명품을 설명한 한 편지에서 "이게 정지하면서 흔히 사소한 결함과 문제점을 의미하는 '버그(Bugs)'가 드러난다…"고 말한 바 있습니다. 엔지니어와 기계공 사이에서 버그는 흔히 사용되는 용어였고 1934년판 웹스터영어사전(Webster’s New International Dictionary)에도 등재되어 있습니다. 하지만 이 용어를 컴퓨터 분야에서, 특히 프로그램 오류를 설명하는 용어로 대중화시킨 것은 호퍼와 그녀의 팀입니다.

1940년대 말 호퍼는 하버드를 떠난 후, 1949년 Eckert-Mauchly(이후 Remington Rand로, 다시 Sperry Rand로 사명 변경)에 취직하게 됩니다. 이 회사는 연구실과 군대에서만 사용되던 컴퓨터를 기업에서 활용하기 위한 목적으로 ENIAC 개발자들이 만든 회사였습니다. 이 곳에서 호퍼는 UNIVAC Ⅰ 컴퓨터 개발에 참여했고, 프로그래머를 지원하기 위한 소프트웨어 도구를 개발했습니다. 


호퍼는 자신이 이전에 컴퓨터용으로 개발한 모든 서브루틴(한 프로그램 내에서 필요할 때마다 되풀이해서 사용할 수 있는 부분적 프로그램)을 모아 자기테이프에 저장했습니다. 그리고 서브루틴마다 호출 번호를 붙여 컴퓨터가 테이프에 있는 서브루틴에 접근할 수 있게 했습니다. 


이 방법은 기호로 작성된 수학코드를 기계언어로 변환해주는 UNIVAC Ⅰ용 A-0 소프트웨어의 핵심 기술이 됩니다. A-0 소프트웨어는 호퍼가 1952년 컴퓨터 분야에 처음 소개했던 컴파일러(원시언어로 된 프로그램을 목적언어로 된 프로그램으로 번역하는 프로그램)의 개념을 구현한 최초의 컴파일러였습니다.


호퍼와 UNIVAC 1. UNIVAC I 앞에 앉아있는 그레이스 호퍼. 1969년 호퍼는 Data Processing Management Association이 수여하는 '올해의 인물' 상의 첫 번째 수상자가 되었습니다.


지금은 컴파일러가 프로그래밍에 있어 필수불가결한 요소이고 상위 언어의 핵심을 이루고 있지만 1950년대 초반만 해도 매우 생소한 기술이었습니다. 호퍼가 앞으로 컴파일러가 라이브러리에서 서브루틴을 선택해 프로그램에 바로 복사하는 방식으로 코드를 만들 것이라고 주장했을 때 회사 동료들 모두가 회의적이었습니다. 1989년 샬린 빌링(Charlene Billing)이 출판한 ‘그레이스 호퍼: 해군 제독이자 컴퓨터 선구자(Grace Hopper: Navy Admiral and Computer Pioneer)’에서 호퍼는 "제가 컴파일러를 작동시켰지만 아무도 건드리지 않았죠… 동료들은 조심스럽게 말하곤 했어요. 컴퓨터가 할 수 있는 건 연산뿐이고, 컴퓨터가 프로그램을 만들 수는 없다고요."라고 말했습니다. 하지만 호퍼의 고집과 반항적인 성격은 그녀의 신념을 더욱 확고하고 만들었고, 이후 호퍼의 연구진은 좀더 유연하고 개선된 컴파일러를 만들 수 있는 기회를 얻게 되었습니다.


호퍼는 컴퓨팅을 발전시키는 동시에 기업고객을 수용하기 위해서는 일상 언어, 즉 영어로 된 지시문과 명령어를 사용한 상위 언어가 필요하다는 결론에 도달하게 됩니다. 그 결과 호퍼와 연구진은 1953년 A-2 시스템 개발에 성공합니다. A-2 시스템은 고객에게 소스 코드를 보내 의견을 수렴하고 개선한 최초의 무료 오픈소스 소프트웨어 패키지 중 하나입니다. 이후 1954년부터 1957년까지 연구를 계속해 Business Language 버전 0(줄여서 B-0이라고 부르며 정식 명칭은 FLOW-MATIC)을 개발합니다. FLOW-MATIC은 영어 명령을 이용한 최초의 데이터 처리 언어입니다. 자동 청구 기능, 자동 급여 계산 등 기업의 업무를 더욱 쉽게 프로그래밍할 수 있도록 개발된 FLOW-MATIC은 긴 문자 이름을 지원하고 'Compare', 'Input', 'Write', 'Transfer' 등 적은 수지만 영어 명령으로 프로그래밍이 가능하도록 했습니다. 지금 보면 기능도 제한적이고 별것 아닌 것처럼 보일 수 있지만 당시로서는 획기적인 발명이었습니다.


1959년 미국 펜실베니아대학교에서 컴퓨팅 전문가와 학자들이 모여 CODASYL(Conference on Data Systems Languages)을 개최했고 호퍼도 여기에 참석했습니다. 이 회의의 목적은 기업 사용자를 위한 통일된 상위 컴퓨터 언어를 제안하는 것이었습니다. 오랜 논의를 걸쳐 이들이 제시한 것이 바로 COBOL(Common Business Oriented Language)입니다. CODASYL이 최종적으로 채택한 표준문서와 배포한 최초의 언어인 COBOL-60은 모두 여러 언어를 바탕으로 했지만 각종 연산과 기능은 FLOW-MATIC의 영향을 크게 받았습니다.


이후 COBOL은 수차례에 걸쳐 개정되었지만 그 영향력은 지금도 여전합니다. 2009년 탄생 50주년이 지난 이후에도 일부 분야와 업무에는 COBOL이 여전히 널리 사용되고 있습니다. 2013년 영국의 소프트웨어 개발업체 마이크로 포커스(Micro Focus)가 작성한 보고서에 따르면 포춘지 선정 500대 기업의 비즈니스 시스템 중 90% 이상을 COBOL이 지원하며, 현금자동입출금기(ATM)의 대부분이 COBOL로 작성되었고, 일부 교통관리, 병원 정보시스템, 항만물동 제어시스템 등의 핵심 소프트웨어를 COBOL이 제공하고 있다고 합니다. 매년 약 50억 개의 라인에 해당하는 새로운 COBOL 코드가 개발되는 등 COBOL은 여전히 컴퓨터 분야에서 중요한 위치를 차지하고 있습니다.

호퍼는 1960년대 미해군으로 돌아와 COBOL 개발 과정을 지켜보았습니다. 60세가 되던 1966년 호퍼는 해군 규정에 따라 정년퇴직을 했지만 이듬해 미해군프로그래밍언어그룹(Navy Programming Languages Group)의 책임자로 복귀하였습니다. 여기서 이후 10년간 COBOL 등의 프로그래밍 언어를 다양한 시스템에 사용할 수 있도록 통합시켰습니다. 1985년 호퍼는 해군 소장에 임명되었고, 이듬해 79세의 나이로 퇴역했습니다.


하지만 그녀는 컴퓨팅 분야를 떠날 수가 없었고 결국 DEC(Digital Equipment Corporation)의 상임고문직을 맡게 되었습니다. 자신의 연구와 경험에 대해, 특히 젊은 컴퓨팅 전문가들을 대상으로 수백 회 이상 강연을 했습니다. 가르치는 데 타고난 재능이 있었던 호퍼는 예상하지 못한 일화나 비유로 복잡한 컴퓨팅 원리를 쉽게 설명하며 청중들을 놀라게 하곤 했습니다. 그녀가 강의에 자주 사용했던 것 중 하나가 바로 30cm 길이의 전선이었습니다. 그녀는 전선을 이용해 1나노초(1초의 10억분의 1)에 빛이 이동하는 거리를 설명하고 군 지휘자들을 교육하곤 했습니다.


그레이스 호퍼는 1992년 향년 85세로 타계했습니다. 호퍼는 컴퓨팅 선구자 중 한 사람으로 그 공로를 널리 인정받고 있습니다. 미해군은 142m 길이의 미사일 구축함의 이름을 그녀의 이름을 따서 ‘USS Hopper’로 지었습니다. 많은 거리와 공원, 대학교 컴퓨터학과, 국립에너지연구과학컴퓨팅센터(National Energy Research Scientific Computing Center)의 Cray XE6 Supercomputer 역시 그녀의 이름을 사용하고 있습니다. 


또한, 호퍼는 살아있을 당시 30여 개의 명예학위를 받았습니다. 호퍼가 타계하고 2년 뒤에는 컴퓨팅 및 기술 분야에서 여성의 역할을 논의하는 그레이스 호퍼 여성 컴퓨팅 분야 기념 학회(Grace Hopper Celebration of Women in Computing)가 설립되었습니다. 이후 매년 학회가 개최되었고, 텍사스 휴스턴에서 열린 2015년 학회에서는 강의, 워크샵 및 토론에 12,000명이 참가했습니다.


젊은이들을 가르치고 함께 작업하는 것을 무엇보다 중요시했던 호퍼는 다음과 같이 말한 적이 있습니다. "컴파일러를 구축한 것 외에 내가 이룬 가장 큰 업적은 젊은이들을 가르친 것입니다. 그들이 와서 제게 묻곤 했죠. '우리가 이걸 할 수 있을까요?' 그럼 전 '한번 해봐.'라고 말하고 뒤에서 지원을 해주죠. 이들에게는 지원이 필요합니다. 젊은 학생들이 나이가 들어도 제가 계속 연락하면서 가끔 자극을 주죠. 그들이 기회를 놓치지 않도록 말입니다."


['A Smart, Creative World: Past and Future' 연재 현황]


(1) 컴퓨터의 탄생, 시대를 앞서간 '찰스 배비지(Charles Babbage)'

http://blog.lgcns.com/950


(2) 최초의 컴퓨터 프로그래머, 에이다 러브레이스

http://blog.lgcns.com/982


(3) ENIAC: 세계 최초의 빠른 컴퓨터

http://blog.lgcns.com/1001


(4) 디버깅의 신화, 그레이스 호퍼(Grace Hopper)

http://blog.lgcns.com/1021


(5) 초기 컴퓨터의 진화

http://blog.lgcns.com/1042


(6) 컴퓨팅의 미래를 보여준 더글러스 엥겔바트

http://blog.lgcns.com/1060


(7) 웹의 발명: 팀 버너스 리(Tim Berners-Lee)

http://blog.lgcns.com/1165


(8) 인터넷의 탄생

http://blog.lgcns.com/1171


(9) 위키의 탄생

http://blog.lgcns.com/1175


(10) 로봇의 발전

http://blog.lgcns.com/1182

 

글 ㅣ클라이브 기포드 (Clive Gifford) 




[관련 자료]

 

http://fivethirtyeight.com/features/the-queen-of-code/

The Queen of Code 동영상 – Signals 시리즈부터 호퍼의 인생과 영향을 기록한 짧은 다큐멘터리


http://www.history.navy.mil/research/histories/bios/hopper-grace.html

호퍼의 군 근무 기록, 훈장목록 및 독점 인터뷰


http://archive.computerhistory.org/resources/text/Remington_Rand/Univac.Flowmatic.

1957.102646140.pdf

FLOW-MATIC 언어 홍보문건 원본


Grace Hopper and the Invention of the Information Age by Kurt W.Beyer (MIT Press, 2012).

호퍼의 인생과 업적을 자세히 다룬 것으로 호평받은 서적

 


Posted by IT로 만드는 새로운 미래를 열어갑니다 LG CNS
위로