骑猪兜风

Python是电视剧,Java是咖啡屋小甜心,程序语言都是如何命名的?

骑猪兜风 2016-03-11 23:02:34    201526 次浏览

  打开 TIOBE Index 世界编程语言排行榜,出现在榜单上的程序语言名称多半都让人一头雾水。一些程序语言的作者会以「这种语言是什么」来命名语言,比如 BASIC、COBOL、TCL、LISP;另一些语言则是由它从哪些现有语言派生而来命名,像是 C ,C#;当然还有一些来源于数学家或计算机科学家的名字,其中的代表则是 Ada,Pascal,Turing。

  但也有很多程序语言的名称是编写者随便拍脑门和大腿瞎想出来的,这篇文章里要讲的这几个就是如此。

  Python 不是大蟒蛇,是个 BBC 电视剧

Python是电视剧,Java是咖啡屋小甜心,程序语言都是如何命名的?

Guido van Rossum

  Python 的创始人吉多 · 范罗苏姆(Guido van Rossum)是个精力旺盛的逗比(就是上面图里这个人,我也想拍一张这样的皂片!)。1982 年从阿姆斯特丹大学取得数学和计算机科学硕士学位后,他曾在多家科研机构工作,2005 至 2012 年他在 Google 工作了 7 年,之后又离职加入 Dropbox。这位现年 60 岁的荷兰程序员在他 34 岁(1989 年)的圣诞节假期中设计出了风靡世界的程序语言 Python。虽然 Python 的原意是大蟒蛇,但创始人显然不是想表明这种语言可以变成白娘子跟你在西湖相遇,关于 Python 的命名,吉多自己(在 1996 年时)的说法是这样的:

「六年前的 1989 年 12 月,我在寻找一门『课余』编程项目来打发圣诞节前后的假期时光。假期里我的办公室关门,但我有一台家用电脑。我决定为当时我正构思的一个新的脚本语言写一个解释器,它是 ABC 语言的继承,对 UNIX / C 程序员会有吸引力。作为一个略微有些奇怪想法的人和《蒙提 · 派森的飞行马戏团》的狂热爱好者,我选择了 Python 作为项目的标题。」

Python是电视剧,Java是咖啡屋小甜心,程序语言都是如何命名的?

  那么问题来了,《蒙提 · 派森的飞行马戏团》是啥?

  《蒙提 · 派森的飞行马戏团》(Monty Python's Flying Circus)是英国的喜剧团体蒙提 · 派森创作的系列超现实主义电视喜剧,1969 年首次以电视短剧的形式在 BBC 电视频道播出,共推出了 4 季共 45 集节目。随后喜剧团体蒙提 · 派森的影响力从电视扩展到舞台剧、电影、音乐专辑、音乐剧等,被外国媒体认为「在喜剧上的影响力相当于披头士在音乐方面的影响」。他们六个人就长这样:

Python是电视剧,Java是咖啡屋小甜心,程序语言都是如何命名的?喜剧团体蒙提 · 派森

  那么问题又来了,《蒙提 · 派森的飞行马戏团》这个电视剧的名字是怎么来的?

  事实上,喜剧团体蒙提 · 派森取名的唯一评判标准就是听起来是不是很滑稽。一种说法是在这个名字定下来之前他们尝试过很多奇怪的名字,比如「猫头鹰伸开翅膀的时候」「蟾蜍的升降力矩」「一匹马」「勺子和桶」「回顾凡士林」「秃鹫」等等,直到 BBC 受不了了,表示「《蒙提 · 派森的飞行马戏团》这个名字很滑稽!而且我们把它公布出去了你们不许改了!!」名字才定下来。

  另一个成员说叫蒙提 · 派森(Monty Python)是喜剧团体的成员 Eric Idle 的主意,「Monty」这个名字是为了讽刺二战传奇将军蒙哥马利勋爵(Field Marshal Lord Montgomery)。他们要为这个名字找到一个听上去比较圆滑的姓,因此选择了「Python」。这个方案提出后,BBC 对于「Monty Python」这个名字的看法是:「对于一个低俗娱乐群体而言真是个完美的名字」。

  除去 Python,以流行文化命名的程序语言还有不少,比如 Frink Language 来自《辛普森一家》中的 Frink 教授:

Python是电视剧,Java是咖啡屋小甜心,程序语言都是如何命名的?

  说回到 Python 这门语言,虽然名称来源和本意都不是大蟒蛇,但公司还是采用了两条盘在一起的蛇作为 logo,不得不说这两条缠在一起的蛇真的好像是在交配……

  咖啡屋的小甜心 Java

Python是电视剧,Java是咖啡屋小甜心,程序语言都是如何命名的?

  Java 在英语中直译是著名咖啡产地「爪哇岛」,程序语言 Java 的命名也与此有关。

  1990 年代初期,Sun Microsystems 公司正努力开发一种应用于电视机顶盒、闹钟、面包机和微波炉的程序语言。这一项目在 Sun 公司内部被称为 Green 项目,但公司创始人和前 CEO 詹姆斯 · 高斯林(James Gosling)一直认为应该为这种新语言取个名字。直到有一天,詹姆斯看到办公室门口的一株橡树(Oak),这种充满生命力的绿色植物在硅谷随处可见,詹姆斯决定将新语言命名为 Oak。由于当时智能家电的市场需求并不太高,Sun 公司不久后就放弃了这项计划。

  1994 年,网络的发展让 Sun 公司认为万维网未来大有可为,决定将 Oak 应用于应用于万维网。但那时 Oak 已经被一家显卡制造商注册了,詹姆斯只好要求公司市场部召开命名征集会来命名这个新语言,将征集来的名称按照评选次序列成表提交给商标律师。

Python是电视剧,Java是咖啡屋小甜心,程序语言都是如何命名的?

詹姆斯 · 高斯林

  关于取名的过程,詹姆斯曾经这样告诉 Sun 公司现任总裁乔纳森 · 施瓦兹(Jonathan Schwartz):

「那天下午,我们大约十二人将自己锁在房间中,命名顾问充当会议主持人让我们写出一些名字来挑选。我们最终写出了大约十二个名称,律师团选定了能排除其他名称的候选项。Java 是列表中的第四个名称,我最喜欢的是第三个名称『Lyric』(抒情诗)。」

  会上排在第一位的名字是 Silk(丝绸),但这个名字遭到了詹姆斯的坚决反对。排名第二第三的名称没有通过律师的筛选,排在第四位的 Java 最终当选。

  据詹姆斯回忆,最先提出这个名字的人是马克 · 奥普曼(Mark Opperman),灵感来源是在一家咖啡店与同事品尝的爪哇岛咖啡。爪哇岛出产的阿拉比卡种咖啡香味清淡又没有酸味,很多国外咖啡馆都以 Java 来命名或宣传以彰显品质。Java 语言同样看中了这种品质,以一杯飘着香气的咖啡作为 Logo,还将 Java 语言中的很多库类名称以咖啡相关词语命名,比如 NetBeans、JavaBeans、ObjectBeans 等等。

  另外,当使用十六进制编辑器打开由 Java 源代码编译出的二进制文件(.class 文件)的时候,最前面的 32 位显示为 CA FE BA BE,即为词组「CAFE BABE」(咖啡屋宝贝)。

  除了 Java Language,名称同样属于食物类的语言还有 Pizza Language 等等。

  Lovelace 女士 是情色女星,也是女程序员

  洛夫莱斯(Lovelace)是个跟程序语言有着不解之缘的姓氏。至少有两种程序语言以 Lovelace 女士的名字命名。较为知名的一个是 Ada Language,这种语言 1970 年代产生于美国国防部,最初目的是减少国防部使用的高级编程语言数量。Ada 的命名则是为了纪念埃达 · 洛夫莱斯(Ada Lovelace)女爵。

Python是电视剧,Java是咖啡屋小甜心,程序语言都是如何命名的?

Ada Lovelace

  这位 Lovelace 女爵就是大名鼎鼎的英国诗人拜伦的女儿。和她父亲一样,Ada 在数学方面也有着极高的天赋。她曾花九个月时间翻译意大利数学家路易吉 · 米纳比亚讲述查尔斯 · 巴贝奇计算机分析机的论文,并添加了许多注记来说明用该机器来计算伯努利数的方法。这种方法被认为是世界上第一个计算机程序,Ada 也被认为是世界上第一位女性程序员。

Python是电视剧,Java是咖啡屋小甜心,程序语言都是如何命名的?

Linda Lovelace

  程序员 Ada Lovelace 女士逝世约 126 年后,耶鲁大学的研究生大卫 · 格林特(David Gelernter)听说了这个故事。当时他正考虑如何为自己编写的一种程序语言的命名。格林特先生马上想到了另一位 Lovelace 女士——他最喜欢的情色女星琳达 · 洛夫莱斯(Linda Lovelace)。格林特用 Linda 的名字命名了他的程序语言。

  以人名命名的程序语言很多,比如 Eiffel Language 得名于埃菲尔铁塔的设计者居斯塔夫 · 埃菲尔(Gustave Eiffel),Hugo Language 则是以维克多 · 雨果(Victor Hugo)的名字命名。与艺术相关的命名也不少,比如 Oberon Language 的名字源于莎士比亚《仲夏夜之梦》中的国王,Miranda Language 则是莎士比亚《暴风雨》中的一个角色。Oz Language 的 Oz 来自《绿野仙踪》(The Wizard of Oz),Malbolge Language 的 Malbolge 则是但丁《神曲》中地狱的第八层。

  十几年后,有好事记者采访格林特询问他为什么用 Linda 来命名程序,格林特只是淡淡地怂了怂肩膀:「哈哈哈哈哈哈当时我只是个研究生啊。」

  本文由 TECH2IPO / 创见(tech2ipo.com)编辑 @孟南熏撰写, 微信公众号「科技尝新」(微信 ID:tastenewtech)首发

内容加载中