Sojin Park
  • 활동
  • 위키
  • Worse is better

    https://www.jwz.org/doc/worse-is-better.html

    소프트웨어를 디자인하는 두가지 방법.

    • “The right thing”: Common Lisp

      • 간단한 인터페이스
      • 언제나 올바르게 동작함
      • 일관적으로 동작함
      • 최대한 많은 유스케이스를 커버함
    • “Worse is better”: C & Unix

      • 구현의 간단함이 제일 중요하다.
      • 인터페이스보다 구현이 간단해야 함
      • 올바르게 동작해야 하지만 구현이 간단한게 더 중요함
      • 일관적이면 좋겠지만 구현이 간단한 편이 더 좋음. 너무 비일관적이지만 않으면 됨
    • 실용적인 수준으로 유스케이스를 커버하면 됨. 구현이 복잡해지는 경우에는 그냥 구현하지 마라.

    • 프로그래머는 The right thing을 원하는 경향이 있지만 Unix & C의 사례를 보면 Worse is better 가 더 좋을 수 있음.

    • Unix & C는 구현이 간단했기 때문에 각종 디바이스에 포팅되었고, 바이러스처럼 점유율이 높아졌음.

    • 점유율이 높아지니까 자연스럽게 고치고자 하는 니즈가 생김 => 더 많은 사람과 자본이 투입됨.

    • Common Lisp는 처음부터 잘 만들려고 했지만 관성을 얻지 못함.

    • 일반적으로 50~80% 정도의 유스케이스를 잘 커버하고 쓰기 쉬우면 사람들은 쓰게 되는 경향성이 있음