编程语言名称背后的有趣故事
摘要: 你知道这些故事吗?
- 原文:How 13 programming languages got their names
- 译文:编程语言名称背后的有趣故事
- 译者: 刘欣
- 微信公众号:码农翻身
软件开发中最难的一项任务可能就是“命名”了,给类,变量,函数命名。
相比而言,当一个新的语言被创造出来,想一个好的名称更不容易。
编程语言的名称选择通常有这么几种“公式”:
- 缩写,用来描述这么语言是做什么的, 例如Basic (Beginners’ All-purpose Symbolic Instruction Code), COBOL, TCL , LISP等
- 从现有的语言派生而来,例如 C++, C#,CoffeScript
- 用大师的名字来命名, 例如Ada, Pascal, Turing
有时候,语言的创造者们在选择名字的时候非常有创意,今天就来聊一聊13个不同寻常的编程语言名称背后的故事。
1. Python
这是荷兰人Guido van Rossum 于上世纪80年代末设计的一个语言,现在非常流行,Van Rossum 在起名的时候,想要一些“短的、独特的、有点神秘色彩的”东西,他是英国著名戏剧团体Monty Python超级粉丝, 就从中找到了灵感,用Python命名了这门新语言。
其实Monty Python剧团有个著名的戏剧叫做Dead Parrot, 似乎没有消息说他想用这个名字来命名新语言。
2. Java
上世纪90年代初, Sun预感到智能家居设备(如互动TV)的浪潮即将来临,他们开发了一个叫Oak的语言,但是Sun的律师确定这个名字的商标已经被注册,他们只好选个新名字,经过一系列的会议,大家想了很多名字,经过律师的“过滤”,只剩下了三个Silk, DNA , Java。
不知道是谁第一个建议使用Java, 但是大家普遍认为灵感来自于Sun的工程师常去一个咖啡店:Pete’s Coffee,因为Java是印度尼西亚的爪哇岛,那里盛产咖啡。
3. Forth
Forth 是Charles Moore在上世纪60年代设计的一个古老语言, 当时他在一个家装公司工作,公司给它提供了一台IBM 1130 微型计算机,还带着一个2250显示卡,公司想让他用电脑来设计地毯!
Moore最初想使用FORTRAN, 但这个语言没法使用2250 显卡。他只好发明了一个新语言,叫做Fourth ,意思是第四代编程语言。 可是1130计算机要求文件名不能超过5个字符, 于是他只好把u给踢了出去,变成了Forth。
4. Perl
Perl 被誉为瑞士军刀,功能强大而灵活,是由Larry Wall上世纪80年代发明的。Larry想要一个短的,有“内涵的”名称,他曾经考虑了妻子的名字Gloria, 后来还是选择了pearl(珍珠)。
悲催的是同名的语言已经存在了,于是他就把A去掉,最终变成了perl !
注意最初名称是全小写的,直到1993年 Perl4发布的时候,才变成首字母大写。
5. Lua
Lua 是巴西的一个大学所发明的,它基于两个语言:DEL(Date Entry Language)和SOL(Simple Object Language)。 新语言把两个语言的优点都结合了起来。
Sol在葡萄牙语中的意思是太阳, 那新的语言就叫做月亮: Lua。
6. Smalltalk
Smalltalk是一个面向对象的语言,由施乐帕洛•阿尔托研究中心发明,这门语言给Java,Python,Ruby等很多后来者带来了巨大影响。
Alan Kay的小组发明了Smalltalk,正如他所说,这一名字的选取是针锋相对于“印欧神灵理论”的,该理论中任何系统都会被赋予一个它们永远无法企及的、类似于神灵的名字,例如宙斯(与天神同名)和索尔(与雷神同名)。相反地,他选择了一个超级平淡无奇的名字,Smalltalk,以杜绝招致任何过高的期望值。
7. Logo
这是MIT开发的一个用于教育的一门语言,作为LISP的一个方言,可以用来教授很多的编程概念,它也影响了很多后来的致力于教育的编程语言,例如Scratch。
Logo编程时有个小海龟,可以根据用户的指令来画图。
Logo来源于logos, 在希腊语中意思是“词”或者“思想”, 这个名称和那些面向数字的编程语言区分开了。
8. Ruby
Ruby 由日本人Yukihiro Matsumoto(“Matz”)开发,这是个面向对象的脚本语言。
类似Perl , Matz想要一个宝石作为语言的名称,经过和同事讨论后,Coral和Ruby 被留在了最后的名单内。 Matz选择了Ruby , 这是大有深意的,根据欧美“诞生石(Birthstone)”的传统,每个星座都有诞生石。 其中7月的诞生石是ruby , 6月的是pearl (对应的语言就是Larry Wall发明的perl)。
Matz可不仅仅是想让Ruby成为Perl的后继,而是想替代它。
9. Scheme
上世纪50年代, John McCathy在MIT发明了Lisp,这是最早的高级编程语言之一,并且很快变成了人工智能研究者的最爱。
随着时间的推移,很多LISP的方言被开发出来,其中的两个是Planner和Conniver。
1975年,MIT的Gerald Jay Sussman和Guy Steele 又开了一个Lisp的新方言(方言真多!),他们把它称为Schemer, 这个Schemer 使用了Planner和Conniver的命名规范。
然而,这个语言跑在一个MIT开发的叫做ITS的操作系统上,它的文件名支持两个部分, 每个部分都只能有6个字符, 于是Schemer只好缩水,变成Scheme。
10 . Scala
Scala是个年轻的语言,2001年由Martin Odersky创建,这是一个既支持函数式编程又支持面向对象编程的语言。 被编译以后,它成为了Java字节码,在JVM中运行(之前,Scala可以被编译成.NET的中间代码来执行)。
选择Scala作为名称有两个原因: 首先它表示SCAlable LAN这两个词的组合,其次在意大利语中表示楼梯或者梯子,这就暗含着Scala要帮助你不断上升,成为更好的编程语言。
11. Scratch
又是一个MIT开发的面向孩子的编程语言!
孩子们可以通过可视化的形式来操作屏幕上的“精灵”, 从而创造一些故事,小电影,游戏,音乐以及他们梦想创造的任何东西。
这个语言的名字来源于嘻哈音乐DJ,他们会通过手动旋转和刮擦(scratching)唱机上的黑胶唱盘来创造新的声音和音乐。
12. AWK
使用过Unix都会对AWK很熟悉,这是一个脚本语言用来处理文本文件, 1977当它被开发出来的时候主要是想做一个grep 工具的一个更加通用的版本。AWK对Larry Wall设计Perl产生了重要的影响。
和很多编程语言的名称类似,AWK也是一种缩写,但是这个缩写不是表示语言能做什么,相反,它是三个来自于贝尔实验室的发明人的名称: Alfred Aho, Peter Weinberger 和Brian Kernighan。
13. Groovy
2003年,一个叫James的Java程序员想要一个像Python 和Ruby 的脚本语言, 但是要运行在JVM中。
他的解决方案就是设计一个新的语言,能够动态地编译成Java 字节码。用他自己的话来说: “我更期待一种(仅仅)建立在那些精妙的Java代码和JVM之上的动态语言(精妙-Groovy)。”
(完)
码农翻身,用故事讲解技术本质, 更多精彩文章,请移步《码农翻身三年文章精华》