グリーンスパンのプログラミングの第10のルールは、コンピュータプログラミング、特にプログラミング言語の分野での格言であり、次のように述べています。[1] [2]
十分に複雑なCまたはFortranプログラムには、 Common Lispの半分の、アドホックで、非公式に指定された、バグだらけで、遅い実装が含まれています。
概要
この規則は、プログラミング言語Lispに設計された議論されている柔軟性と拡張性には、複雑なコンピュータ プログラムを書くために理論的に必要なすべての機能が含まれており、他のプログラミング言語でそのような複雑さを開発および管理するために必要な機能は、Lisp で使用される方法のサブセットと同等であるという意見を表明しています。
他のプログラミング言語は、よりシンプルであると主張していますが、標準的で実績のあるベースとして Lisp に存在する必要な機能のかなりの部分を、プログラマーが場当たり的に再発明する必要があります。
これは、複雑で高度に設定可能なサブシステムを含むシステムに対する風刺的な批評として解釈することもできます。[3]グリーンスパンのルールでは、ドメイン固有の言語用のカスタムインタープリターを含めるのではなく、Lispのような広く受け入れられている完全な機能を備えた言語を使用することを推奨しています。
ポール・グラハムも、現実の問題に基づいているとはいえ、この概念の風刺的な性質を強調している。
冗談のように聞こえるかもしれませんが、大規模なプログラミングプロジェクトでは程度の差はあれ頻繁に起こるため、この現象には「グリーンスパンの第10の法則」という名前が付けられています。[4]
このルールは、フィリップ・グリーンスパン氏によって 1993 年頃に書かれました。彼の 10 番目のルールとして知られていますが、これは誤った呼び方です。実際には、それより前のルールはなく、10 番目のルールがあるだけです。グリーンスパン氏によると、その理由は次のとおりです。
申し訳ないが、ハン・ウェン、先行する法則は9つではない。私はただ、その法則に覚えやすい名前を付けようとしただけなのだ。[5]
ハッカーのロバート ・モリスは後に、このルールが適用される「十分に複雑な」プログラムの集合を明確にする次 のような帰結を宣言した。
…Common Lispを含む。[6]
この帰結は、多くのCommon Lisp実装(特に1990年代初頭に利用可能だったもの)がコンパイルされたCの低レベルコアに依存しているという事実を冗談めかして言及している。これはブートストラップの問題を回避しているが、少なくともきれいに自己ホストするCommon Lispと比較すると、品質が多少変動する可能性がある。[7]
参照
参考文献
- ^ グリーンスパン、フィリップ(1990–2017)。「フィリップ・グリーンスパンの研究」。2020年12月23日閲覧。
- ^ グレアム、ポール(2002年5月)。「Revenge of the Nerds」。2023年5月1日閲覧。
- ^ 「グリーンスパンの第10ルール、すべての大規模プロジェクトにLispインタープリターが含まれているか?」。Stack Exchange。2017年4月12日。 2023年5月1日閲覧。
- ^ グレアム、ポール (2004)。ハッカーと画家:コンピュータ時代のビッグアイデア。オライリーメディア。ISBN 978-0-596-00662-4。
- ^ Greenspun, Philip (2003 年 9 月 27 日)。「プログラミングの 10 番目のルール」。
- ^ 「Lisp 名言集」paulgraham.com .
- ^ Rhodes, Christophe (2008-05-15). SBCL: 健全にブートストラップ可能な Common Lisp (PDF) . Lecture Notes in Computer Science . 2023-05-01に取得。
