编程语言是如何命名的?16种,非常有趣!
Phil Karlton曾经说过,在计算机科学的世界中,只有两件事:无效缓存还有命名。
也正是由于后者,我们在技术世界中,有着如何多的奇怪名字的编程语言。在本篇文章,我们一起探索一些常见编程语言的由来,来“揭密”为什么选这样的名,还有这些单词的出处。
Perl
Perl被誉为瑞士军刀,功能强大而灵活。它是由美国开发者Larry Wall在1987年创立。它只所以选择叫Pearl,珍珠的单词,是因为它觉得这个简短又让人难忘的单词,有着积极的想像力。当时却已经有一个编程语言叫了这个名字,他就将单词改成了Perl,以开源的方式是Practical Extraction and Reporting Language,也就是实用提取的报表语言缩写。Pearl一词来自古英文语法Perle,意为珠子或有价值的东shgg,而拉丁语perna的意思是“腿”,延伸意义为看起来像羊腿一样的软体动物名字。
Ruby
Ruby是由日本开发者Yukihiro Matz Matsumoto在1990年创建的。受Perl的影响,他也想用宝石的名字来给自己的语言起名,他选择了叫 Ruby, 他认为也是借了Perl的光,是Perl诞生后的宝石:六月的珍珠,七月的红宝石。Ruby单词的来源于古法语的 rubi ,意思是微红的宝石,而拉丁语的 rubeus 意为红色。
Matz可不仅仅是想让Ruby成为Perl的继任者 ,而是一直想替代它。
Python
这是荷兰人Guido van Rossum 于上世纪80年代末设计的一个语言,现在非常流行,Van Rossum 在起名的时候,想要一些“短的、独特的、有点神秘色彩的”东西,他是英国著名戏剧团体Monty Python超级粉丝, 就从中找到了灵感,用Python命名了这门新语言。
其实Monty Python剧团有个著名的戏剧叫做Dead Parrot, 似乎没有消息说他想用这个名字来命名新语言。
Linda
洛夫莱斯(Lovelace)是个跟程序语言有着不解之缘的姓氏。至少有两种程序语言以 Lovelace 女士的名字命名。较为知名的一个是 Ada Language,这种语言 1970 年代产生于美国国防部,最初目的是减少国防部使用的高级编程语言数量。Ada 的命名则是为了纪念埃达 · 洛夫莱斯(Ada Lovelace)女爵。
这位 Lovelace 女爵就是大名鼎鼎的英国诗人拜伦的女儿。和她父亲一样,Ada 在数学方面也有着极高的天赋。她曾花九个月时间翻译意大利数学家路易吉 · 米纳比亚讲述查尔斯 · 巴贝奇计算机分析机的论文,并添加了许多注记来说明用该机器来计算伯努利数的方法。这种方法被认为是世界上第一个计算机程序,Ada 也被认为是世界上第一位女性程序员。
程序员 Ada Lovelace 女士逝世约 126 年后,耶鲁大学的研究生大卫 · 格林特(David Gelernter)听说了这个故事。当时他正考虑如何为自己编写的一种程序语言的命名。格林特先生马上想到了另一位 Lovelace 女士——他最喜欢的情**星琳达 · 洛夫莱斯(Linda Lovelace)。
格林特用 Linda 的名字命名了他的程序语言。以人名命名的程序语言很多,比如 Eiffel Language 得名于埃菲尔铁塔的设计者居斯塔夫 · 埃菲尔(Gustave Eiffel),Hugo Language 则是以维克多 · 雨果(Victor Hugo)的名字命名。
Java
上世纪90年代初, Sun预感到智能家居设备(如互动TV)的浪潮即将来临,他们开发了一个叫Oak的语言,但是Sun的律师确定这个名字的商标已经被注册,他们只好选个新名字,经过一系列的会议,大家想了很多名字,经过律师的“过滤”,只剩下了三个Silk, DNA , Java。
不知道是谁第一个建议使用Java, 但是大家普遍认为灵感来自于Sun的工程师常去一个咖啡店:Pete's Coffee,因为Java是印度尼西亚的爪哇岛,那里盛产咖啡。
Forth
Forth 是Charles Moore在上世纪60年代设计的一个古老语言, 当时他在一个家装公司工作,公司给它提供了一台IBM 1130 微型计算机,还带着一个2250显示卡,公司想让他用电脑来设计地毯!
Moore最初想使用FORTRAN, 但这个语言没法使用2250 显卡。他只好发明了一个新语言,叫做Fourth ,意思是第四代编程语言。可是1130计算机要求文件名不能超过5个字符, 于是他只好把u给踢了出去,变成了Forth。
Lua
Lua 是巴西的一个大学所发明的,它基于两个语言:DEL(Date Entry Language)和SOL(Simple Object Language)。新语言把两个语言的优点都结合了起来。
Sol在葡萄牙语中的意思是太阳, 那新的语言就叫做月亮:Lua。
Smalltalk
Smalltalk是一个面向对象的语言,由施乐帕洛•阿尔托研究中心发明,这门语言给Java,Python,Ruby等很多后来者带来了巨大影响。
Alan Kay的小组发明了Smalltalk,正如他所说,这一名字的选取是针锋相对于“印欧神灵理论”的,该理论中任何系统都会被赋予一个它们永远无法企及的、类似于神灵的名字,例如宙斯(与天神同名)和索尔(与雷神同名)。相反地,他选择了一个超级平淡无奇的名字,Smalltalk,以杜绝招致任何过高的期望值。
Logo
这是MIT开发的一个用于教育的一门语言,作为LISP的一个方言,可以用来教授很多的编程概念,它也影响了很多后来的致力于教育的编程语言,例如Scratch。
Logo编程时有个小海龟,可以根据用户的指令来画图。
Logo来源于logos, 在希腊语中意思是“词”或者“思想”, 这个名称和那些面向数字的编程语言区分开了。
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。
Scala
Scala是个年轻的语言,2001年由Martin Odersky创建,这是一个既支持函数式编程又支持面向对象编程的语言。被编译以后,它成为了Java字节码,在JVM中运行(之前,Scala可以被编译成.NET的中间代码来执行)。
选择Scala作为名称有两个原因:首先它表示SCAlable LAN这两个词的组合,其次在意大利语中表示楼梯或者梯子,这就暗含着Scala要帮助你不断上升,成为更好的编程语言。
Scratch
又是一个MIT开发的面向孩子的编程语言!
孩子们可以通过可视化的形式来操作屏幕上的“精灵”, 从而创造一些故事,小电影,游戏,音乐以及他们梦想创造的任何东西。
这个语言的名字来源于嘻哈音乐DJ,他们会通过手动旋转和刮擦(scratching)唱机上的黑胶唱盘来创造新的声音和音乐。
AWK
使用过Unix都会对AWK很熟悉,这是一个脚本语言用来处理文本文件, 1977当它被开发出来的时候主要是想做一个grep 工具的一个更加通用的版本。AWK对Larry Wall设计Perl产生了重要的影响。
和很多编程语言的名称类似,AWK也是一种缩写,但是这个缩写不是表示语言能做什么,相反,它是三个来自于贝尔实验室的发明人的名称:Alfred Aho, Peter Weinberger 和Brian Kernighan。
Groovy
2003年,一个叫James的Java程序员想要一个像Python 和Ruby 的脚本语言, 但是要运行在JVM中。
他的解决方案就是设计一个新的语言,能够动态地编译成Java 字节码。用他自己的话来说:“我更期待一种(仅仅)建立在那些精妙的Java代码和JVM之上的动态语言(精妙-Groovy)。”
Kotlin
Kotlin是JetBrains在2011年发布的新编程语言。它的名称来自俄罗斯的Kotlin岛。团队希望使用像Java一样的岛屿名称-尽管从技术上来说,Java是根据咖啡而不是岛屿来命名的!Kotlin(俄语为Котлин)曾经是瑞典国的一部分,芬兰人称其为Kettusaari,意为“狐狸岛”,瑞典人称其为Ketlingen,这可能源于德国下层的kettel,意为“大锅”。彼得大帝(Peter Great)和他的沙俄军队在1703年夺取了该岛的控制权后,将其改名为科特林(Kotling),后来简称为科特林(Kotlin)。
Swift
关于苹果公司为什么选择Swift的名称,目前尚无明确答案,但是有人在Quora上讨论过,它不是以Taylor Swift的名字命名的!我们的猜测是苹果的团队想给人以快速的印象。swift一词的意思是“以极快的速度或快速运动”,可以追溯到史前的swipt,意思是“以惊掠的方式运动”。这种燕状的鸟儿从17世纪起就被称为燕子,并被用作编程语言的徽标。
还有一些有趣的例子:
最早有种叫“B语言”的程序语言,B是发明者妻子名字的第一个字母,也许他觉得他的发明和他老婆一样重要。这个故事说明程序员活该没老婆。
后来B语言经过改进,没想到啥好名字,就往后一个字母,叫C语言。这个故事说明这个程序员没老婆。
后来C语言扩展出面向对象功能,叫C++。别问我++是什么,我不是程序员,你才是程序员,你全家都是程序员。
再后来微软又发明了一种类似Java的语言,语法依然是C/C++的风格,叫C#,念“C Sharp”。什么含义?和乐理有关。C就是“C大调”那个C,表示某个音,C#就是比C高一个半音。C#发明者的想象力比上面三位都强多了,所以编程水平比较低,写出来的东西爱蓝屏。
还有一些有趣的例子:
Linux:Linux Is Not UniX,这就有点像GNU了,但是是否属实就有待考证了。
PHP:原名Personal Home Page,刚开始是Rasmus Lerdorf为了维护个人网页而开发的,后来功能强大了,改名为PHP: Hypertext Preprocessor,相应地含义也变成了超文本预处理器。
RPM:RPM Package Manager,原名是Red Hat Package Manager,一种用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中。它生成具有.RPM扩展名的文件。与Dpkg类似。
Wine:Wine Is Not an Emulator,是一个能够在多种 POSIX-compliant 操作系统(诸如 Linux,Mac OSX 及 BSD 等)上运行 Windows 应用的兼容层。关于Wine的真正含义,有人对“Wine Is Not an Emulator”的说法表示质疑,认为”非模拟器“的解释不过是一种娱乐性的说法,Wine的真实意思应当是是Windows Environment的缩写,即WinE。
PNG:PNG’s Not GIF,一种图像文件存储格式,其设计目的是试图替代GIF和TIFF文件格式,同时增加一些GIF文件格式所不具备的特性。PNG的名称来源于“可移植网络图形格式(Portable Network Graphic Format,PNG)”,
EMACS — EMACS Makes A Computer Slow,其自我调侃的意味就太明显了,大概也是对自己集成的强大的功能洋洋得意吧。
是不是挺有趣,尽管有的语言名字起的有点奇异,但听起来确定很酷:D
编译:洛逸
来源:21CTO社区
相关阅读: