핵심 요약
- 포트란이나 어셈블리어조차 쓰지 않고 순수 16진수 기계어로 드럼 메모리 물리 회전까지 계산해 코딩하던 1980년대 괴짜 개발자 '멜'의 실화입니다.
- 영업팀이 손님이 무조건 이기도록 승부조작 코드를 넣어달라고 압박하자, 스위치를 켜면 컴퓨터가 무조건 이겨버리게 반대로 짜놓고는 '내 무의식이 너무 윤리적이라 어쩔 수 없다'며 퇴사했습니다.
- 남겨진 16진수 코드를 분석하던 후임 프로그래머는 명령어 자체를 숫자로 재활용하는 등 상상을 초월한 천재적 최적화에 감탄했다는 고전 명문입니다.
요약 1983년 유즈넷(USENET)에 올라온 뒤 전설적인 해커/프로그래머 전설로 남은 '멜의 이야기(The Story of Mel)'입니다. 작성자 에드 네이더(Ed Nather)는 포트란이나 어셈블리어조차 거부하고 16진수 기계어를 직접 짜 넣던 진정한 괴짜 천재 개발자 멜(Mel Kaye)과의 일화를 회고합니다.
당시 로열 맥비(Royal McBee)라는 컴퓨터 회사는 드럼 메모리 기반의 컴퓨터(LGP-30 및 신형 RPC-4000)를 생산하고 있었습니다. 이 컴퓨터는 회전하는 드럼 메모리 위에 다음 실행할 명령어의 위치를 직접 지정해야 하는 구조였는데, 멜은 컴파일러는커녕 최적화 어셈블러도 믿지 않았습니다. 그는 명령어가 처리되는 순간 정확히 읽기 헤드 아래로 다음 명령어가 도착하도록 드럼 주소를 머릿속으로 일일이 계산해 코드를 배치했습니다. 심지어 지연 시간(delay)이 필요할 때는 타이머 루프를 돌리는 대신, 방금 읽기 헤드를 지나쳐 드럼이 정확히 한 바퀴를 더 돌아야 실행되도록 주소를 잡아버렸는데, 멜은 이를 극단적인 지연이라는 의미로 '가장 비최적(most pessimum)'이라 불렀습니다.
멜이 작성한 가장 유명한 프로그램은 컴퓨터 전시회에서 고객들과 승부하던 '블랙잭 게임'이었습니다. 전시회장마다 손님들이 몰려 IBM 영업사원들이 손가락만 빨게 만들던 인기 프로그램이었는데, 영업팀에서는 "손님들이 자꾸 져서 기분이 상하니 스위치를 켜면 고객이 무조건 이기도록 조작해 달라"고 요청했습니다. 멜은 개발자로서의 양심에 어긋난다며 완강히 거부했으나, 사장과 동료들의 압박에 결국 코드를 수정했습니다.
하지만 멜이 건드린 조건문은 반대로 작동했습니다. 스위치를 켜면 고객이 이기는 게 아니라 컴퓨터가 사기를 쳐서 매번 무조건 이겨버리게 된 것입니다. 멜은 "내 무의식이 너무 윤리적이라 어쩔 수 없었다"며 낄낄대고는 절대 코드를 고치지 않은 채 회사를 떠났습니다. 이후 사장의 부탁으로 16진수로 가득 찬 멜의 코드를 직접 뜯어보게 된 필자는, 명령어 코드 자체를 상수로 재활용하는 등 기상천외한 예술적 최적화로 가득 찬 멜의 천재성에 경탄을 금치 못했다고 전합니다.
Sponsored · 광고