グリーンスパンの第10法則
From Wikipedia, the free encyclopedia
この法則は、プログラミング言語LISPで設計された柔軟性と拡張性には、複雑なコンピュータプログラムを書くために理論的に必要なすべての機能が含まれており、他のプログラミング言語でそのような複雑さを開発および管理するために必要な機能は、LISPで使用される方法の一部分と同等であるという意見を表明している。
他のプログラミング言語は、よりシンプルであると主張しているが、標準的で実績のあるベースとしてLISPに存在する機能のかなりの部分を、プログラマが場当たり的に再発明する必要がある。
これは、複雑で高度に構成可能なサブシステムを含むシステムに対する風刺的な批評として解釈することもできる[3]。グリーンスパンの法則では、ドメイン固有言語用のカスタムインタプリタを組み込むのではなく、LISPのような広く受け入れられている完全な機能を備えた言語を使用することを推奨している。
ポール・グレアムも、この概念の風刺的な性質を強調している[4]。
冗談のように聞こえるかもしれないが、大規模なプログラミングプロジェクトでは程度の差はあれ頻繁に起こるため、この現象には「グリーンスパンの第10法則」という名前が付けられている。
このルールは1993年頃にフィリップ・グリーンスパン(英語版)によって書かれた。これは彼の第10法則として知られているが、実際には、先行するルールはなく、第10法則のみが存在する。グリーンスパンによると、その理由は次の通りである[5]。
申し訳ありませんが、ハン・ウェンさん、先行する9つの法則はありません。私はただそのルールに覚えやすい名前を付けようとしただけなのです。
ハッカーのロバート・T・モリスは後に、このルールが適用される「十分に複雑な」プログラムの系を明確にする帰結を宣言した[6]。
…Common Lispを含む。
この帰結は、多くのCommon Lisp実装(特に1990年代初頭に利用可能だったもの)がコンパイルされたC言語の低水準コアに依存しているという事実を冗談めかして言及している。これはブートストラップ問題を回避しているが、少なくともきれいにセルフホスティングするCommon Lispと比較すると、品質が多少変動する可能性がある[7]。
関連項目
脚注
- ↑ Greenspun, Philip (1990年 - 2017年). “Philip Greenspun's Research”. 2020年12月23日閲覧。
- ↑ Graham, Paul (2002年5月). “Revenge of the Nerds”. 2023年5月1日閲覧。
- ↑ “Greenspun's Tenth Rule, does every large project include a Lisp interpreter?”. Stack Exchange (2017年4月12日). 2023年5月1日閲覧。
- ↑ Graham, Paul (2004). Hackers & Painters: Big Ideas from the Computer Age. O'Reilly Media. ISBN 978-0-596-00662-4
- ↑ Greenspun, Philip (2003年9月27日). “10th rule of programming”. 2023年3月13日時点のオリジナルよりアーカイブ。2025年3月21日閲覧。
- ↑ “Lisp Quotes”. paulgraham.com. 2025年3月21日閲覧。
- ↑ Rhodes, Christophe (2008-05-15). SBCL: a Sanely-Bootstrappable Common Lisp. Lecture Notes in Computer Science. https://research.gold.ac.uk/id/eprint/2336/1/sbcl.pdf 2023年5月1日閲覧。
| 実装 |
| ||||||
|---|---|---|---|---|---|---|---|
| ソフトウェア |
| ||||||
| 出版物 | |||||||
| 設計委員会 | |||||||
| 関連人物 | |||||||
| その他 | |||||||