编程语言简史(翻译)

本文发表在《CSDN开发高手》第九期上。请勿随意转载。


我们已经远离用电线和穿孔卡编程的时代。也许仍未尽如人意。以下内容都是编程历史上的创新。

 

ca. 1946

Konrad Zuse一位德国工程师,他躲藏在巴伐利亚附近的阿尔卑斯山上时,独立开发了Plankalkul。他把该项成果应用在其它的事物中,比如国际象棋。


1949

Short Code ,第一种真正在电子计算设备上使用的计算机语言,尽管他是一个纯手工编译的的语言。


1951

Grace HopperRemington Rand工作,是在第一个著名的编译器——A-o上开始设计工作。当Rand1957年发布这个语言时,它被称为MATH-MATIC


1952

Alick E. Glennie ,他利用自己在曼彻斯特大学的课余时间,发明了一个名为AUTOCODE的编程系统,一个未能成型的编译器。


1957

FORTRAN——数学公式转换系统(FORmula TRANslatingFORTRAN名字的由来)——出现。开发队伍的领导者是John Backus,并且他还为ALGOL的开发和巴柯斯范式(BNF)做出了贡献。


1958

FORTRAN II出现,它能够处理子程序和连接汇编语言。由M.I.TJohn McCarthyLISP-LISt Processing上开始设计工作。

原始的ALGOL规范出现。该规范并未描述数据的输入输出方式;这些问题都留给独立的实现者。


1959

LISP1.5出现。COBOL在数据系统和语言大会(Conference on Data System and Languages)上被创建了。


1960

ALGOL 60 ,第一种结构化语言出现。它是结构化语言家族树中的根节点,并最终产生Pascal这样的语言。ALGOL成为六十年代中期至末期欧洲最为流行的语言。

六十年代早期,Kenneth Iverson开始语言方面的工作,最终产生了APL-A编程语言。它使用专门的字符集,为了正确地使用,你还需要兼容APLI/O设备。


1962

APL被写入Iverson的《A Programming Language》一书中。

FORTRAN IV出现。

SNOBOL这个首字母拼词命名的产品在工作的初期就取得了绝对的成功SNOBOL——面向字符串符号(StriNg Oriented symBOlic Language)语言。它衍生了其他一些以首字母拼词命名的产品: FASBOL,一个SNOBOL编译器(1971年),还有SPITBOL——Speedy ImplemenTation of snoBOL——同样在1971年。


1963

ALGOL 60进行修正。

PL/1的工作开始。


1964

APL\360被实现。

在达特茅斯大学John G.KemenyThomas E.Kurtz教授发明了BASIC。最初的实现是一个编译器。第一个BASIC程序在1964年五月一日下午四点运行。

PL/1发布。


1965

SNOBOL3出现。


1966

FORTRAN 66出现。

LISP 2出现。

BoltBeranekNewman开始了LOGO的工作。小组的头是Wally Fuerzeig,而且还包括Seymour PapertLOGO中最著名的便是“龟作图”。


1967

SNOBOL4,功能获得极大加强的SNOBOL,出现了。


1968

ALGOL 68,相对于ALGOL 60它是个怪物。一些规范委员会的成员——包括C.A.R.HoareNiklaus Wirth——却赞同该计划。事实证明ALGOL 68是难以实现的。

ALTRAN,一个FORTRAN的变种出现。

COBOLANSI正式定义规范。

Niklaus Wirth开始Pascal方面的工作。


1969

500参加在纽约ArmonkIBM总部召开的APL会议。APL的分发需求如此之大,该活动此后被人们称为“The March on Armonk”。


1970

70年代早期Charles Moore在他的语言Forth中写下了第一个有意义的程序。

Prolog方面的工作大约在此时开始了。

同样是在70年代早期的某一天Xerox PARCAlan Kay领导,开始了Smalltalk的设计工作。早期版本包括Smalltalk-72Smalltalk-74Smalltalk-76

PascalCDC 6000-series电脑上的一个实现出现了。

Icon,SNOBOL4的一个后代产品问世。


1972

Konrad Zuse写的关于Plankalkul(见1946年)手稿终于出版了。

Dennis Ritchie设计了C。但是最终的参考手册却是在1974年发布的。

Prolog的第一个实现——Alain ColmerauerPhillip Roussel的功劳。


1974

另一个COBOLANSI规范出现。


1975

Tiny BASIC,由Bob AlbrechtDennis Allison设计(由Dick WhippleJohn Arnold实现),运行在2KB内存的微型计算机上。一台4KB的机器是较为合适的,它将有2KB的内存应用于这个程序上。

Bill GatesPaul Allen编写的一个BASIC版本以抽取每份拷贝版税的形式销售给MITSMicro Instrumentation and Telemetry Systems)。MITS生产Altair,这是一种8080结构的微型计算机。

Scheme,一个LISP的“方言”,由G.L. SteeleG.J. Sussman设计。

Pascal用户手册和报告出版JensenWirth编写。许多人至今都认为它是Pascal方面权威的参考书籍。

B.W. Kerninghan描述了RATFOR——RATional FORTRAN。它是预处理程序,并且允许在FORTRAN中使用类C的控制结构。RATFOR被应用到了KernighanPlauger的“Software Tools”中,它出现在1976年。


1976

Design System Language出现,它被认为是PostScript的先驱。


1977

MUMPSANSI标准出现——麻省总医院多用途程序设计系统Massachusetts General Hospital Utility Multi-Programming System)。MUMPS最初被用来处理医疗记录,它只能识别字符串类型。随后被重新命名为M

设计竞赛将导致Ada的产生。由Jean Ichbiah带领的Honeywell Bull队伍,即将赢得比赛。

 

Kim Harris和其他人建立了FIG,一个FORTH兴趣小组。他们开发了FIG-FORTH,售价大约为20美元。

70年代晚期的某天Kenneth Bowles设计出了UCSD Pascal,它使得Pascal可以用在PDP-11和基于Z80 的电脑上。

Niklaus Wirth开始设计Modula,它Modula-2的先行者,Pascal的继承者。


1978

AWK——一个文本处理语言,以它设计者AhoWeinbergerKernighan的名字命名。

FORTRAN 77ANSI标准出现。


1980

Smalltalk-80出现。

Modula-2出现。

Franz LISP出现。

Bjarne Stroustrup开发了一个语言集——被总称为“C With Classes”——它成为C++的滋生土壤。


1981

Effort开始成为一个LISP的“公共方言”,常被人称作Common LISP

 

日本开始第五代电脑系统工程。主要语言是Prolog


1982

ISO Pascal出现。

PostScript出现。


1983

Smalltalk-80公布:它由Goldberg等人完成。

Ada出现。他的名字来自Lovelace女伯爵Augusta Ada Byron,她是英国诗人拜伦的女儿。因其在巴贝奇分析机上设计了解伯努利方程的一个程序,而被誉为第一位女程序员。在1983年,国防部指导的全新“任务评定”应用程序是使用该语言编写的。

1983年的后期和1984年早期,微软和Digital Research共同发布第一个微型计算机的C编译器。

七月,第一个C++实现露面。该名称是由Rick Mascitti取的。

11月,BorlandTurbo Pascal的“冲击”犹如一场核风暴,这得益于《BYTE》杂志的广告。


1984

APL2的参考手册面世。APL2APL的扩展,它允许嵌套数组。


1985

Forth控制着潜水器定位泰坦尼克的残骸。

Vanilla SNOBOL4之微机版发布。

MethodsPC上的面向行(line-oriented)Smalltalk出现。


1986

Smalltalk/V露面——第一个广泛应用于微机的Smalltalk版本。

Apple公司Mac机器发布Object Pascal

Borland发布Turbo Prolog

Charles Duff发布Actor,一个开发微软Windows应用程序的面向对象语言。

Eiffel另外一个面向对象语言出现。

C++露面。


1987

Turbo Pascal 4.0发布。


1988

CLOS规范——公共LISP对象系统(Common LISP Object System)——发表。

Niklaus Wirth完成Oberon这是他继Modula-2的后续行动

 


1989

ANSI C规范公布。

C++2.0形成了一个参考手册的初稿。2.0版本增加了诸如多继承和成员指针等特性。


1990

C++2.1B.Stroustrup等作者的《Annotated C++ Reference Manual》一书出版。这个版本增加了模板和异常处理特性。

FORTRAN 90包含了众多新元素比如case语句和派生类型。

Kenneth IversonRoger HuiAPL 90会议上提出了J语言。


1991

Visual BasicCOMDEX春展会上获得《BYTE》杂志颁发的最佳表现奖。


1992

Dylan——以Dylan Thomas命名——由Apple公司发布的一个类似Scheme的面向对象语言。


1993

ANSI发布X3J4.1技术报告——面向对象的COBOL提议初稿。真正的标准预计在1997年完成。


1994

微软Visual Basic for Application整合到Excel中。


1995

二月ISO接受Ada语言1995修订版。它被称为Ada95,其中包括OOP特性和支持实时系统。


1996

第一个ANSI C++标准预发布。

 



 

编程语言时序表

这是一个以编程语言时间顺序排序的清单。

1950之前

查看格式为:

父语言(“*”表示没有此项)年代 子语言 ——开发者或公司

 

*  1840~第一个程序 -- Lovelace

*  1945  Plankalkül -- Zuse

 

1950

                 *  1952  A-0 -- Hopper

                    1954  Mark I Autocode -- Brooker

               A-0  1954  ARITH-MATIC -- Hopper

               A-0  1955  MATH-MATIC -- Hopper

               A-0  1955  FLOW-MATIC -- Hopper

               A-0  1955  FORTRAN -- Backus

                    1956  Information Processing Language -- Newell, Shaw, Simon

        FLOW-MATIC  1957  COMTRAN -- Bemer

           FORTRAN  1958  FORTRAN II -- Backus

           FORTRAN  1958  Algol 58

                 *  1959  LISP McCarthy

 

1960

FLOW-MATIC COMTRAN  1960  COBOL The Codasyl Committee

             ALGOL  1960  Algol 60

             ALGOL  1960  JOSS

        FORTRAN II  1962  FORTRAN IV

                 *  1962  APL -- Iverson

           ALGOL60  1962  Simula

        FORTRAN II  1962  SNOBOL -- Griswold, et al.

           ALGOL60  1963  CPL -- Barron, Strachey, et al.

            SNOBOL  1962  SNOBOL3 -- Griswold, et al.

          CPL LISP  1964  COWSEL Burstall, Popplestone

           ALGOL60  1964  /A> IBM team

  FORTRAN II, JOSS  1964  BASIC -- Kemeny and Kurtz

        FORTRAN II  1966  FORTRAN IV

              LISP  1966  ISWIM Landin

           ALGOL60  1966  CORAL66 Real Time version of Algol 60

               CPL  1967  BCPL -- Richards

      Fortran LISP  1967  MUMPS -- Massachusetts General Hospital

            Simula  1967  Simula67

           SNOBOL3  1967  SNOBOL4 -- Griswold, et al.

           Algol60  1968  ALGOL 68 -- Wijngaarten, et al.

            COWSEL  1968  POP-1 -- Burstall,  Popplestone

                    1968  Forth -- Moore (first paper, 1970)

              Lisp  1968  Logo -- Papert

 

1970

            POP-1   1970  POP-2

           ALGOL60  1971  Pascal -- Wirth, Jensen

          Simula67  1972  Smalltalk Environment -- Smalltalk--Digitalk

            B BCPL  1972  C -- Ritchie

                 *  1973  PROLOG -- Colmeraurer

             BASIC  1973  COMAL

              LISP  1975  Scheme -- Sussman, Steele

             BASIC  1975  Altair BASIC -- Gates, Allen

         C FORTRAN  1976  RATFOR -- Kernighan

             MUMPS  1977  X11.1 ANSI Standard MUMPS

 

        FORTRAN IV  1978  FORTRAN77

               ( *  1978  VISICALC -- Bricklin, Frankston)

          C SNOBOL  1979  Awk -- Aho, Kernighan

               ( *  1979  VULCAN DBASE-II -- Ratliff )

           Algol68  1979  Green -- Ichbiah et al., US Dept of Defense

 

1980

        C Simula67  1980  C with Classes -- Stroustrup

          Simula67  1980  Smalltalk-80 -- Digitalk

             Green  1983  Ada -- US Dept of Defense

    C with Classes  1983  C++ -- Stroustrup

            Pascal  1983  Turbo Pascal -- Hejlsberg

                *   1984  Standard ML ML = Meta-Language

         1977MUMPS  1985  1984 MUMPS

           ( dBase  1984  CLIPPER -- Nantucket )

           ( dBase  1985  PARADOX -- Borland )

          Simula67  1986  Eiffel -- Meyer

               ( *  1987  HyperCard -- Apple )

               ( *  1987  SQL-1 )

               Awk  1987  Perl -- Wall

            MATLAB   1988  Octave

         dBase-III  1988  dBaseIV

          Awk Lisp  1988  Tcl -- Ousterhout

      Turbo-Pascal  1989  Turbo-Pascal+OOP -- Borland

                 C  1989  Standard C -- ANSI X3.159-1989 (adopted by ISO in 1990)

  Pascal Modula-II  1989  OBERON -- Wirth

 

1990

                    1990  Haskell

         1984MUMPS  1990  1990 MUMPS       

                    1991  Python -- van Rossum

                    1991  Q

           ( SQL-1  1992  SQL-2 )

  Turbo-Pascal OOP  1992  Borland Pascal

                    1993  Brainfuck -- Mueller

    Perl Smalltalk  1993  Ruby

                    1993  Lua

            Ada 83  1995  Ada 95 -- ISO

    Borland Pascal  1995  Delphi(1) -- Borland

  C++ Internet OOP  1995  Java -- Sun Microsystems

         1990MUMPS  1995  1995 MUMPS

    Standard ML,84  1997  SML’97 

             PHP 3  1997  PHP

               C++  1998  C++98 -- ANS/ISO Standard C++

 

 

                    2000  Joy -- von Thun

     C C++ COM Java 2000  C# -- Microsoft

         DELPHI(5)  2001  KYLIX -- Borland

         Whitespace 2003  Whitespace -- Brady and Morris

 


 

一些数据不完全的资料:

                 *  197?  sh (Bourne Shell) -- Bourne

                sh  19??  ksh (Korn Shell) -- Korn

               ksh  199?  zsh (Z Shell)

          HyperCard 199?  AppleScript -- Apple

                  * 1990  Self -- Sun Microsystems Inc

          Self Java 199?  LiveScript -- Brendan Eich, Netscape (Self inspired, made for Java interactions)

         LiveScript 1995  JavaScript -- Netscape

         JavaScript 1997  ECMAScript -- ECMA TC39-TG1

                    2003  Rikstation

 

 

 

posted @ 2004-10-06 02:01  monkeyking  阅读(1578)  评论(0)    收藏  举报