Rob Pike의 프로그래밍 5가지 규칙 (1989)

1 week ago 7

  • 프로그램의 성능 병목과 최적화 시점에 대한 명확한 원칙을 제시한 규칙 모음
  • 측정 없는 최적화 금지단순한 알고리듬·데이터 구조의 우선성을 강조
  • 작은 입력값(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』에서 이미 언급한 내용으로,
    종종 “똑똑한 객체를 사용하는 단순한 코드 작성” 으로 요약됨

Read Entire Article