Movatterモバイル変換


[0]ホーム

URL:


Jump to content
WikipediaThe Free Encyclopedia
Search

Greenspun's tenth rule

From Wikipedia, the free encyclopedia
Computing aphorism

Greenspun's tenth rule of programming is anaphorism incomputer programming and especiallyprogramming language circles that states:[1][2]

Any sufficiently complicatedC orFortran program contains anad hoc, informally-specified,bug-ridden, slow implementation of half ofCommon Lisp.

Overview

[edit]

The rule expresses the opinion that the argued flexibility andextensibility designed into the programming languageLisp includes all functionality that is theoretically needed to write any complex computer program, and that the features required to develop and manage such complexity in other programming languages are equivalent to some subset of the methods used in Lisp.

Other programming languages, while claiming to be simpler, require programmers to reinvent in a haphazard way a significant amount of needed functionality that is present in Lisp as a standard, time-proven base.

It can also be interpreted as a satiric critique of systems that include complex, highly configurable sub-systems.[3] Rather than including a custominterpreter for somedomain-specific language, Greenspun's rule suggests using a widely accepted, fully featured language like Lisp.

Paul Graham also highlights the satiric nature of the concept, albeit based on real issues:

That sounds like a joke, but it happens so often to varying degrees in large programming projects that there is a name for the phenomenon, Greenspun’s Tenth Rule.[4]

The rule was written sometime around 1993 byPhilip Greenspun. Although it is known as his tenth rule, this is a misnomer. There are in fact no preceding rules, only the tenth. The reason for this according to Greenspun:

Sorry, Han-Wen, but there aren't 9 preceding laws. I was just trying to give the rule a memorable name.[5]

HackerRobert Morris later declared acorollary, which clarifies the set of "sufficiently complicated" programs to which the rule applies:

…including Common Lisp.[6]

This corollary jokingly refers to the fact that many Common Lisp implementations (especially those available in the early 1990s) depend upon a low-level core of compiledC, which sidesteps the issue ofbootstrapping but may itself be somewhat variable in quality, at least compared to a cleanlyself-hosting Common Lisp.[7]

See also

[edit]

References

[edit]
  1. ^Greenspun, Philip (1990–2017)."Philip Greenspun's Research". Retrieved2020-12-23.
  2. ^Graham, Paul (May 2002)."Revenge of the Nerds". Retrieved2023-05-01.
  3. ^"Greenspun's Tenth Rule, does every large project include a Lisp interpreter?".Stack Exchange. 2017-04-12. Retrieved2023-05-01.
  4. ^Graham, Paul (2004).Hackers & Painters: Big Ideas from the Computer Age.O'Reilly Media.ISBN 978-0-596-00662-4.
  5. ^Greenspun, Philip (September 27, 2003)."10th rule of programming".
  6. ^"Lisp Quotes".paulgraham.com.
  7. ^Rhodes, Christophe (2008-05-15).SBCL: a Sanely-Bootstrappable Common Lisp(PDF). Lecture Notes in Computer Science. Retrieved2023-05-01.
Implementations
Software
Libraries
Applications
Development
environments
Publications
Design committee
People
Other
Features
Object systems
Implementations
Standardized
Common
Lisp
Scheme
ISLISP
Unstandardized
Logo
POP
Operating system
Hardware
Community
of practice
Technical standards
Education
Books
Curriculum
Organizations
Business
Education
People
Common Lisp
Scheme
Logo
POP
Retrieved from "https://en.wikipedia.org/w/index.php?title=Greenspun%27s_tenth_rule&oldid=1218638892"
Categories:
Hidden categories:

[8]ページ先頭

©2009-2025 Movatter.jp