关于编程语言历史的轶事之旅

关于编程语言历史的轶事之旅

原文:https://medium.com/hackernoon/an-anecdotic-tour-on-the-history-of-programming-languages-928bc6e9a9a8

免责声明:以下 2514 个单词可能不完全准确。

曾几何时,在 1972 年,也就是最后一次载人登月的那一年,一种编程语言诞生了:

c 语言是一种通用的过程语言,由两位 Unix 传奇人物之一的 Dennis Ritchie 在贝尔实验室(截至 2016 年,贝尔实验室是诺基亚的子公司)设计。

它之所以被命名为 C,是因为它是以前的编程语言 B 的改进,B 是简化的 BCPL(因此得名)。

在他们写了 C 之后,他们决定重写 Unix。这一冒险是稳步和部分完成的。

在 1990 年代末,以及接下来的 80 年代,C 语言版本被广泛应用于各种计算机,包括 IBM PC。这导致 C 语言变得无处不在,成为系统的首选语言。

许多人崇拜 c。他们创造了宗教,邪教,教派。精神控制技术是在旧杂志上发现的,然后,它发生了。

在美索不达米亚发现了一个古老的坟墓,它的墙壁覆盖着 C 代码。怎么可能呢?写于 1972 年的计算机语言是古代宗教的一部分?

只是开玩笑。

但实际上,很多人喜欢 C,比如 Linux 内核的创造者 Linus Torvalds。其他人没那么喜欢,可能是觉得少了点什么。C++的创始人比雅尼·斯特劳斯特鲁普就是如此。

Bjarne 对面向对象编程很感兴趣,所以在 1982 年一个阳光明媚的日子,他想:

也许我应该创造一种类似 C 语言的语言,但是要有类。我将把它命名为“带类的 C”。

一年后:

也许这不是一个好名字。我把它改名为 C++。是啊。那更好。

Linus 对 C++一点也不感兴趣。准确地说,他对此很反感。正如他所说,主要是因为缺乏可移植性和效率低下的抽象编程模型。

五年后,也就是 1987 年,拉里·沃尔开始研究 Perl,并在年底完成了 1.0 版本。不幸的是,Larry 和所有程序员一样,对编写代码比对编写文档更感兴趣,所以花了 4 年的时间才编写了 Camel Book,即经典的 Perl 书籍,并广泛采用了这种语言。

同年,在波特兰或俄勒冈州,函数式程序设计语言和计算机体系结构(FPCA '87)会议召开了。那是一次学术会议。其结果之一是参与者决定他们真的喜欢 Miranda (一种专有的懒惰函数式语言)及其后代,他们应该更好地创建一个委员会来定义所有这些语言的开放标准。

他们花了三年时间,1990 年 Haskell 语言和图书馆委员会发布了 1.0 版本。

由于这段历史,Haskell 被认为是一种学术语言,在业界并没有被广泛采用。然而,世界上有很多公司都在使用它。

一年后,也就是 1991 年,吉多·范·罗苏姆发布了 Python 的第一个版本。🎉。他非常喜欢巨蟒小组,所以他想用他们一半的名字。毕竟也是蛇。

圭多不仅仅想创造一种语言。他有一个愿景和一个咒语。他们称之为 Python 的禅,是这种语言的核心哲学。它包括诸如美、简单和复杂等概念之间的抽象比较,它受到所有 Pythoneers 的崇拜。

尽管如此,还是有很多人喜欢上了 Python。它也是非常多范例的。它是命令式的,面向对象的,具有多种类似 Lisp 的功能特性。它是第一种将用户的直观性放在首位的语言,而不是编译器的底层机制。

四年后的 1995 年,美国宇航局的伽利略探测器进入木星大气层,首次报道了橡树猝死事件。多枝疫霉,SOD 背后的卵菌植物病原体,是加州和俄勒冈州许多橡树种群死亡的原因。人们还认为,这种有机体是今年大量成功的编程语言产生的原因,无论是在加利福尼亚还是在其他地区。

聚焦 Java、JavaScript、PHP 和 Ruby。

Yukihiro Matsumoto 主要写 Perl,他对此很高兴。他对 Python 也很感兴趣,但也有一些抱怨:

在我看来,Python 不是真正的面向对象语言。我会说这是个冒名顶替者。OOP 特性似乎是某种附加的东西。好像他们说“是啊,把那个也扔进去”。

很明显,Guido 想要支持许多范例,所以面向对象的概念在语言设计过程中并不是最优先考虑的。

但是 Matz 真的相信 OOP 是未来,而不是特性之一。就这样,Ruby 诞生了,它的名字当然是向 Perl 致敬。

在 Ruby 中,一切都是函数调用,甚至是使用+-的算术运算。因此,函数调用中的括号在大多数情况下是可选的。

上述决定使软件社区两极分化:

我的天啊。这太美了!我现在要用 Ruby 写所有的东西!

我的天啊。这太疯狂了。人们怎么会想到这种暴行?

5.times { do_this }这样的特征导致了进一步的两极分化,甚至在英国也是如此:

红宝石爱好者:哦,我的上帝!这太有表现力了!甚至比 Python 更有表现力!我喜欢!

Ruby 怀疑论者:哦,我的上帝!这太疯狂了。哦,太恐怖了…

显然,除了成功之外,1995 年的编程语言也很有争议。

1995 年的一个晴朗的日子,拉斯马斯·勒德尔夫想:

为什么不把我的主页上所有用 C 写的 CGI 都提取出来放在别的地方呢?我将添加 web 表单集成和数据库库,我将称之为个人主页/表单解释器,或简称 PHP/FI!

事后看来,这是网络上最有争议的观点之一。PHP 在动态网站的开发速度方面是独一无二的,这使得许多人选择了它,尽管 Rasmus 不喜欢他的快速破解成为最常用的编程语言之一。它仍然缺乏好的设计,并且它的独立开发导致了语言内部的各种不一致。不可否认的是,越差越好

这场突如其来的橡树病甚至影响到了像太阳微系统公司这样的大公司。他们不知何故有了这样的想法,他们应该创造一种新的一次编写随处运行的编程语言。他们将通过创建一个适用于所有平台的虚拟机,并使用一个通用的 API 来实现这一点。它的名字:橡树;以其创造者詹姆斯·高斯林办公室外的一棵橡树命名。这当然验证了突如其来的橡树病是 1995 年四种语言产生和成功的原因这一理论。

Oak 后来改名为 Green 最后是 Java

Java 遵循经典的继承面向对象范例。按照 James 的说法,这毕竟不是一个好主意,如果让他重新创建 Java,他会把继承层次的想法扔到一棵树下(可能是一棵橡树),以支持对象委托。

事实证明,这很有趣,因为实现 Java 一次编写随处运行梦想的语言是 JavaScript,它具有对象委托。

这样,我们就达到了 1995 年清单上的最后一项。JavaScript。

这个世界上有很多编程语言,它们在语言设计方面的分布是高斯。大多数有一个好的设计;有些设计有好有坏;很少有人有杰出的设计或者恐怖的设计。如果让你从这些类别中选择一种可以在最多计算机上运行的语言,你会选择哪一种?事实证明,我们确实超越了三西格马,只是没有达到积极的效果。传播是渐进的,很少有人注意到。

1995 年一个寒冷的下午,在加州山景城的网景通信公司总部,公司雇佣了布伦丹·艾希在他们的浏览器网景导航器中嵌入 Scheme。它只是 Scheme,一种 Lisp 方言;什么会出错?然而,尽管他是一个快速的开发人员,他还是不能开始工作,直到事情,嗯…一切都改变了。

布兰登花了十天时间创造了一种叫做摩卡的语言原型。你可能会想到的另一个与咖啡相关的词?他们有可能是亲戚吗?事实上,Netscape 与 Sun Microsystems 达成协议,加入一种轻量级的类似 Java 的脚本语言来与微软竞争。摩卡似乎是一个合适的名字。这是一个美丽的名字,但是它被认为是一个错过的宣传 Java 的机会;因此,在与 LiveScript短暂合作之后,JavaScript 就诞生了。

Brendan 对 Mocha 有一个愿景,JavaScript 受到各种不同语言范式的影响。像第一类函数、原型继承和事件驱动这样的特性使得 JavaScript 成为一门有趣的语言。此外,JavaScript 由于其怪癖和设计缺陷,是一种很难掌握的语言,因为它具有简单(但难以捉摸)的特性。有人说这种永恒的挑战激励着他们;其他人在欣赏自己没有受虐狂的同时远离。

从 1995 年到 2010 年,没有发生过什么。

然后在 2000 年,微软决定创建自己的 Java。结果是 C#。

Java 的创造者詹姆斯·高斯林注意到了这一点,并毫不犹豫地说出了自己的想法:

C#有点像删除了可靠性、生产率和安全性的 Java。

幸运的是,随着后续版本的出现和各种特性的引入,C#已经脱离了 Java。它也是美国的主要语言。NET 平台,微软的 web 平台。

2004 年来了,马丁·奥德斯基决心把他的梦想变成幸福的现实,这个决心正在实现。他的梦想是融合旧的函数式编程哲学和新的面向对象哲学。结果是:Scala,一种封装了面向对象内部函数范式的编程语言。Scala 有像 Java 一样的强类型系统,虽然非常简洁,但不像 Java。它还有许多其他的联系,比如 Scala 可以被编译成 JVM 字节码,而且可以预见,可以直接从 Scala 代码中调用 Java 库。

三年后,在 2007 年,Rich Hickey,像 Martin 一样喜欢 JVM 和功能性的东西,发表了他两年来关于创建现代 Lisp 的工作。Clojure 在过去的几年里获得了一批追随者,有很多公司在生产 web 环境中使用它。除了 JVM 的实现,还有 ClojureScript,它可以编译成 JavaScript。这意味着您可以为前端编写 Clojure。🎊。

然后,在 2009 年,谷歌发生了一件非常重要的事情。Ken Thompson(第二个 Unix 传奇)、Rob Pike 和另一个没有维基百科文章的人 Robert Griesemer 创造了 Go。这些先生们也是 C++憎恨俱乐部的成员,因为 C++的复杂性是主要的(!)动机为主动。据推测,当时在谷歌的座谈会是:

肯:“天哪,我就是讨厌 C++!” 罗伯:“我知道。罗伯特:“嘿,让我们创造自己的超级简单的语言。它不会有课。或者析构函数。或者——" 肯:“或者仿制药!”罗布:“或者例外!” 罗伯特:“还是运算符重载!” 肯:“还是继承。”罗布:“或者马洛克。” 罗伯特:“或者当。”罗布:“一会儿也不行吗?Neat :wink:" Ken:"或者变量!" (三人都一脸不解) 肯继续:“好吧,我们来点变数。但是我们会有类型推理。”

Go 受到了广泛的批评,认为它抛弃了几十年的编程经验,并且没有包括上述功能和许多其他功能。然而,这个决定有一个渐进的学习曲线的效果,同时过度保护你不犯常见的错误。

就并发性而言,Go 中有两个原语,即 goroutineschannels ,它们实现了所谓的通信顺序进程,这个想法最早是由东尼·霍尔(发明 quicksort 和其他重要 CS 理论的人)描述的。这被认为是围棋的强项之一。

一年后,也就是 2010 年,Mozilla 宣布赞助格雷顿·霍尔的一个个人项目。取名为的锈郎,于 2006 年悄然诞生,仅用了 9 年时间,于 2015 年达到 1.0。从那以后,它一直是最受欢迎的编程语言之一。

令人着迷的是,这种语言的设计中倾注了多少思想,尤其是它的类型系统的设计,它的独特功能。Rust 的设计是内存安全的。它通过自有变量借用指针变量生命周期管理等概念来实现这一点。此外,它不支持经典继承,但它有一个受 Haskell 启发的特征系统

然后在 2011 年,令人兴奋的事情发生了。鲁比和二郎有了后代。它叫做仙丹,很多人对它评价很高。

不过,在谈论长生不老药之前,让我们先对它鲜为人知的创造者做一个背景调查。

Erlang 是 1986 年在爱立信创立的一种语言,直到 1998 年仍是专有语言。二郎不仅仅是一种语言,它还是一种邪教。相信二郎的人有一个特定的世界观,其中包括一些神秘的法令,比如一切都是一个过程错误处理是非本地的。三大发明家之一的乔·阿姆斯特朗曾说过:

如果 Java 是“写一次,在任何地方运行”,那么 Erlang 就是“写一次,永远运行”。

考虑到他在 2013 年说过,如果 Java 不是“无处不在”,我们能让他为 Erlang 负责吗?😏

Erlang 在大规模、分布式、高可用性 web 服务方面有着良好的记录。此外,它还具有容错、热代码交换和模式匹配等出色的特性。José Valim 决定将这些激动人心的功能与其他一些更友好的功能以及一些 Ruby 的想法结合起来。结果是长生不老药。

酏剂与 Erlang 的 VMBEAM完全兼容。它还提供了很好的工具,这是 Erlang 所没有的,并且它已经成功地赢得了很多人,主要是 Ruby 社区的人。它的旗舰网络框架是凤凰,已经获得了好评。

LLVM 背后的传奇人物克里斯·拉特纳在苹果公司时发明并领导了 Swift 。它始于 2010 年,但直到 2014 年我们才了解到它。Swift 既受到了 Rust 的影响,也受到了它的影响。它是一种编译语言,具有强大的静态类型系统,同时它坚持面向协议的编程,这种思想也被称为接口

内存管理使用自动引用计数 (ARC)来完成,包括编译时内存解除分配决策,这与 Rust 类似。Swift 宣布成为开源软件一年后,开发者可以将其扩展到苹果界面之外。它在网络等其他领域的使用正在增加,其他公司的采用也在增加。

编程语言的历史很有趣。它敦促你对未来做出预测。我敢打赌,Swift、Rust 和 Go 将赢得很多领域,其中最大的一个是 C 和 C++。

希望 45 年后,C 会通过权杖,让我们向自己证明我们现在更了解软件。

黑客中午是黑客如何开始他们的下午。我们是 @AMI 家庭的一员。我们现在接受投稿,并乐意讨论广告&赞助机会。

如果你喜欢这个故事,我们推荐你阅读我们的最新科技故事趋势科技故事。直到下一次,不要把世界的现实想当然!


本站为非盈利网站,作品由网友提供上传,如无意中有侵犯您的版权,请联系删除