您现在的位置:幼教 > 家庭教育 > 幼儿家庭教育 > 智力开发 > 正文

编程语言的发展历史

来源:一个程序员的日常 作者:开源中国 2018-06-17 10:26:46

说两句

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

  Jacquard织布机是第一台可进行程序控制的织布机。用打孔卡进行编程的概念,直到电子计算机被发明出来之后仍然被广泛运用。

  最早的Hello World程序(出自K&R C)打印的是全小写的字符串:"hello, world"。

  在许多英文技术社区里,不正确地使用大小写发贴会被视作是小白的行为。(如把“Python”拼作“python”,把“FreeBSD”拼作“freebsd”,把“Qt”拼作“QT”)

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

  Ada Lovelace为Charles Babbage的分析机写了一个计算伯努利数的算法实现,因此被后世公认为是世界上第一个程序员。实际上,分析机由于其设计思想过于先进,在当时根本没有 被制造出来。(Babbage的分析机一般被认为是现代电子通用计算机的先驱)

  讽刺现在的某些“软件架构师”顶多只会纸上谈兵地画画UML。

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

  与通用图灵机(Universal Turing machine)等价的语言被称为图灵完备的(Turing completeness),它定义了“什么样的语言可以被称作是程序语言”。

  二战期间Turing曾秘密地为英国军方工作,破解德军的Enigma密码机,并在战后被授予大英帝国勋章。但这项事实直到多年以后才向公众公开。

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

  Church是Turing在Princeton的博士生导师,他在λ演算方面的工作先于Turing指出了不存在一个对可判定性问题的通用解法,这后来证明和Turing针对停机问题提出的图灵机模型是等价的。即著名的Church-Turing论题。

  说Church“甚至做得更好”,因为λ演算为后世所有的函数式语言提供了理论基础。

  现在一种常见的关于函数式编程的批评就是:“它们与C语言不够像”。

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

  据说当时负责设计ENIAC的工程师中间曾经发生过这样的争论:

  空格比制表符好。

  制表符比空格好。

  4个空格比8个空格好。

  什么?用2个空格的统统烧死。

  关于这台具有里程碑意义的人类史上第一台电子计算机ENIAC上应该预装何种编辑器,工程师们还发生过这样的争吵:

  Vim比Emacs好!

  Emacs比Vim好!

  强烈推荐Sublime Text。

  你丫用编辑器的都是找虐,IDE才是王道。

  没错,要用就用世界上最好的公司微软开发出来的世界上最好的IDE:Visual Studio。

  我早就看透了无谓的编辑器论战什么的了,我要告诉楼上吵架的,你们全都是傻逼!

  最后,工程师们一致决定使用布线和开关来为他们即将发明的计算机进行编程,机智地避开了所有这些无谓的争吵,最终齐心协力创造出了人类历史上第一台电子计算机:ENIAC。(鼓掌

  (图:两位ENIAC程序员在运用敏捷开发方法进行愉快的结对编程。“自从抛弃伴随我多年的Emacs和HHKB Pro、改用布线和开关进行编程之后,我的左手小指麻痹奇迹般地痊愈了。”其中一位接受采访时如是说。另一位则表示:“新的编程方式让曾经专注颈椎病20 年的我得到了彻底的康复,不用再整天盯着显示屏,身心同时得到了极大的放松,值得大力推广!”)

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

  蓝领带、白衬衫、深色西装似乎是IBM公司20世纪经典的dress code。

  早期FORTRAN(FORTRAN 77)对程序书写格式的要求那是相当严格。(例如,蛋疼的固定格式缩进)

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

  LISP发明的那一年Paul Graham其实还没有出生。据说是因为某本叫做《Haste and Waste》的伪程装黑圣典实在太有名了,以至于许多编程小白们把写这本书的传奇人物同Lisp之间画上了等号。

  提升逼格确实是一种与递归调用同样关键的算法思想。嗯,你懂的。

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

  L. Ron Hubbard是山达基教(Scientology)的创始人,二战期间曾与Grace Hopper同样供职于美国海军。(尚不清楚这两人之间有无其他联系)

  COBOL语言以代码极其冗长和通篇大写字母的书写风格而闻名。

  Adm. Hopper:Grace Murray Hopper女士的军衔是Rear Admiral Lower Half,即美国海军准将。

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

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

  调侃BASIC语言对行号和goto的无节制滥用。

  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。

  翻译君:……

  相关推荐:

小升初试题、期中期末题、小学奥数题

尽在奥数网公众号

   欢迎使用手机、平板等移动设备访问 ,幼儿教育我们一路陪伴同行!>>点击查看

  • 欢迎扫描二维码
    关注 微信
    gh_5735a1f9f07c

  • 欢迎扫描二维码
    关注奥数网微信
    ID:aoshu_2003

热点专题

  • 幼儿园教学课件:奇特的建筑
  • 幼儿教学课件:小鱼的梦
  • 河头幼儿园“帮水宝宝搬家”

[幼儿园英语课件]幼儿园英语课件:认识时间

[幼儿园英语课件]幼儿园英语课件:A Apple

幼升小

jn体育

幼升小政策

幼升小择校

幼升小指导

学区房

幼升小真题

重点小学

上海小学

广州小学

深圳小学

成都小学

武汉小学

南京小学

北京一类幼儿园

海淀区幼儿园

西城区幼儿园

东城区幼儿园

朝阳区幼儿园

其他区幼儿园

幼儿园资讯

教师园地

幼儿园说课稿

幼儿园教案

教学论文

幼儿园课件

幼儿园教师心得

幼儿园评语

少儿教育

胎教

早期教育

入园必读

潜能开发

艺术培养

家庭教育

儿童乐园

科普知识

图书推荐

睡前故事

成语故事

童话故事

唐诗宋词

孕育指南

时尚妈咪

健康宝贝

美食厨房

趣味数学

健康饮食

专家答疑

-->
Baidu
map