커뮤니티
스포츠
토론장


(구)잡담게시판
HOME > 커뮤니티 > 잡담 게시판
 
작성일 : 21-02-21 14:03
버그가 0이었다는 나사의 전설적인 프로그래머...JPGIF
 글쓴이 : 러키가이
조회 : 960  



버그가 0이었다는 나사의 전설적인 프로그래머

 

1969년

 

그녀가 손으로 직접 쓴 코드 옆에 서있는 모습

 

인간이 내린 우주선 제어명령을 컴퓨터가 종합적으로 판단해

 

안전하다고 여길 경우에만 실행에 옮기는 '플라이바이 와이어 시스템'을

 

최초로 완성한 나사의 여류 엔지니어 마가렛 해밀턴

 

(위 짤은 손으로 직접 쓴 코드 옆에 서 있는 모습)

 

 

컴퓨터 프로그래밍을 배울 때 가장 기본으로 배우는 것이 바로 C언어 인데요. 이 C언어는 1972년 벨 연구소의 켄 톰슨과 데니스 리치에 의해 개발된 프로그래밍언어 입니다. 하지만 이보다 수년이나 앞선 1960년대, 소프트웨어란 용어조차 없었던 시기에 프로그래밍이란 영역을 개척한 사람이 있었으니, 그 주인공이 바로 '마거릿 해밀턴' 입니다. 남성들이 주도하던 공학에서 최초의 소프트웨어 엔지니어링의 개념을 만든 사람이 여성이라는 사실이 참 흥미로운데요.

 

 

 

▼그녀가 없었다면, 미국은 달착륙을 성공할 수도, 그리고 우주비행사들을 무사히 지구로 귀환시킬 수도 없었다고 합니다. 그래서 오늘은 '소프트웨어 엔지니어링의 어머니'라 불리는 마거릿 해밀턴의 이야기에 대해서 알아보도록하겠습니다.

 

 

 

▼그녀는 1936년 인디애나 주 파올리에서 태어났는데요. 미시건 대학교에서 수학을 전공하고 얼햄 대학교에서 수학과 철학을 전공하면서 학사 학위를 받았습니다. 그녀는 24세의 어린나이에 결혼까지하는데요. 하버드 법학대학에서 공부를 하는 남편 뒷바라지를 위해 고등학교에서 수학과 프랑스어를 가르쳤다고 합니다. 프랑스어는 전공도 하지 않았지만학생들을 가르칠 정도였다고 하니 그녀가 상당히 똑똑했음을 알 수 있는 대목입니다.

 

 

▼그녀는 1960년 MIT의 계약직으로 취직을 하게 됩니다. 그녀는 기상학과의 에드워드 노턴 로젠트 교수를 도와 컴퓨터로 날씨를 예측하는 소프트웨어를 개발했습니다. 물론 이때는 소프트웨어란 개념이 없었을 때라, 별도의 교육과정이나 전문가가 없었죠. 그래서 그녀는 말 그대로 맨땅에 헤딩을 해가면서 프로그래밍을 익혔다고 합니다. 그녀는 이 프로젝트에 투입되자 마자 아무도 동작원리를 모를뿐더러 제대로 동작되지도 않는 프로그램을 맡게됐다고 합니다.

 

심지어 그 프로그램에 대한 문서자료는 그리스어와 라틴어로 되어 있었다고 합니다. 하지만 그녀는 놀랍게도 이 프로그램을 제대로 동작하도록 수정했으며 심지어 라틴어로 그리스어로 결과를 출력하도록 완벽하게 개발을 했다고 합니다.

 

▼이렇게 놀라운 성과를 거둔 그녀는 미항공우주국(NASA)에 스카웃 됩니다. 그녀는 미국의 달착륙 프로젝트인 아폴로 우주선의 비행 소프트웨어 선임 개발자로 자리를 옮기게 됩니다. 물론 나사에서도 그녀의 활약은 두드러 집니다. 그녀는 워킹맘으로 야근할때나 주말 근무할 때는 아이를 직장에 데려와서 코딩을 할 정도로 모든 열정을 아폴로 계획에 쏟았다고 합니다.

 

▼당시 개발환경은 지금은 상상조차 할 수 없을 정도로 열악했습니다. C언어 조차 없던 시대에 그녀는 손으로 코드를 적어서 프로그래밍을 했다고 합니다. 이렇게 그녀가 짠 코드들은 책에 적혀서 재봉사들에게 넘겨 졌습니다. 그 책을 받은 재봉사들은 '1'은 구리선을 코일에 통과시키고, '0'은 코일에 구리선을 감는 방식으로 컴파일(?) 됐습니다. 이렇게 그녀가 수작업으로 코딩한 양이 책으로 쌓으면 그녀의 키만큼 이나 된다고 합니다. 이 사실도 놀랍지만 더욱 충격적인것은 컴파일러나, 디버깅 툴도 없이 오직 머리와 칠판을 이용해서 코딩을 했다는 사실입니다.

 

▼당시 재봉사들이 코딩을 도와줘야했던 Rope Memory

 

▼엄청난 수작업을 거쳐서 탄생한아폴로 우주선 비행제어 프로그램은 그 빛을 발하게 되는데요. 아폴로 우주선이 달에 착륙하기 3분전 이 컴퓨터 프로그램은 우주선이 너무나 많은 작업이 동시에 입력되는 바람에 처리할 수 있는 용량을 초과하게 된다는 사실을 미리 감지하게됩니다. 그리고는 우주비행사들에게 우선순위가 낮은 작업들을 중단시키겨야 한다는 경고창을 띄우기되죠. 이를 발견한 비행사들은 달착륙에 관련된 작업을 최우선적으로 처리하게 명령을 내리게 되고 결국 안전하게 달착륙을 할 수 있었다고 합니다. 이 프로그램이 제대로 동작하지 않았다면 아폴로 11호는 달에 착륙하기 전에 과부하로 고장을 일으킬 수 밖에 없었죠.

 

달탐사 관련 그녀의 프로그램이 우주비행사들의 목숨을 살리기도 했는데요. NASA에서는 최고의 엘리트 우주비행사들은 절대 실수 할일이 없다며, 비상상황을 대비하는 기능을 만들 필요가 없다고 얘기했습니다. 그냥 실수를 하지 않게 경고만 해주면 된다고 호언장담을 한것이죠. 하지만 마거릿 해밀턴은 이런 나사의 충고에도 아랑곳 하지 않고 비상상황에 대비하는 기능을 만들어 두게 됩니다.

 

물론 우주비행사들이 실수를 할리 없다는 나사의 예상은 보기좋게 빗나가게 됩니다. 한 우주비행사가 아폴로 우주선의 비행경로를 저장한 파일을 모두 날려버리는 실수는 한 것입니다. 이 파일이 날라가면 우주선은 복귀를 할 수 없었죠. 하지만 다행히 마거릿이 만들어준 복구 기능으로 우주선의 비행궤적을 지구에서 전송받아 우주비행사들은 목숨을 살릴 수 있었다고 합니다.

 

▼그녀가 없었다면 미국의 달탐사 계획은 몇년이 늦춰졌거나 아예 실패로 끝났을지 모릅니다. 그녀가 이런 업적을 세우기전까지는 컴퓨터 프로그래밍은 수학의 한 분야에 불과했습니다. 이로 인해 그녀는 미국의 컴퓨터공학의 기틀을 마련했다는 평가를 받고 있습니다. 이상 소프트웨어 엔지니어링의 창시자 '마거릿 해밀턴'의 이야기에 대해서 알려드렸습니다.

 

그녀가 짠 소스코드엔 버그가 0이었다는 무시무시한 전설이 전해지는데

 

이 소프트웨어는 너무나 잘 작동해 아폴로 미션 이후 개량을 거쳐

 

우주왕복선에도 쓰였으며 요즘은 항공기 등에 적용되고 있음

 

이후 그녀는 그 공로를 인정받아 2016년 자유 훈장을 수여받았다

 


 

실제로 Apollo 안내 소프트웨어는 매우 견고하여

 

승무원이 참여한 Apollo 임무에서 소프트웨어 버그가 발견되지 않았으며

 

Skylab, 우주 왕복선 및 항공기의 최초 디지털 플라이 바이 와이어 시스템에서


사용하도록 조정되었습니다.

 

——————————————————————

 

버그가 없다니….. 대단하네요… 

 

버그가 0..

 

코딩의 신이 분명함

 

 

 

 




출처 : 해외 네티즌 반응 - 가생이닷컴https://www.gasengi.com




가생이닷컴 운영원칙
알림:공격적인 댓글이나 욕설, 인종차별적인 글, 무분별한 특정국가 비난글등 절대 삼가 바랍니다.
정봉이 21-02-21 14:10
   
레포트로 작성한 허접떼기 프로그램도 버그난무인데

저분은 신인가?

플라이바이 와이어시스템을 저 여자분이 만든거였다니

지금도 플라이바이 와이어 시스템을 개발을 못해서 전투기 개발하는 나라들이 그 부분에서 막히는데
그 옛날에 그걸 개발했다니 진짜 신급능력이네
III복불복III 21-02-21 14:22
   
와...대단하네ㄷㄷㄷ
슈퍼노바 21-02-21 14:41
   
음.... 사람이 아닐 수도 ..... 어느 별에서 오셨나요?
하늘나비야 21-02-21 14:42
   
천재네요 그냥 말 그대로 천재 ..대단하다 어떻게 버그가 0이지
빛둥 21-02-21 15:11
   
최초로 프로그래밍을 한, 시인 바이런의 딸, Ada Lovelace부인도 여성이었습니다. 초기 프로그래밍에서 여성들의 역할은 매우 컸습니다.
이름없는자 21-02-21 15:28
   
이거 어셈블리 소스 코드 를 보여주고 해설하는 유투브 영상있음. 바로 저 아폴로 11 의 과부하 처리 관련 에피소드는 유투브에서  Apollo 11 guidance computer error 1202 alarm 찾아보셈. 매우 자세하게 해설하고 있음.
좋은아침 21-02-21 17:14
   
난 여성이 있는것보다 흑인이 있는게 더 신기한데..
새끼사자 21-02-21 17:14
   
대단하신 분은 맞지만 설명부분에서는 꽤 과장되었네요. 당시 이미 코볼과 포트란이란 언어가 소개되어 있었고 나사에 최초 도입된 IBM수퍼컴퓨터는 포트란을 사용했습니다.
물론 지금과 같은 편의성이란 건 전혀 없는 상태였지만 원시적인 컴파일러 역시 존재하고 있는 상태였고요.
물론 저 분은 천재가 맞습니다만..혼자한 건 아니고 주변에 쌓여있는 천재들과 준재들이 쌓여서 만들어진 것들입니다.
그리고 자기 코어 메모리에 기록하는 것과 코딩은 별개의 작업입니다. 코딩하고 난 뒤 컴퓨터와 시뮬레이터에서 동작확인하고 그 결과로 나온 숫자들을 자기코어에 기록하기 위해 봉재사들이 동원되었지요.  물론 자기코어 메모리에 저장하기 전까지는 자기테이프를 사용하여 테스트를 진행 하였었고요.

참고로 유튜브 보시면 당시 LEM에 적용되었던 자기코어 메모리들을 이베이에서 구매해서 되살리는 프로젝트 영상을 보실 수 있습니다. 몇년간 지속된 프로젝트인데 얼마전 다시 보니 완성이 되었더라구요.