格林斯潘第十定律

✍ dations ◷ 2025-08-05 20:56:32 #格林斯潘第十定律

格林斯潘第十定律(Greenspun's tenth rule)是计算机编程领域,尤其是编程语言领域的一句格言:

任何C或Fortran程序复杂到一定程度之后,都会包含一个临时开发的、不合规范的、充满程序错误的、运行速度很慢的、只有一半功能的Common Lisp实现。

这表现了Lisp语言的灵活性和可扩展性,它包含了理论上编写复杂计算机程序需要的所有功能。而其他编程语言的核心实现却不能提供开发复杂程序的关键性功能支持。

该定律由菲利普·格林斯潘(Philip Greenspun)于1993年前后提出。尽管被称作“第十定律”,然而实际上并没有前九个定律。格林斯潘曾解释说:

对不起,Han-Wen,前面并没有九个定律。我只是想给它取一个令人印象深刻的名字。

Lisp语法几乎是抽象的,其程序以S-表达式形式构建,这等价于其他编程语言内置编译器中的抽象语法树。Lisp作为一种同像(homoiconic)的语言,不区分代码与数据,即:Lisp程序本身即Lisp数据结构。Lisp程序自身可通过宏生成额外的Lisp程序。因此,程序员可以相对轻松地构建复杂的特定领域语言。

如同保罗·格雷厄姆所说,Lisp比起其他语言可以更快地构建更健壮的程序。特别是Common Lisp有相当大的标准库,其中有大量的功能和灵活的接口,能写出符合各种编程范式的程序(如removereducemap等)。格林斯潘第十定律表示,任何复杂软件系统都需要上述的功能,都将从头到尾重新设计开发这一套系统,而这在Common Lisp中已经存在了。

知名黑客罗伯特·泰潘·莫里斯后来给该定律加上了推论,澄清适用该定律的“足够复杂的”程序集合:

……包括Common Lisp。

可以认为是对编写庞大而复杂的Common Lisp程序困难性的评论,或仅仅是对于Lisp中eval函数的幽默。格林斯潘第十定律和莫里斯推论都具备黑客幽默中“哈哈,但的确如此”的风格特征。

Template:Common Lisp

相关

  • 埃因霍温埃因霍温(荷兰语:Eindhoven)又译埃因霍温、爱因荷芬,旧译名安恒,是一个位于荷兰南部北布拉班特省的市镇,是荷兰的第五大城市。埃因霍温是欧洲领先的科技中心之一,地处西欧悠久科技
  • 加影加影(马来语:Kajang),是马来西亚雪兰莪州东南部的一个城市也是一个巫金,隶属于加影市议会。其面积为787.61平方公里,人口于2010年为342,657。该市顺时针面向彭亨文冬、森美兰汝来
  • 君士坦丁省 (法属阿尔及利亚)君士坦丁省(法语:Département de Constantine)是法国在法属阿尔及利亚的一个省份,存在于1848-1962年间,省会君士坦丁。 5个海外省及大区
  • 陈从教陈从教(1592年-1671年),字聿修,号虔庵,福建省福清县玉涧(今西门)人,明朝末年政治人物。天启四年甲子科举人,崇祯元年戊辰科进士,历任江西高安县知县,四川邻水县知县,南京户部主事,升四川参
  • 简·柏金简·马洛里·柏金,OBE(英语:Jane Mallory Birkin,1946年12月14日-)是一位英国女艺人、歌手,同时也是一名电影导演。柏金生于英国伦敦,其父大卫·柏金(David Birkin)是英国皇家海军的少
  • 金·布鲁恩金·布鲁恩(丹麦语:Kim Bruun,1993年8月21日-),韩裔丹麦男子羽毛球运动员。金·布鲁恩是出生于韩国的韩裔,在出生后三个月被丹麦夫妇收养,并在哥本哈根长大,本身并不会说韩语。2014年5月,金·布鲁恩出战希腊国际赛,赢得男子单打比赛冠军。年内,他又在西班牙公开赛打进男单半决赛。只列出曾进入半决赛的国际赛事成绩:
  • 武田亘弘武田亘弘(1965年3月22日-),前日本足球运动员。
  • 近卫忠房近卫忠房(1838年9月24日-1873年7月16日),是江户时代后期的公卿;也是摄家之一的近卫家当主;贵族院议长近卫笃麿的父亲与日本内阁总理大臣近卫文麿的祖父。近卫忠房在天保九年(1838年)出生,是父母近卫忠熙和岛津兴子(日语:郁姫)(岛津齐宣女)的次子。弘化四年(1847年)叙从五位上,历任左近卫权少将与左近卫权中将,在次年(弘化五年;1848年)昇叙从三位,位列公卿。及后他也担任过权中纳言、权大纳言及踏歌节会(日语:踏歌節会)外弁;文久二年(1862年)担任国事御用挂(日语:国事御用掛),同年也出
  • 无力偿付无力偿付(英语:insolvency),亦称资不抵债,是指债务人失去了支付债务的偿付能力。无力偿付与破产相关但是不同。破产指法律确定的无力偿付和相关的破产解决方式。通常债务方发现无力偿付而申请破产保护;或债权方把债务方带上法庭企图强迫偿付或扣押债务方财产。传统上,债权方把债务方带上法律,强迫债务方偿付,即使债务方需要拍卖财产。这种清算可能对债务方造成很大经济伤害,债务方可能只是有短期的资金流动问题。现在,为了扶助债务方的安宁或继续营业,许多国家的破产法设有破产保护等制度,让债务方用非清算手段来解决无力偿付
  • 打草谷打草谷,指游牧民族如契丹士兵到敌方的领地或占领区内抢劫食物、货币,或其他物资,往往对敌国的平民百姓造成重大伤害。《资治通鉴》记载947年正月及辽国军队四出“打草谷”,数百里无人烟。《辽史·第三十四卷·志第四》载:“人马不给粮草,日遣打草谷骑四出抄掠以供之。”“其打草谷家丁,各衣甲持兵,旋团为队,必先斫伐园林,然后驱掠老幼,运土木填壕堑;攻城之际,必使先登,矢石檑木并下,止伤老幼。”《新五代史‧四夷附录一》: “ 德光已灭晋, 遣其部族酋豪……括借天下钱帛以赏军。 胡兵人马不给粮草, 遣数千骑分出四野, 劫