- 프로그램의 성능 병목과 최적화 시점에 대한 명확한 원칙을 제시한 규칙 모음
-
측정 없는 최적화 금지와 단순한 알고리듬·데이터 구조의 우선성을 강조
- 작은 입력값(n)에서는 복잡한 알고리듬이 오히려 느리다는 점을 지적
-
데이터 구조가 알고리듬보다 중요하며, 잘 조직된 데이터가 해법을 자명하게 만든다고 설명
- 이 규칙들은 Tony Hoare의 “조기 최적화는 만악의 근원”과 KISS 철학, Fred Brooks의 주장과도 연결됨
Rob Pike의 프로그래밍 5가지 규칙
-
규칙 1: 프로그램이 어디서 시간을 소비할지 예측할 수 없음
- 병목은 예상치 못한 곳에서 발생하므로, 실제로 병목임이 입증되기 전까지 속도 개선 시도 금지
-
규칙 2: 측정이 우선
- 속도 조정은 측정 후에만 수행하며, 코드의 한 부분이 전체를 압도할 때만 최적화 고려
-
규칙 3: 복잡한 알고리듬은 작은 n에서 느림
- 복잡한 알고리듬은 큰 상수를 가지며, n이 자주 커지지 않는 한 단순한 방법 사용
- n이 커지더라도 먼저 규칙 2를 적용해야 함
-
규칙 4: 복잡한 알고리듬은 버그가 많고 구현이 어려움
- 단순한 알고리듬과 단순한 데이터 구조를 사용하는 것이 바람직함
-
규칙 5: 데이터가 핵심
- 올바른 데이터 구조를 선택하고 잘 조직하면, 알고리듬은 거의 자명하게 드러남
- 프로그래밍의 중심은 알고리듬이 아니라 데이터 구조임
관련 철학 및 인용
- 규칙 1과 2는 Tony Hoare의 “조기 최적화는 만악의 근원” 이라는 격언과 동일한 의미
- Ken Thompson은 규칙 3과 4를 “의심스러울 땐 단순한 방법(Brute Force)을 써라” 로 재해석
- 규칙 3과 4는 KISS(Keep It Simple, Stupid) 설계 철학의 예시
- 규칙 5는 Fred Brooks가 『The Mythical Man-Month』에서 이미 언급한 내용으로,
종종 “똑똑한 객체를 사용하는 단순한 코드 작성” 으로 요약됨