如果玫瑰不叫玫瑰,芳香是否如故? 程序员们普遍认为,软件开发工作当中难度最高的一项任务就是为成果命名。尽管这种情况并不多见,但命名过程中尤其令人头大的就是面对着一种新型编程语言。 在一种新型语言的设计工作宣告结束后,随之而来的命名过程往往遵循以下几个步骤:以语言本身的特性或者描述为名,采取首字母或者缩写形式(例如BASIC、COBOL、TCL以及LISP);从现有语言当中派生而来的新名称(例如C++、C#以及CoffeeScript);又或者直接取自某位对数学或者计算科学作出卓越贡献的伟人(例如Ada、Pascal以及Turing)。 不过有时候,语言设计得们也会发掘出一些特别的灵感、进而为我们带来更为丰富的命名方式。下面我们就一起来看看这十三种拥有不同寻常名称的编程语言和它们背后的故事。 Python 这款最初发布于1991年的语言人气极高,它是由荷兰程序员Guido van Rossum于上世纪八十年代末着手开发的。由他一手打造的这款新型脚本语言派生自ABC编程语言,其诞生源自Rossum在圣诞节假期中的兴趣之作。 当需要为这种全新语言选择名称时,van Rossum希望选择一个“简短、独特而且略带神秘色彩”的字眼。他从著名英国喜剧团体Monty Python(巨蟒)身上得到了灵感,他本人也是该剧团的铁杆粉丝。不知道他当时有没有考虑过Dead Parrot(死鹦鹉,同样为英国喜剧团体)这个名称。 Java Java的前身是诞生于上世纪九十年代早期、由Sun公司打造的Green项目,该项目的初衷在于为即将到来的智能设备浪潮——例如互动式电视——建立一套技术支持方案。这款新语言在建立之初被称为Oak,但Sun公司的律师团很快发现该名称已经被注册,这迫使他们必须重新寻找合适的新名称。 公司旋即召开了一系列会议,并整理出一份简短的备选名称清单(经过律师团队的严格甄选),其中包括Silk、DNA以及Java。尽管现在我们已经无法考证当初是哪位仁兄最先推荐了Java这一选项,但它确实受到了大多数与会者的广泛支持。Java的灵感源自Peet咖啡店(Java即英文的爪哇,以盛产咖啡而闻名),这里是Sun公司的各位工程师们最青睐的休闲场所。 Forth Forth语言的开发工作可以追溯到上世纪六十年代,由Charles Moore负责开发。他曾于1968年效力于一家名为Mohasco的家居家具公司,当时公司为他配备了一台IBM 1130微型计算机外加一台2250图形显示器,希望他能借此进行地毯产品的设计。 由于无法利用FORTRAN语言进行图形设计,Moore决定自己开发一套编程语言——这就是Forth。他最初选择的名称是“Fourth”,代表这是第四代语言。但问题在于,IBM 1130微机只允许在文件名当中包含最多五个字符,所以在去掉了“U”之后、Forth由此诞生。 Perl 作为一款被称为“瑞士军刀”的语言,Perl以其出色的灵活性与强大能力闻名于世。Perl由Larry Wall于上世纪八十年代末所创建。在为其选择名称时,Wall表示他希望能在简短的词汇中包含“积极的内涵”。他考虑过使用他妻子的名字(Gloria),但后来转而选择了“pearl(珍珠)”。 然而当时这个名称已经被另一款编程语言所占用(即PEARL,‘流程与实验自动化实时语言’的缩写),为了避免冲突、他去掉了其中的“A”并由此衍生出perl。值得注意的是,最初peal这个名称的四个字母全部为小写,这是受到了Unix全部小写规则的启发。不过到了后来,也就是1993年Perl 4版本正式发布时,名称的首字母开始转为大写并一直沿用至今。 Smalltalk Smalltalk是一个包含多种面向对象编程语言的家族,最初由Xerox公司的帕洛阿尔托研究中心(简称PARC)于上世纪七十年代所创建。它的出现给众多后续出现的编程语言带来了重大影响,其中包括Java、Python以及Ruby等等。 AlanKay的学习研究小组一手建立起了Smalltalk,而根据Kay的回忆,当时选择这个名称是为了迎合“印欧神话体系”中的设定。在这套理论系统中,像宙斯以及托尔这类名号霸气侧漏的神往往历尽坎坷、饱经磨难。因此他反其道而行之,选择了Smalltalk这样一个听起来就人畜无害的字眼,平和舒缓的风格也让人们不至于对这种语言抱有不切实际的期望。 Logo Logo是一款由麻省理工学院人工智能实验室的多位计算机科学家于上世纪六十年代中期开发完成的编程语言,当时主要是为了满足教学需要。它属于Lisp语言的一类分支,能够被用于实现多种编程概念的教学、同时也给Scratch等后续教学型语言带来了深远影响。 它的一大主要特点在于利用海龟图形生成源自命令的输出结果。Logo这一名称明显源自希腊语的“logos”,原意为“字”或者“思想”,开发者希望借此对其与传统中面向数字的编程语言加以区分。 Scheme 在上世纪五十年代末,麻省理工学院的John McCarthy创造出了Lisp。作为历史最为悠久的早期高级编程语言之一,Lisp很快成为人工智能研究者们最为青睐的编程方案。随着时间的推移,Lisp的一系列不同分支也争相涌现,其中就包括Planner与Conniver。 1975年,麻省理工学院的Gerald Jay Sussman与GuySteele开发出了Lisp的又一款衍生方案,并按照Planner与Conniver的命名惯例为其选择了Schemer作为名称。不过这种语言当时运行在由麻省理工学院自主开发的ITS(即非兼容分时系统)系统之上,该系统强制要求文件名由两部分组成、且每一部分最多只能包含六个字符。有鉴于此,Schemer最终被缩减成了Scheme。 Scala Scala语言由Martin Odersky于2001年创建,它身兼函数与面向对象两种特性。它在编写时充分考虑到了将开发成果编译为Java字节码的需求(在此之前,它也能够被编译为.NET代码)。 Scala这一名称的确定基于两个不同理由:第一,由于结合了可扩展LAN、因此它具备很好的扩展(scale)能力;第二,“scala”在意大利语中代表着楼梯或者阶梯,这为该语言赋予了美好的双重含义——帮助使用者通往目标的卓越编程语言。 AWK任何一位曾经与Unix系统打过交道的朋友肯定也对AWK相当熟悉,这是一种用于处理文本文件的解释型语言。它最初诞生于1977年,当时被作为Unix grep工具的通用版本使用,随后于1979年首次成为Unix版本7中的内置方案。 在开发Perl时,Larry Wall受到了来自AWK的诸多影响。与其它大部分编程语言的名称一样,AWK同样是个缩写词;但与常见情况不同的是,这一缩写代表的并非语言本身的作用、而是来自贝尔实验室的三位开发者的姓氏首字母:Alfred Aho、Peter Weingerber以及Brian Kernighan(上图)。 |