格林斯潘第十定律

✍ dations ◷ 2025-06-28 03:40:10 #格林斯潘第十定律

格林斯潘第十定律(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

相关

  • 德国联邦国防军联邦国防军(德语:Bundeswehr)是德意志联邦共和国的武装部队,由陆军、海军、空军三大军种及基础军(后勤、防谍、宪兵等支援部队)、中央医疗军(军医部队)两大跨军种部队组成。第二次世
  • 非合并建制领土美国领地是指美国行政区划的一种分类,其领土由美国政府管理但不属于美国任何一个州。建立这些领地的目的是为了管理这些新获得的地区,因为当时美国领土的边界还在扩张中。这些
  • 骚沙萨尔萨音乐,亦称骚沙音乐,是相当多元及受欢迎的拉丁美洲加勒比海音乐,在波多黎各乐手的演绎下,在世界各地皆有知名度。“萨尔萨”为“Salsa”的英文发音音译,但其发源地古巴和波
  • 得墨忒耳得墨忒耳(古希腊语:Δημήτηρ,拉丁语:Demeter),又译德墨忒尔。是希腊神话中司掌农业、谷物和母性之爱的地母神,也是奥林匹斯十二主神之一。她是克罗诺斯和瑞亚的第2个女儿,赫拉
  • 神奈川县第7区神奈川县第7区是日本众议院的选区,设立于1994年。北海道 13 | 山形县 4 | 静冈县 9 | 岛根县 3 | 大分县 4福井县 3 | 山梨县 3 | 德岛县 3 | 高知县 3 | 佐贺县 3青森县 4 |
  • 提姆·达利提姆·达利(James Timothy "Tim" Daly ,1956年3月1日-)是美国的一位演员、导演和制作人。他最著名的作品是在NBC情景喜剧《Wings》中出演Joe Hackett角色,以及《国务卿女士》中的
  • 冷开场冷开场(英语:cold open)是电影、电视节目中的一种叙事技巧,指的是在片头、片头名单(英语:opening credits)播放之前直接跳入故事情节。对于电视节目而言,有理论认为这会让观众尽快融
  • 康正 (佛师)康正(1534年—1621年3月3日)是日本战国时代至江户时代初期的佛师。七条佛所(日语:七条仏所)庆派第21代。初名左京,后来改名为民部卿。担任大佛师大夫法印、东寺大佛师等,为当时著名
  • 希意战争,一个星期后保加利亚国王鲍里斯三世被邀请参与即将对希腊的打击,但拒绝墨索里尼的邀请。意大利开始宣传进攻希腊的计划,不断重复的挑衅行为被实行,例如飞越希腊领空及用飞机攻击希腊海军船只、在高峰时一艘意大利潜艇于1940年8月15日在蒂诺斯港用鱼雷攻击及击沉希腊轻巡洋舰“伊利号”,虽然没有确实证据证明是意大利发动攻击,希腊政府宣布攻击是由“不知名的国家”之潜艇发动,虽然维持了中立地位,人们均知道谁是真正的行凶者(指责墨索里尼及其外交部长齐亚诺)。1940年10月28日傍晚在雅典的意大利大使伊曼纽尔·格拉齐向梅塔
  • 瓦尔特·巴特瓦尔特·巴特(德语:Walter Bathe,1892年12月1日-1959年9月21日),德国游泳运动员,擅长蛙泳。他在1912年夏季奥运会上获得了200米和400米蛙泳金牌。 1970年,他入选了国际游泳名人堂。