일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- java
- 자바기본
- 데이터베이스
- 디자인
- 자바연습문제
- js
- 리눅스
- 스프링
- 패스트캠퍼스
- 재택근무
- 자바기초
- 국비
- 웹
- 직장인인강
- 디자인패턴
- 한번에끝내는JavaSpring웹개발마스터초격차패키지Online
- DB
- Spring
- 직장인자기계발
- DesignPattern
- 패스트캠퍼스후기
- 자바예제
- java기초
- ncs
- 패캠챌린지
- 자바
- String
- javabasic
- linux
- 한번에끝내는JavaSpring웹개발마스터초격차패키지Online강의
- Today
- Total
FIF's 코딩팩토리
최초의 버그와 최초의 컴파일러 본문
해군 벌레
“해군에 입대하라, 더 넓은 세상을 경험할 것이다” 하지만 그렇지 못한 경우가 얼마나 많은지 알면 놀라게 될 것이다. 주위에 영국 여성 해군 혹은 미국 여성 해군 예비 부대에 입대해 2차 세계대전 동안 암호해독 업무를 맡았던 군인이 있다면 한번 물어봐라. 그레이스 호퍼 또한 1944년 미 해군에 입대했으나 하버드 대학교에서 계산 과제에 참여하도록 명령 받았다. 사실, 그녀가 배서 칼리지에서 수학과 물리학을 전공했으며, 이후 석사와 박사 학위를 받고 10년간 수학 교수로 일했던 사실을 생각하면 당연한 일일 수도 있다. 하버드 대학교에 도착하자 사람들은 “도대체 어디 있다가 이제 온 거야?”라고 말하며 그녀를 환영했다. 그녀의 상사는 미국 해군 예비역 소령 하워드 에이킨 이었다. 그는 자신이 개발한 컴퓨터를 사용해 그녀가 화요일까지 아크탄젠트급 수의 계숫값을 계산하도록 지시했다. “디지털 장치는 태어나 처음 보았습니다. 그래서 이 장치를 사용하는 일은 어떤 것도 하고 싶지 않았죠” 훗날 그녀는 첫 명령을 떠올리며 이야기했다. 그러나 해군에서 명령을 거부할 수는 없었다. 그레이스 호퍼는 프로그램 전문가가 되었을 뿐만 아니라 하버드에서 제작한 ‘하버드 마크 1’ 컴퓨터의 사용 설명서를 쓰기도 했다. 더 나아가 그녀는 프로그래밍에 자신의 일생을 바쳤다. 그녀는 기술 분야에서 어느 여성보다도 열심히 일했으며, 결국 해군 제독까지 되었다.
그녀는 최초로 기록된 프로그램 ‘디버깅’을 한 사람이기도 하다. 1945년 어느 날 호퍼는 당시 하버드에서 사용 중이던 마크 2의 오동작 원인을 찾았다. 나방이 기계 부품에 들러붙어 계전기를 고장 낸 일이었다. 그녀는 일지에 ‘버그(벌레)가 발견된 첫 번째 사례’라는 기록을 남겼다. 그녀는 자신이 버그(프로그램 오류)라는 용어를 처음 쓴 사람이 아니라고 했지만, 미국 해군에서 버그는 진짜 벌레였다는 사실은 기억할 필요가 있다.
컴파일러
그레이스 호퍼는 최초의 컴파일러를 개발한 사람이기도 하다. 그녀는 그 모두가 휠러(Wheeler), 윌크스(Wilkes), 길(Gill)이 쓴 프로그래밍 책과 그들이 개발한 서브루틴 라이브러리 덕분이라며 공을 돌렸다. 호퍼가 주목했던 서브루틴의 특징은 규격화된 입출력이었다. 그녀는 이 개념을 존 모클리에게서 배운 ‘숏 코드’와 결합했다. 숏 코드는 변수와 연산자로 쓴 식을 이진수로 체계화한 것이다. “이진수 코드는 분명 식을 표현한 것이었지만, 알파벳 변수가 없어서인지 전혀 식처럼 보이지 않았어요...” 실제 기계 코드 대신 다른 형태의 코드를 사용할 수도 있겠다는 생각이 처음 든 순간이었다. 그녀는 사람의 특성 또한 인정하고 받아들이려 했다. “프로그래머는 코드를 옮겨 쓸 때 정말로 자주 실수를 해요!
숫자 4를 스페이스를 뜻하는 델타(Δ)나 A로 옮겨 적는 일이 얼마나 자주 있는지 들으면 깜짝 놀랄 거예요. 그래서 프로그래머가 서브루틴을 직접 똑같이 따라 쓰도록 하기보다는 컴퓨터가 서브루틴을 복사하도록 만드는 것이 더 타당해 보였어요. 세계 최초의 컴파일러인 A-0 컴파일러는 이런 생각에서 출발해 만들어졌지요” ‘컴파일러’라는 이름은 어떻게 붙여진 걸까. 바로 이런 뜻에서다. 서브루틴은 라이브러리에 들어 있는데, ‘사람들은 라이브러리(도서관)에서 이것저것 빌린 후에 하나로 컴파일(합치다)한다.’
'기타 ' 카테고리의 다른 글
비즈니스 컴퓨팅의 시작 (0) | 2019.08.09 |
---|---|
폰 노이만과 새로운 컴퓨터의 탄생 (0) | 2019.08.09 |
SOA(Service Oriented Architecture) 개념 한번에 정리 (0) | 2019.07.19 |
미들웨어(Middleware)개념 정리 (0) | 2019.06.19 |
CICD/젠킨스 정리 (0) | 2019.06.17 |