热门问题
时间线
聊天
视角
格林斯潘第十定律
来自维基百科,自由的百科全书
Remove ads
格林斯潘第十定律(Greenspun's tenth rule)是計算機編程領域,尤其是程式語言領域的一句格言:[1][2]
任何C或Fortran程序複雜到一定程度之後,都會包含一個臨時開發的、不合規範的、充滿程序錯誤的、運行速度很慢的、只有一半功能的Common Lisp實現。
這表現了Lisp語言的靈活性和可擴展性,它包含了理論上編寫複雜電腦程式需要的所有功能。而其他程式語言的核心實現卻不能提供開發複雜程序的關鍵性功能支持。
來源
該定律由菲利普·格林斯潘(Philip Greenspun)於1993年前後提出。儘管被稱作「第十定律」,然而實際上並沒有前九個定律。格林斯潘曾解釋說:
含義
Lisp語法幾乎是抽象的,其程序以S-表達式形式構建,這等價於其他程式語言內置編譯器中的抽象語法樹。Lisp作為一種同像(homoiconic)的語言,不區分代碼與數據,即:Lisp程序本身即Lisp數據結構。Lisp程序自身可通過宏生成額外的Lisp程序。因此,程式設計師可以相對輕鬆地構建複雜的特定領域語言。
如同保羅·格雷厄姆所說,Lisp比起其他語言可以更快地構建更健壯的程序。[4]特別是Common Lisp有相當大的標準庫,其中有大量的功能和靈活的接口,能寫出符合各種編程範式的程序(如remove
、reduce
、map
等)。格林斯潘第十定律表示,任何複雜軟件系統都需要上述的功能,都將從頭到尾重新設計開發這一套系統,而這在Common Lisp中已經存在了。
莫里斯推論
知名黑客羅伯特·泰潘·莫里斯後來給該定律加上了推論,澄清適用該定律的「足夠複雜的」程序集合:
……包括Common Lisp。[5]
可以認為是對編寫龐大而複雜的Common Lisp程序困難性的評論,或僅僅是對於Lisp中eval函數的幽默。格林斯潘第十定律和莫里斯推論都具備黑客幽默中「哈哈,但的確如此」的風格特徵。[6]
參見
- 內平台效應
- 圖靈焦油坑
- Zawinski包裝軟件定律
參考
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads