그린스펀의 열번째 법칙

위키백과, 우리 모두의 백과사전.

그린스펀의 열번째 프로그래밍 법칙(영어: Greenspun's tenth rule of programming)은 미국컴퓨터 과학자필립 그린스펀(영어: Philip Greenspun)이 컴퓨터 프로그래밍, 특히 그 중에서도 프로그래밍 언어의 순환에 관해 말한 잠언으로,[1][2] 내용은 다음과 같다.

충분히 복잡한 C 또는 포트란 소프트웨어는 모두 애드혹하고 대충 명세되었으며, 버그 덩어리의 느린 반쪽짜리 커먼 리스프 구현을 포함하게 된다.

영어: Any sufficiently complicated C or Fortran program contains an ad hoc, informally-specified, bug-ridden, slow implementation of half of Common Lisp.

이 격언은 리스프 프로그래밍 언어의 유연성과 확장성이, 만들어질 수 있는 모든 복잡한 소프트웨어에 이론상 필요한 모든 기능을 포함하며, 그런 복잡한 소프트웨어를 다른 프로그래밍 언어로 구현하고 보수(관리)했을 때 필요한 기능들이 리스프가 제공하는 유연성과 확장성과 결국 같은 것이나 다름없다는 관점을 내포한다. 그린스펀의 법칙은 유연성과 확장성을 위한 도메인 고유 언어(영어: Domain-specific language, DSL)를 구현하는 사제(私製) 인터프리터를 직접 만들기보다는, 리스프와 같이 그런 유연성과 확장성을 이미 갖추고 있는 언어를 쓸 것을 권하는 것이다.[3]

각주[편집]

  1. 필립 그린스펀(영어: Philip Greenspun). “Philip Greenspun's Research” [필립 그런스펀의 연구] (영어). 2009년 1월 24일에 원본 문서에서 보존된 문서. 2016년 7월 24일에 확인함. 
  2. 폴 그레이엄 (2014년 1월 6일) [2004]. 〈공부벌레의 역습〉. 《해커와 화가》. 번역 임백준. 한빛미디어. ISBN 9788968480713.  폴 그레이엄(영어: Paul Graham). “Revenge of the Nerds” [공부벌레의 역습] (영어). 
  3. “Greenspun's Tenth Rule, does every large project include a Lisp interpreter?” [그린스펀의 열번째 법칙, 모든 대규모 프로젝트는 리스프 인터프리터를 구현하게 되는가?]. 《Programmers Stack Exchange》 (영어).