가장 비싼 1바이트 실수: NUL-terminated 문자열의 선택
Source
Evernote/Technote scraps/The Most Expensive One-byte Mistake - ACM Queue.md
Summary
이 문서는 IT/CS 역사상 가장 비용이 많이 든 실수로 C/Unix/POSIX의 NUL-terminated 문자열 채택을 지목한다. 저자 Poul-Henning Kamp는 Sony PSN 해킹이나 IBM의 OS 선택 등 다른 사례들이 의도적 CS 결정이 아니거나 비즈니스 결정이었다고 배제한다. 반면, C 언어 설계자(Thompson, Ritchie, Kernighan)가 메모리 절약을 위해 ‘주소+길이’ 대신 ‘주소+NUL 마커’를 선택한 것은 의도적 기술 결정이었으나, 이로 인해 이후 하드웨어 설계, 보안 취약점, 시스템 복잡성 등에서 막대한 경제적/기술적 비용이 발생했다고 주장한다.
Key Points
- IT 실수 중 ‘의도적 CS/IT 결정’에서 비롯된 가장 비싼 실수는 C 언어의 NUL-terminated 문자열 채택임
- 당시 대안인 ‘주소+길이’ 방식은 메모리 오버헤드가 1바이트 더 들었으나, 당시 PDP 컴퓨터의 제한된 메모리 환경에서 NUL 방식이 선택됨
- 이 결정은 이후 하드웨어 문자열 처리 명령어 설계, 보안 문제(버퍼 오버플로우 등), 시스템 복잡성 증가에 장기적 영향을 미침
- 저자는 이 결정이 당시 합리적이었으나, 그 경제적/기술적 파급 효과가 예상치 못하게 컸음을 강조함