编程语言的发展史

1951 – Regional Assembly Language

1952 – Autocode

1954 – IPL (LISP语言的祖先)

1955 – FLOW-MATIC (COBOL语言的祖先)

1957 – FORTRAN (第一个编译型语言)

1957 – COMTRAN (COBOL语言的祖先)

1958 – LISP

1958 – ALGOL 58

1959 – FACT (COBOL语言的祖先)

1959 – COBOL

1959 – RPG

1962 – APL

1962 – Simula

1962 – SNOBOL

1963 – CPL (C语言的祖先)

1964 – BASIC

1964 – PL/I

1966 – JOSS

1967 – BCPL (C语言的祖先)

1968 – Logo

1969 – B (C语言的祖先)

1970 – Pascal

1970 – Forth

1972 – C

1972 – Smalltalk

1972 – Prolog

1973 – ML

1975 – Scheme

1978 – SQL

1980 – C++ (既有类的C语言,更名于1983年7月)

1983 – Ada

1984 – Common Lisp

1984 – MATLAB

1985 – Eiffel

1986 – Objective-C

1986 – Erlang

1987 – Perl

1988 – Tcl

1988 – Mathematica

1989 – FL

1990 – Haskell

1991 – Python

1991 – Visual Basic

1993 – Ruby

1993 – Lua

1994 – CLOS (ANSI Common Lisp的一部分)

1995 – Java

1995 – Delphi (Object Pascal)

1995 – Java

1995 – PHP

1996 – WebDNA

1997 – Rebol

1999 – D

2000 – Action

2001 – C#

2001 – Visual Basic .NET

2002 – F#

2003 – Groovy

2003 – Scala

2007 – Clojure

2009 – Go

2011 – Dart

一张图让你了解编程语言发展史

我们都知道,编程语言是一组用来定义计算机程序的语法规则。它是一种被标准化的交流语言,用来向计算机发出指令。一种计算机语言让程序员能够准确地定义计算机所需要使用的数据,并精确地定义在不同情况下所应当采取的行动。尽管人们多次试图创造一种通用的程序设计语言,却没有一次尝试是成功的。之所以有那么多种不同的编程语言存在的原因是设计程序语言的初衷不同,对语言学习曲线的追求不同,不同程序之间的运行成本差异等。

下面这张图片描绘了整个编程语言的历史。包括各种编程语言的发明人,编程语言的特点和适用领域,被什么网站或公司使用等。

从1951年2014年,人类一共发明了256种编程语言,每一种语言的出现都带有某些新特征。编程语言不断的在革新,很快就会有超出这个清单的新编程语言出现

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

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

  • 最早的(出自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“甚至做得更好”,因为λ演算为后世所有的函数式语言提供了理论基础。

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

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

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

    • 空格比制表符好。

    • 制表符比空格好。

    • 4个空格比8个空格好。

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

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

    • Vim比Emacs好!

    • Emacs比Vim好!

    • 强烈推荐Sublime Text。

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

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

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

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

posted @ 2018-11-05 08:44  山茶花llia  阅读(501)  评论(0编辑  收藏  举报