《编程语言伪简史》

时间:2020-07-14 16:18:01   收藏:0   阅读:118


原文出处: A Brief, Incomplete, and Mostly Wrong History of Programming Languages   译文出处: Mort Yao

警告:

1801 - Joseph Marie Jacquard 用打孔卡为一台织布机编写指令,在挂毯上织出了 “hello, world” 字样。当时的 reddit 网友对这项工作的反响并不热烈,因为它既缺少尾递归调用,又不支持并发,而且甚至都没有注意在拼写时恰当地区分大小写。

1842 - Ada Lovelace 写了世界上第一个程序。她的努力只遇到了一点点小小的麻烦,那就是:实际上并没有任何计算机能够用来运行她的程序。后来的企业架构师们重新吸收了她的这个技能,用来学习如何更好地使用 UML 进行编程。

1936 - Alan Turing 发明了世间一切程序语言的最终形态,但很快他就被英国军情六处 “请” 去当 007 了,以至于他根本来不及为这些语言申请专利。

1936 - Alonzo Church 同时也发明了世间一切程序语言的最终形态,甚至做得更好。但他的λ演算被绝大部分人忽视了,因为它与 C 语言 “不够像”。尽管存在着这样的批评,但事实上,C 在当时还没有被发明出来。

1940 年代 - 一些直接采用布线和开关来进行程序控制的 “计算机” 出现了。工程师们当时这么做,据说是为了避开 “用空格还是用制表符缩进” 这样的论战。

 

技术图片

 

1957 - John Backus 和 IBM 发明了 FORTRAN 语言。关于 IBM 或 FORTRAN 并没有什么特别好笑的地方。除了,写 FORTRAN 程序的时候不系蓝领带将被编译器视作是一个 syntax error。

1958 - John McCarthy 和 Paul Graham 发明了 LISP。由于冷战期间的战略括号资源储备所造成的巨大成本,LISP 从未流行过。尽管欠缺足够的流行度,LISP(现在叫做 “Lisp”,有时叫 “Arc”)仍然被视作一门有影响力的语言,在关键的算法思想诸如递归(recursion)和提升逼格 (condescension)上尤为典范。

(原文的脚注:

  1. 幸运的是对于计算机科学来说,花括号和尖括号的供应尚充足。

  2. “关键的算法思想” 这一说法来自于 Verity Stob 的 Catch as catch can。)

1959 - 在输掉了和 L. Ron Hubbard 之间的一场打赌之后,Grace Hopper 和其他几个抖 S 发明了所谓的 “面向 Boilerplate 的全大写化语言(Capitalization Of Boilerplate Oriented Language,COBOL)”。多年以后,由于一些被误导的、性别歧视主义者对 Adm. Hopper 关于 COBOL 的工作的报复,在 Ruby 技术会议上不时会看到一些厌女主义乃至仇视女性的材料出现。

1964 - John Kemeny 和 Thomas Kurtz 创造了 BASIC,一个为非计算机科学家设计的非结构化的程序语言。

1965 - Kemeny 和 Kurtz 两人goto到了 1964。

1970 - Guy Steele 和 Gerald Sussman 创造了 Scheme。他们的工作导致了一系列以《Lambda 之究极(Lambda the Ultimate)……》为标题开头的论文发表,并在《Lambda 之究极厨房神器》这一篇中达到了最高潮。以这篇论文为基础,开始了一个长年累月的、收 视率究极失败的晚间电视购物节目。Lambda 们因为其概念相对难以理解而被大众所忽视,直到未来的某一天,Java 语言终于让它们变得有名了起来。通过 不包含它们这件事情。

1970 - Niklaus Wirth 创造了 Pascal,一个过程式的语言。很快就有人开始声讨 Pascal,因为它使用了类似 “x := x + y” 这样的语法,而不是更为人熟知的类 C 语法 “x = x + y”。尽管存在着这样的批评,而事实上当时 C 还没有被发明出来。

1972 - Dennis Ritchie 发明了一把射击时能同时向前和向后两个方向发射子弹的绝世好枪。但他对此发明造成的致死和终身残疾数量感到还不够满意,所以他又发明了 C 语言和 Unix。

1972 - Alain Colmerauer 设计了逻辑编程语言 Prolog。他的目标是创造一个具有两岁小孩智商的程序语言。为了证明他成功达到了这个目标,他展示了一个 Prolog 程序,它对于每条查询都会机智地给出相同的回答:“No”。

Ask me anything!
?-  

1973 - Robin Milner 创造了 ML,一个建立在 M&M 类型理论基础上的语言。由 ML 衍生而来的 SML 加上了一套形式语义的规范。当被要求给这个形式语义本身 书写一套形式语义时,Milner 的脑子爆掉了。其他 ML 家族的著名语言还包括 OCaml,F#,和,Visual Basic。

 

技术图片

 

1980 - Alan Kay 创造了 Smalltalk 并发明了 “面向对象” 这个词。当被问到它的含义时,他回答道:“Smalltalk 程序本身就是对象。”当被问到对象是由 什么组成时,他回答到:“对象。”当再一次被问到这个问题时,他说“看,它从里到外都是对象。直到你抽出一只乌龟。”

1983 - 为了纪念伟大的先辈程序员 Ada Lovelace 那能够写出永远也无法被执行的代码的彪悍技能,Jean Ichbiah 和美国国防部创造了 Ada 语言。尽管缺乏证据显示有任何重要的 Ada 程序曾经被完成过,历史学家仍然确信 Ada 是个成功的公益项目,它让数 以千计的国防承包商免于沦落为与黑帮为伍。

1983 - Bjarne Stroustrup 把他所听说过的一切都试图嫁接到 C 上,创造出了 C++。最后得到的语言是如此地复杂,以至于程序必须被送到未来去让 “天网” 人工智能 进行编译。编译时间难以容忍。天网开展这项服务的动机仍然不为人知,但来自未来的发言人说道:“没什么好担心的,宝贝。”带着一口奥地利腔的机械口音。有 一些来自坊间的推测,所谓的天网只不过是个自命不凡的缓冲区溢出而已。

1986 - Brad Cox 和 Tom Love 创造了 Objective-C,宣称 “该语言完美地结合了 C 的内存安全性与 Smalltalk 的神奇效率”。现在的历史学家怀疑这两人其实是诵读障碍症患者。

1987 - Larry Wall 在电脑前打了个盹,Larry Wall 的脑门子压到了键盘上。醒来之后,Larry Wall 深信 ,在 Larry Wall 的显示器上出现的神秘字符串并非是随机的,那是某种编程语言之程序样例的神谕。那必是上帝要他的先知,Larry Wall,去设计的。Perl 语言就此诞生了。

1990 - 一个由 Simon Peyton-Jones、Paul Hudak、Philip Wadler、Ashton Kutcher 和善待动物组织(PETA)组成的委员会创造了 Haskell,一种纯函数式的、非严求值的语言。Haskell 由于使用了 Monad 这种 较费解的概念来控制副作用而遭到了一些批评意见。Wadler 试图平息这些质疑,他解释说:“一个单子(Monad)说白了不过就是自函子范畴上的一个幺 半群而已,这有什么难以理解的?”

 

技术图片

 

 

技术图片

 

1991 - 荷兰程序员 Guido van Rossum 为了一次神秘的手术而进行了一次阿根廷之旅。回来后他带着一个巨大的颅疤,发明了 Python,而被数以军团计的追随者们加冕为 “终生大独裁 者”,并向全世界宣布 “要办到一件事情,只可有唯一的一种方法!”。整个波兰陷入了恐慌。

1995 - 在家门口附近的一个意大利饭馆用餐时,Rasmus Lerdorf 意识到他吃的那盘意面正好是一个用来理解 WWW 万维网的极好模型,而所有的 Web 应用都应该仿照它们的媒介那样去做。在他的餐巾的背后,他 设计出了著名的 “可编程超链接 Pasta(Programmable Hyperlinked Pasta,PHP)” 语言。PHP 的文档至今仍然保留在那片餐巾上。

1995 - 松本 “Mad Matz” 行弘创造出了 Ruby 语言,用来辟谣一些意味不明的、有关澳洲将会变成一片由莫霍克族战士和 Tina Turner 统治的荒漠的末世预言。该语言后来被它的真正发明者 David Heinemeier Hansson 重新命名为 Ruby on Rails。(关于某个叫松本行弘的人发明了一种叫做 Ruby 的语言这件事情从未发生过,最好在这篇文章的下一个版本中删掉。 - DHH 表示)

 

技术图片

 

 

技术图片

 

1995 - Brendan Eich 读完了历史上所有在程序语言设计中曾经出现过的错误,自己又发明了一些更多的错误,然后用它们创造出了 LiveScript。之后,为了紧跟 Java 语言的时髦潮流,它被重新命名为 JavaScript。再然后,为了追随一种皮肤病的时髦潮流,这语言又被命名为 ECMAScript。

1996 - James Gosling 发明了 Java。Java 是一个相对繁冗的、带垃圾收集的、基于类的、静态类型的、单分派的面向对象语言,拥有单实现继承和多接口继承。Sun 不遗余力地宣传着 Java 的独一无二不同凡响之处。

2001 - Anders Hejlsberg 发明了 C#。C# 是一个相对繁冗的、带垃圾收集的、基于类的、静态类型的、单分派的面向对象语言,拥有单实现继承和多接口继承。微软不遗余力地宣传着 C# 的独一无二不同凡响之处。

2003 - 一个叫 Martin Odersky 的醉汉看见了好时瑞森花生酱杯的广告,展示了某个人的花生酱倒入另一个人的巧克力的场景,他忽然有了个点子。他创造了 Scala,一种结合 了面向对象和函数式编程的语言。这同时激怒了两个阵营的忠实信徒,他们立刻宣布要发动圣战烧死异教徒。

 

技术图片

 

(原文请戳:http://james-iry.blogspot.co.at/2009/05/brief-incomplete-and-mostly-wrong.html

 

技术图片

 

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!