写点什么

Python 为什么叫 Python,Java 又如何而来?

2020 年 11 月 27 日

Python为什么叫Python,Java又如何而来?

你可能听过这样一种说法:在计算机科学领域,只有两件困难的事情,其中一件是给事物命名。有些编程语言的名字很有意义,比如谷歌(Google)将它的编程语言命名为 Go(lang),而其他的名字——比如 Python 和 Java——为什么要这么命名就不那么明显了。


在这篇文章里,让我们来一起探索一下最具标志性的编程语言的历史,以及它们的名字是如何得来的。


Python


Python 起初是 Guido van Rossum 的一个“业余”编程项目,目的是让他在圣诞节期间有事可做。van Rossum 希望这门语言有一个简短、独特且神秘的名字。如果你看到 Python 的“两条蛇”标志,可能会认为 Python 是以一种巨大的蟒蛇来命名的(它能把整条鳄鱼吞下)。


实际上,Guido 是以 70 年代英国喜剧团体 Monty Python’s Flying Circus 的名字给它命名的。原来他是这个喜剧团体的超级粉丝,刚好那个时候他在看这个团体的剧本。



Python 的“两条蛇”标志与它的名字的起源没有任何关系


Java


Java 是 20 世纪 90 年代初 Sun 微系统公司作为 Green 项目的一部分而开发的。为这个项目开发一门新语言并不是他们的重点:开发 Java 是因为他们需要一种可以独立于处理器的语言,能够提供 C++的大部分功能,同时更容易使用。成立这个绝密的 Green 团队是为了打造超越个人电脑的“下一波计算浪潮”,他们认为个人电脑应该是具有互动性的数字控制的消费电子产品(也就是“智能设备”的前身)。



Green 团队的杰作:一个无线、全彩、触摸屏控制器,名字叫作 Star7


Java 最初以开发者窗户外面的一棵橡树来命名,叫作 Oak。但是,Sun 的律师说 Oak 已经被注册为商标,于是 Green 团队召开了一次头脑风暴会议,并想出了 Java 这个名字。他们希望这个名字可以反映这门语言的本质:“活力、革命性、活泼和有趣”。经过这场“持续疯狂”的头脑风暴,Java 显然是一个完美的选择。


虽然 Star7 有点超前于时代,从未真正起飞,但它的编程语言却成功了——剩下的就是我们已经知道的历史了。


JavaScript


JavaScript 是 Brendan Eich 于 1995 年在网景公司 (Navigator 背后的公司,当时最流行的 Web 浏览器)开发出来的。那时,网页完全是静态的,但网景公司设想的是今天这种交互式的动态网页。由于来自微软 IE 浏览器的压力,他们聘请 Eich 将脚本语言集成到浏览器中。


网景公司希望创造一种简单易用的语言。借着 Java 蓬勃发展的势头,他们希望这门语言成为“Java 的脚本伴侣”,就像 Visual Basic 是 C/C++的伴侣一样。Eich 强调开发速度和易用性,继承了 Java 的大部分语法,只用了 10 天就写出了 JavaScript 的第一个版本,名字叫作 Mocha。


“我的任务是让它看起来像Java,但又不能太臃肿……它应该是一种小弟语言,对吧?Java的小伙伴”。——Brendan Eich


当这门语言第一次被集成到 Netscape 中时,它被叫作 LiveScript。不久之后,网景公司就全身心投入到“Java 伴侣”的开发当中。他们与 Sun 公司合作,将这门语言重命名为 JavaScript,并与 Java 一起宣传 JavaScript:JavaScript 是一种脚本语言,用于在浏览器中执行小型的客户端任务,而 Java 则是一种更大、更专业的工具,用于开发丰富的 Web 组件。事实上,JavaScript 这个名字的起源是网景公司试图与微软抗衡的一种营销策略。


C 家族语言(C\C++\Objective-C\C#)


世界上第一门编程语言是 Ada,这要归功于 Ada Lovelace。不久之后就有了 B 语言,C 语言的名字就是从 B 语言衍生而来的。C 语言是由贝尔实验室的 Dennis Ritchie 开发的,被很多人认为是第一种高级编程语言。


C 语言有很多扩展,包括 C++、Objective-C 和 C#。C++和 Objective-C 的名字不言自明,而 C#则不那么明显。C#的部分灵感来自音乐:一个尖锐的(#)音符意思是它应该在音调上提升半个音高。更有趣的是,#包含了 4 个+符号,2x2 的正方形,完美地诠释了 C#是 C++的“增量”!


Swift


苹果公司从 2010 年开始开发 Swift,并在四年后首次发布。因为 Objective-C 的影响力巨大,苹果公司便将 Swift 标榜为一种快速、易用和安全的设计。一开始,Swift 的名字叫“Shiny”,就好像你正在构建一个“闪亮的东西”。实际上,它还用.shiny 做过文件扩展名。


他们最终选用 Swift 这个名字来反映它的速度——在性能和开发速度方面。Swift 的标志是一只与之同名的鸟:Swift 是一种以速度和空中驻留能力著称的鸟类。



Swift 的标志是一只同名的飞鸟


Haskell


Haskell 是以逻辑学家 Haskell Brooks Curry 的名字命名的,他在组合逻辑方面的工作广为人知。事实上,有几种编程语言分别是以他全名当中的各个部分命名的:Haskell、Brook 和 Curry!柯里化(Currying)的概念也是以他的名字命名的。


Haskell 的一个很少被讨论的地方是它的标志。你可能会注意到 Haskell 标志当中有个λ符号,这是对λ演算(lambda calculus)的一种赞颂。如果你更仔细看,会发现λ夹在“>”和“=”之间。这个来自 Monads 绑定操作符>>=。Haskell 的标志是一个交织了λ的绑定操作符。



Haskell 的标志是绑定操作符和 lambda 符号的组合


希望你喜欢了解编程语言的历史。我在研究这个故事的过程中获得了很多乐趣,因为我认为这些故事的起源非常有意思。


原文链接:


https://medium.com/better-programming/how-your-favorite-programming-languages-got-their-names-9916fe997f78


2020 年 11 月 27 日 12:35678

评论

发布
暂无评论
发现更多内容

十年Java开发传奇经历:我是如何从外包逆袭成为大厂架构师的

Java成神之路

Java 程序员 面试 微服务 多线程

2020-08-29-第十二周作业

路易斯李李李

XSKY对象存储获全球备份领域领导者Commvault官方认证

XSKY融合存储

深圳泰利能源有限公司涉嫌传销 共计2.7亿元

CECBC区块链专委会

区块链 基金

读懂k8s 容器编排控制器 Deployment

Garfield

k8s pod k8s入门

人的转型才是关键 数字化时代你具备数字领导力么

CECBC区块链专委会

区块链 数字化时代

数字货币交易平台源码,数字货币交易所开发核心功能

13530558032

关于显性知识和隐性知识

Tanmer

知识管理 知识产权

融云Geek Online 2020 编程挑战赛重磅来袭

InfoQ_967a83c6d0d7

当有人把GoF的23个设计模式嚼碎给你——你才会发现有多简单

周老师

Java 编程 程序员 架构 面试

案例分享丨红外自动感应门设计与实现详解

华为云开发者社区

物联网 传感器 感应探测器 SMT32处理器 感应门

从 Node.js(JavaScript) 到 Golang,我的开发体验

Garfield

go node.js golang新手

某程序员毕业进UC,被阿里收购!跳去优酷土豆,又被阿里收购!再跳去饿了么,还被阿里收购!难道阿里想收购的是他?

程序员生活志

职场 阿里

区块链支付新模式开发,USDT支付系统搭建

13530558032

3种双集群系统方案设计模式详解

华为云开发者社区

数据库 数据仓库 数据 双集群系统 双ETL模式

你问我答:现有的应用有必要做微服务改造吗?

博云技术社区

DevOps 微服务 容器云 云平台 博云

技术分享:即构互动白板音视频同步、多端有序协作技术实践

ZEGO即构

音视频 在线教育 SVG

大数据应用场景

dongge

架构设计开学第一天

escray

学习 从零开始学架构 架构师预科班

LeetCode题解:155. 最小栈,单个栈存储入栈元素与最小值之差,JavaScript,详细注释

Lee Chen

LeetCode 前端进阶训练营

Spring Bean处理器

TinyKing

Spring Framework

腾讯技术专家图解29种设计模式中常见问题类级与方法级解决方案

周老师

Java 编程 程序员 架构 面试

凡泰极客与Rancher达成深度战略合作,加速企业构建私有化小程序生态

fino星君

kubernetes node affinity 写法

Geek_f24c45

Kubernetes

华为云FusionInsight大数据技术普惠创新,释放千行百业数据价值

FI洞见

大数据 FusionInsight 华为云

区块链助力军事人力资源配置

CECBC区块链专委会

区块链 军事

云算力挖矿平台APP,算力挖矿建设开发

13530558032

【Spring Boot系列】之多种依赖集成方式

TinyKing

FlinkX 如何读取和写入 Clickhouse?

Apache Flink

flink

SpreadJS 纯前端表格控件应用案例:雨诺订单管理系统(雨诺OMS)

Geek_Willie

数字资产钱包开发,数字加密货币app搭建

13530558032

InfoQ 极客传媒开发者生态共创计划线上发布会

InfoQ 极客传媒开发者生态共创计划线上发布会

Python为什么叫Python,Java又如何而来?-InfoQ