그린스펀의 10번째 규칙
Greenspun's tenth ruleGreenspun의 프로그래밍 10번째 규칙은 컴퓨터 프로그래밍, 특히 프로그래밍 언어 서클의 격언으로 다음과 같은 [1][2]내용을 담고 있습니다.
충분히 복잡한 C 또는 Fortran 프로그램에는 Common Lisp의 절반에 대해 비공식적으로 지정된 버그가 많은 느린 애드혹 구현이 포함되어 있습니다.
개요
이 규칙은 프로그래밍 언어 Lisp로 설계된 주장된 유연성과 확장성이 이론적으로 복잡한 컴퓨터 프로그램을 작성하는데 필요한 모든 기능을 포함하며, 다른 프로그래밍 언어에서 그러한 복잡성을 개발하고 관리하는 데 필요한 기능은 t의 일부 부분 집합과 동등하다는 의견을 나타냅니다.Lisp에서 사용되는 방법.
다른 프로그래밍 언어들은 단순하다고 주장하지만, Lisp에 표준적이고 검증된 기반으로서 존재하는 많은 필요한 기능을 프로그래머가 무작위로 재창조해야 합니다.
또한 복잡하고 구성이 용이한 하위 [3]시스템을 포함하는 시스템을 풍자적으로 비판하는 것으로도 해석할 수 있습니다.Greenspun의 규칙은 일부 도메인 고유의 언어에 대한 커스텀 인터프리터를 포함시키는 것이 아니라 리스프처럼 널리 받아들여지고 완전한 기능을 갖춘 언어를 사용하도록 권장하고 있습니다.
Paul Graham은 실제 문제에 기초하고 있지만 개념의 풍자적인 본질을 강조한다.
농담처럼 들리지만, 대형 프로그래밍 프로젝트에서는 매우 빈번하게 일어나는 현상이어서 그린스펀의 10번째 [4]법칙이라는 이름이 있습니다.
이 규칙은 Philip Greenspun에 의해 1993년경에 작성되었다.비록 그것이 그의 열 번째 규칙으로 알려져 있지만, 이것은 잘못된 명칭이다.사실 이전 규칙은 없고 열 번째 규칙만 있습니다.Greenspun에 따르면 그 이유는 다음과 같습니다.
한웬 씨, 죄송하지만 9개 선행법이 없어요.난 그냥 그 규칙에 [5]기억에 남을 이름을 붙이려고 했을 뿐이야.
해커 Robert Morris는 나중에 규칙이 적용되는 일련의 "충분히 복잡한" 프로그램을 명확히 하는 결과를 발표했다.
…[6]일반 리스프 포함.
이 결론은 많은 공통 Lisp 실장(특히 1990년대 초에 이용 가능한 실장)이 컴파일된C의 저레벨 코어에 의존하고 있다는 사실을 농담삼아 언급하고 있습니다.이것에 의해 부트스트래핑의 문제는 회피되지만 적어도 깨끗한 자기호스팅의 공통 [7]Lisp와 비교하면 품질 자체는 다소 다를 수 있습니다.
그 후 소프트웨어 엔지니어 Stewart Milberger는 Morris의 결과를 증명하기 시작했습니다.
저는 Open Inventor가 C++ 네임스페이스가 지원되기 전에 했던 것처럼 Common Lisp(Scheming Pony의 Greeenspun의 10번째 증명에 대한 Morris's Collarary의 첫 번째 단계)에서 버그 애드혹이 제대로 지정되지 않은 네임스페이스를 구현하고 있었기 때문에 Open Inventor를 Common Lisp로 이식하는 것을 중단했습니다.Strostrup에게 공통 리스프 매크로를 보고 템플릿 [8]광기를 멈추라고 합니다.
이 증거는 농담삼아 Common Lisp가 '패키지'라고 불리는 심볼을 분할하는 비교적 원시적인 시스템을 가지고 있다는 사실과 또한 Greenspun의 11 대 C++가 있을 수 있다는 사실을 언급하고 있습니다.
「 」를 참조해 주세요.
레퍼런스
- ^ Greenspun, Philip (1990–2017). "Philip Greenspun's Research". Retrieved 2020-12-23.
- ^ Graham, Paul (May 2002). "Revenge of the Nerds". Retrieved 2019-10-24.
- ^ "Greenspun's Tenth Rule, does every large project include a Lisp interpreter?". Stack Exchange. 2017-04-12. Retrieved 2020-12-23.
- ^ Graham, Paul (2004). Hackers & Painters: Big Ideas from the Computer Age. O'Reilly Media. ISBN 978-0-596-00662-4.
- ^ Greenspun, Philip (September 27, 2003). "10th rule of programming".
- ^ "Lisp Quotes". paulgraham.com.
- ^ Rhodes, Christophe (2008-05-15). "SBCL: a Sanely-Bootstrappable Common Lisp" (PDF). Lecture Notes in Computer Science (Self-Sustaining Systems: First Workshop). Retrieved 2020-12-23.
- ^ Scheming Pony (2020-02-19). "Vulkanizing". libre-riscv-dev mailing list. Retrieved 2020-12-23.