Adolf의 엉망진창 블로그

중립성 따윈 없는 여행/18禁/자동차/IT 제멋대로 1인 언론(?)

Adolf는 告한다(비평|시사)

허락보다 저지르는 것이 쉽지... 버그의 대모, 어메이징 그레이스

dolf 2024. 3. 8. 07:18

오늘은 뉴스를 보다 문득 떠오른 일종의 뻘글입니다. 원래 이런 것은 계기가 하나 있으면 뻗어 나가는 법이죠. 일단 그 뉴스부터...

 

 

뉴스 내용 자체는 중요하지 않고... 뉴스 마지막 멘트에 '허락보다 용서가 쉽다'는 말입니다. 사실 이 말은 '질러라'에 대한 근거가 되는데, 이미 질러서 반품도 안 되는데 어찌 하겠냐는 배째라 전략에 가깝습니다. 하지만 이 말은 광고에서 처음 나온 말도 아니며, 원어도 아닙니다. 사실 원어는 이렇습니다.

 

It's much easier to apologize than it is to get permission.

 

그러면 이 말을 과연 누가 했을까요? 사실 나름 개똥철학같은 이야기라 과거에 누군가 여러 사람이 했을 법한 말이기는 한데, 일단 알려진 사람은 있습니다. 컴퓨터 공학을 배우거나 배웠다는 사람이라면 절대 잊어서는 안 되는 사람이자, 컴퓨터 공학은 몰라도 해외 주식을 투자한다는 사람도 몰라서는 안 되는 이름입니다. 엔비디아 주식 1,000$ 시대를 만든 나름 중요한(?) 인물이기도 하니까요.^^ 밀덕이라도 잊어서는 안 되는 이름입니다. 그 분이 누구냐 하면...

 

이 할망구 뉘시오?!

 

"Amazing Grace" 되시겠습니다.


이 할머님의 존함은 '그레이스 호퍼(Grace Hopper)' 되십니다. 돌싱이라서 본명은 그레이스 머레이가 되지만 보통 유부녀 시절 성으로 불립니다. 군 정복을 입으신 모습으로 보면 알 수 있듯이 이 분 군인입니다. 그것도 해군 '제독' 되시겠습니다.(준장) 할머니 군인께서 왜 컴퓨터 공학에 중요하고 엔비디아 주가하고 영향이 있냐구요? 다 이유가 있답니다.

 

저 할머니, 군인이라고 적었지만 무슨 바다에서 대포를 빵빵 쏘면서 일본군을 작살내고 베트콩을 섬멸하신 분은 아닙니다. 지금이야 미군에서 여군 전투 장교가 많지만 2차세계대전 시절에 그런 거 있나요? 아닙니다. 원래 저 분은 '수학자'입니다. 대학교에서 수학을 가르치던 교수님이셨죠. 하지만 2차세계대전이 저 분의 인생을 바꿉니다.

 

2차세계대전, 정확히는 태평양전쟁은 남녀노소를 가리지 않고 미군에 입대를 하려는 사람들로 들끓게 만든 전쟁이었습니다. 이 분 역시 대학교 부교수까지 하던 상황에서 미군에 입대를 하려 합니다. 하지만 30대 중반을 바라보는 나이에 더해 워낙 몸이 허약해서(체중미달)로 낙방. 더군다나 군인 자원이 빵빵한 미군 입장에서도 미국의 발전을 지지하는 기초학문의 젊은 권위자를 군에 묶어 두는 것이 아깝다고 생각했습니다. 그럼에도 나라에 보탬이 되겠다는 일념으로 1943년에 어떻게든 해군 예비역으로 군문에 이름을 올립니다.

 

하여간 미 해군 선박국(해군 함선의 설계, 제조, 관리를 맡던 부서로 지금은 없어졌습니다.)에 소속된 이 분은 처음에는 다른 수학자들과 비슷하게 포탄의 탄도 계산 업무를 수행하다 운명처럼 컴퓨터(아니, 당시로서는 계산기)를 만나게 됩니다. ENIAC같은 컴퓨터로 분류되는 물건들의 선조 가운데 하나인 하버드 Mark I 계산기의 프로그래머로 일하면서 프로그래밍과 컴퓨터를 접하게 됩니다. 이후 전쟁이 끝나고 원래 소속된 대학에서 테뉴어 제안까지 왔지만 그걸 걷어차고 계속 프로그래밍 분야에 남게 됩니다. 물론 해군 예비역 장교 타이틀은 계속 달고 말입니다.

 

정말 '버그'를 '디버그'를 한 결과입니다.

 

이 분은 생애에 걸쳐 컴퓨터 공학에 여러 업적을 남깁니다만, 첫 번째 업적은 바로 '버그'의 발견입니다. 사실 버그라는 용어는 그 이전부터 나름 알음알음 쓰였다고 알려져 있습니다만, 정말 '버그'가 '버그' 때문에 일어난다는 사실을 최초로 증명한 분이 어메이징 그레이스 되겠습니다. 이 때가 1947년이고, 하버드 Mark. II에서 찾은 것입니다.

 

이후에는 ENIAC를 만든 에커트-모클리사 소속으로 UNIVAC-1 메인프레임 개발에도 관여했는데, 이 시기에 주변에 '기계어가 아닌 자연어에 기반을 둔 언어로 프로그래밍을 해야 한다'는 의견을 피력했습니다. 예. '컴파일러'라는 개념을 사실상 최초로 구체화한 것입니다. 당시에는 크게 주목받는 이론은 아니었습니다만, 이 개념을 바탕으로 한 새로운 프로그래밍 언어를 만드는데, 그게 UNIVAC-1용으로 나온 A-0입니다. A-0는 완전한 컴파일러 언어는 아닌 컴파일러의 개념을 탑재한 언어라 해야 하며, 수학자의 입장에서나 편하지 보통은 쓰기 어려운 언어라서 사실 절반의 성공에 가까운 것이며, 컴파일러 언어의 개념은 이후 포트란의 등장으로 대략 완성을 봅니다만 하여간... 이후 A 시리즈 언어의 문제를 개선해 좀 더 일반인의 시각에 가까운 B 시리즈라는 프로그래밍 언어를 만들었는데, 이게 뒤에 나올 어떤 언어의 개발에 큰 영향을 줍니다.

 

1960년대가 가까워지면서 컴퓨터 하드웨어 이상으로 그것을 제대로 써먹을 수 있도록 프로그래밍을 하는 것이 중요하다는 점이 부각됩니다. 정확히는 프로그래밍의 난이도와 그에 따른 인건비 부담이 급증한 것인데, 그래서 미 국방부는 좀 더 일반인이 배우기 쉬운 프로그래밍 언어를 만들기 위한 위원회를 꾸리고 여기에 어메이징 그레이스가 대표자로 초빙됩니다. 이 새로운 언어는 B 시리즈(FLOW-MATIC 언어)에 큰 영향을 받았는데, 이 위원회에서 만든 언어가 바로 코볼입니다. 실제로 코볼의 설계를 한 사람들은 따로 있지만, 어메이징 그레이스가 위원회의 대표인데다 FLOW-MATIC에 크게 영향을 받아 나온 만큼 어메이징 그레이스를 '코볼의 어머니'로 부르고 있습니다. 물론 실제 세부 설계를 한 사람들은 따로 있다보니 이 사람들의 반발은 꽤 있었습니다만. 코볼은 지금도 금융권에서 끝까지 살아 남아 코볼을 다룰 수 있는 프로그래머는 억대 연봉은 기본으로 보장한다고 하고 있을 정도입니다. 그만큼 사람도 없습니다만.^^

 

이처럼 어메이징 그레이스는 초창기 컴퓨터의 프로그래밍에 큰 영향을 남겼습니다. 다만 군생활(?)은 그리 편하지는 않았습니다. 어디까지나 예비역이라서 실제로는 민간인이지만 워낙 군, 특히 해군 관련 전산화 분야에서 큰 영향을 준 인물이었기에 크게 대접을 받았어야 하지만 그러지는 못했습니다. 1966년에 만 60세가 되어 예비역 중령 신분으로 퇴역을 하게 생겼는데, 다음해에 다시 일시적으로 예비역 재소집을 받았습니다. 1971년에 다시 또 퇴역을 당했고 다시 다음 해 또 소집되어 군인으로서의 생애를 이어갑니다. 그 다음해에 예비역 대령으로 승진하는데, 이걸 추진한 사람이 줌왈트급 구축함으로 유명한 송충이 눈썹엘모 줌왈트 해군참모총장입니다.

 

하지만 해군과 미 국방부에서는 '저 할망구 빨리 치워버리고 싶어'라는 의견이 워낙 강했고 두 번의 퇴역도 자의가 아니었습니다. 미 해군의 나름 공로자에 대한 대접이 저 모양인 것은 정치권에서도 좀 심했다고 생각했는지 세 번째 퇴역 명단에 있던 어메이징 그레이스 할머니를 강제로 제독으로 승진시키는 결의안을 추진했고, 이걸 본 레이건 행정부에서 무거운 엉덩이를 들어 올려 준장 승진을 결정합니다. 이후 몇 년을 더 복무하다 1986년에 퇴역합니다. 이 때가 저 할머니 연세가 좀 있으면 팔순 잔치를 열어야 할 때였습니다. 저 때 까지 팔팔하여 역시 강제 퇴역을 당한 셈입니다만, 그래도 공로자를 대접한다고 미 해군 최고의 전투함인 컨스티튜션(범선입니다.^^)에서 열어 주었습니다. 

 

사실 예비역이라 하지만 미 해군에서 복무연한이 없는 원수를 제외하고 복무연한 이상으로 복무한 윗 사람이 달랑 두 명 밖에 없어 미 해군 역사상 퇴역 늦게하기로 No.3인 분입니다. 그 윗분이라고 해봐야 저 컨스티튜션 함장을 역임한 미국 초창기의 해군 영웅인 찰스 스튜어트, 원자력 해군의 창시자이자 어메이징 그레이스보다 반 세대 전 사람인 하이버 리코먼뿐입니다.

 

계산기에서 컴퓨터로 진화하는 그 시기에 프로그래밍이라는 개념을 정립하는 데 혁혁한 공을 세우고, 지금까지 프로그래밍 언어에 한 획을 긋는 언어의 개발에도 적지 않은 영향을 준 이 분은 후대의 프로그램의 개발 방향에도 영향을 주는 명언얼 남겼습니다. 그게 저 위에 적힌 말입니다. 물론 프로그램 개발자를 위한 말은 아니고 일반적인 조언이며, 좋은 아이디어를 이것저것 재다 기회를 날리지 말고 바로 실행에 옮기라는 말입니다. 하지만 후대에 이 말은 프로그램 코딩에서 버그와 최적화에 얽매여 코딩 속도를 늦추지 말라는 코딩 명언이 되었습니다. 그 반대는 돌다리도 두드려 보고 건너라는 것( Look before you leap)입니다.

 

하여간 저 할머니가 컴퓨터 공학에서 중요한 인물인건 이제 알겠는데 엔비디아와는 무슨 관계나구요? 관계가 있습니다. 이름만요.^^

 

엔비디아 주가가 1,000$를 찍는 배경에는 AI에 따른 고성능 GPU 수요 폭증이 있는건 해외 주식 투자를 하시는 분들은 다들 알고 계실 것입니다. 그런데 엔비디아의 현행 세대 AI용 GPU 제품군이 무엇인지는 관련자가 아니면 모르시는 분이 더 많을텐데, 현행 세대의 텐서 GPU가 H100을 비롯한 것인데, 이 아키텍처 이름이 바로 'Hopper'입니다. 엔비디아는 지포스 200 시리즈의 테슬라 아키텍처부터 과학자들의 이름을 GPU의 아키텍처 이름으로 쓰고 있는데, 지금 세대의 AI용 GPU 아키텍처가 바로 Hopper입니다. 재미있는 점은 이 Hopper의 자매 아키텍처로 데스크탑과 모바일 GPU, 즉 지포스 40 시리즈에 쓰이는 것이 있는데, 그것이 세계 최초의 여성 프로그래머 타이틀을 갖고 있는 에이다 러브레이스 백작부인의 이름을 땄다는 점입니다. 세계 최초의 여성 프로그래머와 사실상 두 번째 여성 프로그래머가 엔비디아 주식 호황기를 이끄는 셈입니다.