找回密码
 骑士注册

QQ登录

微博登录

搜索
❏ 站外平台:

Linux中国开源社区 观点 查看内容

趣文:编程语言伪简史

2013-06-09 12:12    分享: 4    


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

  • Smalltalk的设计从很大程度上受到了Logo的影响。

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

  • Ada曾经是美国国防部指定的嵌入式计算机系统唯一开发语言,在其研发上耗资巨大。(国防承包商们于是不用靠贩卖军火给黑帮来维持生计了)
  • 虽然有充分的证据显示Ada的整型范围溢出检查失败导致弄坏了欧空局的一枚Ariane 5运载火箭,不过美国国防部发言人对此表示:关我P事。

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

  • 这篇文章写出来的时候,一个被称作C++0x的新标准还遥遥无期。许多编译器对它的支持似乎永远停留在“partial”阶段。
  • 请自行脑补终结者里的T-800……
  • 无论什么都改变不了C/C++是个经典的“缓冲区溢出语言”的事实。

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

  • “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)说白了不过就是自函子范畴上的一个幺半群而已,这有什么难以理解的?”

  • 素食主义鼓吹者:为了获取食物而不必要地杀死动物是邪恶的;“纯函数式编程”鼓吹者:为了编程而引入不必要的副作用是邪恶的。
  • (科普帖)自函子说穿了就是把一个范畴映射到自身的函子,自函子范畴说穿了就是从小范畴映射到自身的函子所构成的以自函子为对象以自然变换为态射的范畴,幺半群说穿了就是只有单个对象的范畴,给定了一个幺半群则可构造出一个仅有单个对象的小范畴使其态射由幺半群的元素给出而合成由幺半群的运算给出,而单子说穿了就是自函子范畴上的这样一个幺半群。(这都不理解么亲连这种最基本的概念都不理解还学什么编程!)

  • 又:“A monad is a monoid in the category of endofunctors(一个单子是自函子范畴上的一个幺半群)”这句话的原出处据信是Mac Lane的这本书:


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

  • BDFL(Benevolent Dictator for Life):开源社区一种流行的说法,“仁慈的”终生大独裁者。这个说法最早指的就是Guido van Rossum。
  • 希特勒在提出建立“纯正的雅利安人国家”“统一的大德意志帝国”并实现了德奥合并之后,翌年便入侵了波兰,引发了第二次世界大战。“我一个人征服了整个欧洲!”(感觉好棒好棒的)

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

  • PHP最显著的特点就是:代码是可以直接嵌在HTML文档中的。

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

  • 最早关于Ruby的国际会议不是RubyConf,而是每年在澳大利亚举办的OSDConf。
  • 这里应该是在吐槽Ruby的杀手级应用Ruby on Rails实在太有名了,以至于超越了原来的Ruby语言本身。
  • Matz并没有为“Ruby”这个名字注册商标——本着开源的黑客精神。
  • 而DHH(RoR的作者)却把“Ruby on Rails”这个(包含了“Ruby”字样的)名称注册成了商标,并且阻止别人未经授权使用“Rails”这个名字。
  • (虽然抢注商标对开源来说未必是一件坏事情——Python基金会今年在欧洲还卷入了一场商标之争了不是)
  • 假如你从来没听说过的话,莫霍克族战士据说是像这个样子的:


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

  • WAT!https://www.destroyallsoftware.com/talks/wat
  • JavaScript和Java语言没有任何实质上的联系;就像ECMAScript和Eczema(湿疹)没有任何实质上的联系一样。(Brendan Eich曾表示:“ECMAScript was always an unwanted trade name that sounds like a skin disease.”)
  • 但很多人觉得其实JavaScript设计中包含的错误还不够多,本着为程序语言的设计贡献更多错误这样的目的,他们群策群力创造出了更多的、JavaScript中未曾成功涵盖的错误。这儿有一个五花八门的列表,以供有志于为程序语言设计的谬误史添砖加瓦的人们参考。

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

  • 补充:原文的评论中有人尖锐地指出,开头提到的Jacquard可编程织布机不但支持并发(concurrency),而且是一个典型的多线程(multi-threaded)的例子。如你所见,它确实通过良好的同步机制避免了多个thread间产生竞争条件导致死锁,其实可以看作是现代操作系统最早的雏形。(目测此项科技树成果已突破天际)

 

原文:A Brief, Incomplete, and Mostly Wrong History of Programming Languages byJames Iry 

via : http://www.soimort.org/posts/160/   

12
查看其它分页:

最新评论

我也要发表评论

收藏

返回顶部

分享到微信

打开微信,点击顶部的“╋”,
使用“扫一扫”将网页分享至微信。