编程语言的历史编辑本段回目录
Timeline of programming languages编辑本段回目录
伴随着50年计算机编程语言的发展,目前已经有超过
参考文献编辑本段回目录
http://en.wikipedia.org/wiki/Timeline_of_programming_languages
|
|
|
编程语言的历史编辑本段回目录在过去的几十年间,大量的程序设计语言被发明、被取代、被修改或组合在一起。尽管人们多次试图创造一种通用的程序设计语言,却没有一次尝试是成功的。之所以有那么多种不同的编程语言存在的原因是,编写程序的初衷其实也各不相同;新手与老手之间技术的差距非常大,而有许多语言并对新手来说太难学;还有,不同程序之间的运行成本(runtime cost)各不相同。 有许多用于特殊用途的语言,只在特殊情况下使用。例如,PHP专门用来显示网页;Perl更适合文本处理;C语言被广泛用于操作系统和编译器的开发(所谓的系统编程)。 程序设计语言使得计算机程序不再过度地倚赖某种特定的机器或环境。这是因为程序设计语言在不同的平台上会被编译成不同的机器语言,而不是直接被机器执行。最早出现的编程语言之一FORTRAN的一个主要目标,就是实现平台独立。 虽然大多数的语言可以既被编译(compiled)又被解译(interpreted),但大多数只在一种情况下能够良好运行。在一些编程系统中,程序要经过几个阶段的编译,一般而言,后阶段的编译往往更接近机器语言。这种常用的使用技巧最早在1960年代末用于BCPL,编译程序先编译一个叫做“0代码”的转换程序(representation),然后再使用虚拟器转换到可以运行于机器上的真实代码。这种成功的技巧之后又用于Pascal和P-code,以及Smalltalk和二进制码,虽然在很多时候,中间过渡的代码往往是解译,而不是编译的。 如果所使用的翻译的机制是将所要翻译的程序代码作为一个整体翻译,并之后运行内部格式,那么这个翻译过程就被成为编译。因此,一个编译器是一个将人可阅读的程序文本(叫做源代码)作为输入的数据,然后输出可执行文件(object code)。所输出的可执行文件可以是机器语言,由计算机的中央处理器直接运行,或者是某种模拟器的二进制代码。 如果程序代码是在运行时才即时翻译,那么这种翻译机制就被称作解译。经解译的程序运行速度往往比编译的程序慢,但往往更具灵活性,因为它们能够与执行环境互相作用。参见解译语言。 特点 每一种程序设计语言可以被看作是一套包含语法、词汇和含义的正式规范。 这些规范通常包括: 数据和数据结构 指令及流程控制 引用机制和重用 设计哲学 大多数被广泛使用或经久不衰的语言,拥有负责标准化的组织,经常会晤来创造及发布该语言的正式定义,并讨论扩展或贯彻现有的定义。 数据和数据结构 现代计算机内部的数据都只以二元方式储存,即开-关模式(on-off)。现实世界中代表信息的各种数据,例如名字、银行账号、度量以及同样低端的二元数据,都经由程序设计语言整理,成为高端的概念。 一个程序中专门处理数据的那个系统被称为程序语言的型态系统(type system);对型态系统的研究和设计被称为型态理论(type theory)。语言可以被分为静态型态系统(statically typed systems),例如C++和Java,和动态型态系统(dynamically typed systems),例如Lisp,JavaScript,Tcl和Prolog。前者可被进一步分为包含宣告型态(manifest type)的语言,即每一个变量和函数的型态都清楚地宣告,或type-inferred语言(例如MUMPS,ML)。 大多数语言还能够在内置的型态基础上组合出复杂的数据结构型态(使用数组,列表,堆栈,文件等等)。面向对象语言(Object Oriented Language,又译作物件导向语言)允许程序员定义新的数据型态,即“对象”或“物件”(objects),以及运行于该对象的函数(functions)和方法(methods)。 除了何时以及如何确定表达式和型态的联系,另外一个重要的问题就是语言到底定义了哪些型态,以及允许哪些型态作为表达式的值。诸如C编程语言之类的低端语言允许程序命名内存位置、内存区域以及编译时的常量;ANSI C甚至允许表达式返回结构值(struct values)。功能性的语言一般允许变量直接使用运行时计算出的值,而不是指出该值可能储存的内存地址。 指令及流程控制 一旦数据被确定,机器必须被告知如何对这些数据进行处理。较简单的指令可以使用关键字或定义好的语法结构来完成。不同的语言利用序列系统来取得或组合这些语句。除此之外,一个语言中的其他指令也可以用来控制处理的过程(例如分支、循环等)。 引用机制和重用 引用的中心思想是必须有一种间接设计储存空间的方法。最常见的方法是通过命名变量。根据不同的语言,进一步的引用可以包括指向其他储存空间的指针。还有一种类似的方法就是命名一组指令。大多数程序设计语言使用宏调用、过程调用或函数调用。使用这些代替的名字能让程序更灵活,并更具重用性。 程序设计语言的历史 二十世纪四十年代当计算机刚刚问世的时候,程序员必须手动控制计算机。当时的计算机十分昂贵,唯一想到利用程序设计语言来解决问题的人是德国工程师楚泽(Konrad Zuse)。 几十年后,计算机的价格大幅度下跌,而计算机程序也越来越复杂。也就是说,开发时间已经远比运行时间来得宝贵。 于是,新的集成、可视的开发环境越来越流行。它们减少了所付出的时间、金钱(以及脑细胞)。只要轻敲几个键,一整段代码就可以使用了。这也得益于可以重用的程序代码库。 常见的程序设计语言 APL、A+和J ASP Ada 汇编语言 AWK Basic、Fortran Brainfuck C、C++ C# Clipper COBOL dBase PASCAL、Delphi Forth FoxPro F# IDL Java JavaScript J# LISP LOGO Modula Perl PHP PL/1 Prolog Python Ruby Scheme Smalltalk SQL Tcl/Tk UML Visual Basic Visual FoxPro Timeline of programming languages编辑本段回目录Predecessor(s) Year Name Chief developer, Company Pre 1950 * ~1837 Analytical Engine order code Charles Babbage and Ada Lovelace * 1943-5 Plankalkül (concept) Konrad Zuse * 1943-6 ENIAC coding system John von Neumann, John Mauchly, J. Presper Eckert, Herman Goldstine after Alan Turing ENIAC coding system 1946 ENIAC Short Code Richard Clippinger, John von Neumann after Alan Turing ENIAC coding system 1946 Von Neumann and Goldstine graphing system (Notation) John von Neumann and Herman Goldstine ENIAC coding system 1947 ARC Assembly Kathleen Booth Analytical Engine order code 1948 CPC Coding scheme Howard H. Aiken ENIAC coding system 1948 Curry notation system Haskell Curry ENIAC Short Code 1949 Brief Code John Mauchly and William F. Schmitt ENIAC Short Code 1949 C-10 Betty Holberton CPC Coding scheme 1949 Seeber coding scheme (concept) Robert Seeber 1950s Brief Code 1950 Short Code William F Schmidt, A.B. Tonik, J.R. Logan ARC 1950 Birkbeck Assembler Kathleen Booth Plankalkül 1951 Superplan Heinz Rutishauser * 1951 ALGAE Edward A Voorhees and Karl Balke Short Code 1951 Intermediate Programming Language Arthur Burks EDSAC 1951 Regional Assembly Language Maurice Wilkes Aiken CPC system 1951 Boehm unnamed coding system Corrado Böhm Plankalkül 1951 Klammerausdrücke Konrad Zuse Short Code 1951 OMNIBAC Symbolic Assembler Charles Katz * 1951 Stanislaus (Notation) Fritz Bauer EDSAC 1951 Whirlwind assembler Charles Adams and Jack Gilmore at MIT Project Whirlwind EDSAC 1951 Rochester assembler Nat Rochester * 1951 Sort Merge Generator Betty Holberton C-10 and Short Code 1952 A-0 Grace Hopper Aiken CPC 1952 Autocode Alick Glennie after Alan Turing SORT/MERGE 1952 Editing Generator Milly Koss * 1952 COMPOOL RAND/SDC * 1953 Speedcoding John W. Backus * 1953 READ/PRINT Don Harroff, James Fishman, George Ryckman * 1954 Laning and Zierler system Laning, Zierler, Adams at MIT Project Whirlwind Glennie Autocode 1954 Mark I Autocode Tony Brooker Speedcoding 1954-1955 FORTRAN "0" (concept) Team led by John W. Backus at IBM A-0 1954 ARITH-MATIC Team led by Grace Hopper at UNIVAC A-0 1954 MATH-MATIC Team led by Charles Katz * 1954 MATRIX MATH H G Kahrimanian * 1954 IPL I (concept) Allen Newell, Cliff Shaw, Herbert Simon A-0 1955 FLOW-MATIC Team led by Grace Hopper at UNIVAC 1955 BACAIC M. Grems and R. Porter FORTRAN, A-2 1955 PACT I SHARE Boehm 1955-6 Sequentielle Formelübersetzung Fritz Bauer and Karl Samelson Laning and Zerler 1955-6 IT Team led by Alan Perlis 1955 PRINT IBM IPL I 1958 IPL II (implementation) Allen Newell, Cliff Shaw, Herbert Simon IPL 1956-1958 LISP (concept) John McCarthy FLOW-MATIC 1957 COMTRAN Bob Bemer FORTRAN 0 1957 FORTRAN "I" (implementation) John W. Backus at IBM MATH-MATIC 1957-1958 UNICODE Remington Rand UNIVAC * 1957 COMIT (concept) FORTRAN I 1958 FORTRAN II Team led by John W. Backus at IBM FORTRAN, IT and Sequentielle Formelübersetzung 1958 ALGOL 58 (IAL) ACM/GAMM IPL II 1958 IPL V Allen Newell, Cliff Shaw, Herbert Simon * 1959 FACT Fletcher R. Jones, Roy Nutt, Robert L. Patrick FLOW-MATIC, COMTRAN, FACT 1959 COBOL (concept) The CODASYL Committee ALGOL 58 1959 JOVIAL Jules Schwartz at SDC IPL 1959 LISP (implementation) John McCarthy 1959 TRAC (concept) Mooers 1960s ALGOL 58 1960 ALGOL 60 FLOW-MATIC, COMTRAN 1960 COBOL 61 (implementation) The CODASYL Committee * 1961 COMIT (implementation) FORTRAN II 1962 FORTRAN IV * 1962 APL (concept) Iverson ALGOL 58 1962 MAD Arden, et al. ALGOL 60 1962 SIMULA (concept) FORTRAN II, COMIT 1962 SNOBOL Griswold, et al. ALGOL 60 1963 CPL Barron, Strachey, et al. SNOBOL 1963 SNOBOL3 Griswold, et al. ALGOL 60 1963 ALGOL 68 (concept) van Wijngaarden, et al. ALGOL 58 1963 JOSS I Cliff Shaw, RAND MIDAS 1964 MIMIC H. E. Petersen, et al. CPL, LISP 1964 COWSEL Burstall, Popplestone ALGOL 60, COBOL, FORTRAN 1964 PL/I (concept) IBM FORTRAN II, JOSS 1964 BASIC Kemeny and Kurtz FARGO 1964 IBM RPG IBM 1964 Mark-IV Informatics 1964 TRAC (implementation) Mooers 1964? IITRAN JOSS 1965 TELCOMP BBN JOSS I 1966 JOSS II Chuck Baker, RAND ALGOL 60 1966 ALGOL W Niklaus Wirth, C. A. R. Hoare FORTRAN IV 1966 FORTRAN 66 LISP 1966 ISWIM (Concept) Landin ALGOL 60 1966 CORAL66 CPL 1967 BCPL Richards FORTRAN, TELCOMP 1967 MUMPS Massachusetts General Hospital * 1967 APL (implementation) Iverson ALGOL 60 1967 SIMULA 67 (implementation) Dahl, Myhrhaug, Nygaard at Norsk Regnesentral Lisp 1967 InterLisp D.G. Bobrow and D.L. Murphy SNOBOL3 1967 SNOBOL4 Griswold, et al. PL/I 1967 XPL W. M. Mckeeman, et al. at University of California Santa Cruz, California J. J. Horning, et al. at Stanford University ALGOL 60 1968 ALGOL 68 (UNESCO/IFIP standard) A. van Wijngaarden, B.J. Mailloux, J.E.L. Peck and Cornelis H. A. Koster, et al. COWSEL 1968 POP-1 Burstall, Popplestone DIBOL 1968 DIBOL-8 DEC 1968 FORTH (concept) Moore LISP 1968 LOGO Papert CRT RPS 1968 MAPPER Unisys * 1968 REFAL (implementation) Valentin Turchin ALGOL 60, COBOL, FORTRAN 1969 PL/I (implementation) IBM BCPL 1969 B Ken Thompson, with contributions from Dennis Ritchie 1969 PPL Thomas A. Standish at Harvard University 1969 SETL Jack Schwartz at Courant Institute of Mathematical Sciences 1969 TUTOR University of Illinois at Urbana-Champaign 1970s 1970? FORTH (implementation) Moore POP-1 1970 POP-2 ALGOL 60, ALGOL W 1970 Pascal Wirth, Jensen Pascal, XPL 1971 Sue Holt et al. at University of Toronto SIMULA 67 1972 Smalltalk Xerox PARC PL/I, ALGOL, XPL 1972 PL/M Kildall at Digital Research B, BCPL, ALGOL 68 1972 C Dennis Ritchie * 1972 INTERCAL Don Woods and James M. Lyon 2-level W-Grammar 1972 Prolog Colmerauer Pascal, BASIC 1973 COMAL Christensen, Løfstedt 1973 ML Robin Milner Pascal, Sue 1973 LIS Ichbiah et al. at CII Honeywell Bull BASIC 1974 GRASS DeFanti Business BASIC 1974 BASIC FOUR MAI BASIC Four Inc. SETL 1975 ABC Leo Geurts and Lambert Meertens LISP 1975 Scheme Sussman, Steele BASIC 1975 Altair BASIC Gates, Allen ALGOL 68, BLISS, ECL, HAL 1975 CS-4 Brosgol at Intermetrics Pascal 1975 Modula Wirth Smalltalk-72 1976 Smalltalk-76 Xerox PARC Speakeasy-2 1976 Speakeasy-3 Stanley Cohen [disambiguation needed],Stephen Pieper at Argonne National Laboratory C, FORTRAN 1976 Ratfor Kernighan APL, PPL, Scheme 1976 S John Chambers at Bell Labs * 1977 FP John Backus * 1977 Bourne Shell (sh) Bourne Fortran 1977 IDL David Stern of Research Systems Inc MUMPS 1977 Standard MUMPS SNOBOL 1977 Icon (concept) Griswold ALGOL 68, LIS 1977 Green Ichbiah et al. at CII Honeywell Bull for US Dept of Defense ALGOL 68, CS-4 1977 Red Brosgol et al. at Intermetrics for US Dept of Defense ALGOL 68, 1977 Blue Goodenough et al. at SofTech for US Dept of Defense ALGOL 68, 1977 Yellow Spitzen et al. at SRI International for US Dept of Defense * 1978? MATLAB Moler at the University of New Mexico Algol60 1978? SMALL Brownlee at the University of Auckland Ingres 1978 SQL aka structured query language IBM * 1978 VisiCalc Bricklin, Frankston marketed by VisiCorp Modula 1979 Modula-2 Wirth PL/I, BASIC, EXEC 2 1979 REXX Cowlishaw C, SNOBOL 1979 AWK Aho, Weinberger, Kernighan SNOBOL 1979 Icon (implementation) Griswold * 1979 Vulcan dBase-II Ratliff 1980s C, SIMULA 67 1980 C with classes Stroustrup BASIC, Compiler Systems, Digital Research 1980-1981 CBASIC Gordon Eubanks Speakeasy-3 1982? Speakeasy-IV Stanley Cohen [disambiguation needed], et al. at Speakeasy Computing Corporation Smalltalk, C 1982 Objective-C Brad Cox IBM BASICA 1983 GW-BASIC Microsoft Green 1983 Ada CII Honeywell Bull C with Classes 1983 C++ Stroustrup BASIC 1983 True BASIC Kemeny, Kurtz at Dartmouth College COBOL 1983? ABAP SAP AG sh 1984? Korn Shell (ksh) David Korn Forth, Lisp 1984 RPL Hewlett-Packard ML 1984 Standard ML dBase 1984 CLIPPER Nantucket LISP 1984 Common Lisp Guy L. Steele, Jr. and many others 1984 Redcode Alexander Dewdney and D.G. Jones Pascal 1985 Object Pascal Apple Computer dBase 1985 PARADOX Borland InterPress 1985 PostScript Warnock BASIC 1985 QuickBASIC Microsoft BASIC 1986 GFA BASIC Frank Ostrowski 1986 Miranda David Turner at University of Kent 1986 LabVIEW National Instruments SIMULA 67 1986 Eiffel Meyer 1986 Informix-4GL Informix C 1986 PROMAL INFORM 1986 CorVision Cortex Smalltalk 1987 Self (concept) Sun Microsystems Inc. * 1987 HyperTalk Apple C 1987 Magic Magic Software Enterprises C, sed, awk, sh 1987 Perl Wall Modula-2 1987 Oberon Wirth Prolog 1987 Erlang Joe Armstrong and others in Ericsson * 1987 Mathematica Wolfram Research BASIC/Z 1987 Turbo Basic Robert 'Bob' Zale MATLAB 1988 Octave Awk, Lisp 1988 Tcl Ousterhout BASIC 1988 STOS BASIC François Lionet and Constantin Sotiropoulos REXX 1988 Object REXX Simon C. Nash Ada 1988 SPARK Bernard A. Carré APL 1988 A+ Arthur Whitney Turbo Pascal, Object Pascal 1989 Turbo Pascal OOP Hejlsberg at Borland Modula-2 1989 Modula-3 Cardeli, et al. DEC and Olivetti Turbo Basic 1989 PowerBASIC Robert 'Bob' Zale 1990s STOS BASIC 1990 AMOS BASIC François Lionet and Constantin Sotiropoulos Oberon 1990 Object Oberon H Mössenböck, J Templ, R Griesemer APL, FP 1990 J Iverson, R. Hui at Iverson Software Miranda 1990 Haskell Common Lisp, Scheme 1990 EuLisp Object Oberon 1991 Oberon-2 Hanspeter Mössenböck, Wirth ABC, ALGOL 68[1], Icon, Modula-3 1991 Python Van Rossum Prolog 1991 Oz Gert Smolka and his students 1991 Q Albert Gräf QuickBASIC 1991 Visual Basic Alan Cooper, sold to Microsoft Turbo Pascal OOP 1992 Borland Pascal Common Lisp, Scheme 1992 Dylan many people at Apple Computer ksh 1993? Z Shell (zsh) Smalltalk 1993? Self (implementation) Sun Microsystems Inc. * 1993 Brainfuck Urban Müller Forth 1993 FALSE Wouter van Oortmerssen * 1993 WinDev PC Soft HyperTalk 1993 Revolution Transcript HyperTalk 1993 AppleScript Apple APL, Lisp 1993 K Arthur Whitney Smalltalk, Perl 1993 Ruby Yukihiro Matsumoto Lua 1993 Lua Roberto Ierusalimschy et al. at Tecgraf, PUC-Rio C 1993 ZPL Chamberlain et al. at University of Washington Self, Dylan 1993 NewtonScript Walter Smith Common Lisp 1994 ANSI Common Lisp Perl 1994 PHP Rasmus Lerdorf LPC, C, μLPC 1994 Pike Fredrik Hübinette et al. at Linköping University Forth 1994 ANS Forth Elizabeth Rather, et al. Borland Pascal 1995 Borland Delphi Anders Hejlsberg at Borland 1995 ColdFusion (CFML) Allaire C, SIMULA67 OR C++, Smalltalk, Ada 83, Objective-C 1995 Java James Gosling at Sun Microsystems Self, Java 1995 LiveScript Brendan Eich at Netscape Lisp, C++, Tcl/Tk, TeX, HTML 1996 Curl David Kranz, Steve Ward, Chris Terman at MIT LiveScript 1996 JavaScript Brendan Eich at Netscape APL, Perl 1996 Perl Data Language (PDL) Karl Glazebrook, Jarle Brinchmann, Tuomas Lukka, and Christian Soeller S 1996 R Robert Gentleman and Ross Ihaka REXX 1996 NetRexx Cowlishaw 1996 Lasso Blue World Communication Oberon-2 1997 Component Pascal Oberon microsystems, Inc Joule, Original-E 1997 E Mark S. Miller Scheme 1997 Pico Free University of Brussels Smalltalk-80, Self 1997 Squeak Smalltalk Alan Kay, et al. at Apple Computer JavaScript 1997 ECMAScript ECMA TC39-TG1 Smalltalk, APL, Objective-C 1997 F-Script Philippe Mougin Common Lisp 1997 ISLISP ISO Standard ISLISP Java, Scheme, Tcl 1997 Tea Jorge Nunes Self, Forth, Lisp, Logo 1997 REBOL Carl Sassenrath, Rebol Technologies C++, Standard C 1998 Standard C++ ANSI/ISO Standard C++ Erlang 1998 Open Source Erlang Ericsson AWK, Perl, Unix shell 1998 Pikt Robert Osterlund (then at University of Chicago) JAVA, SQL 1998 DASL (BOS) Bob Goldberg and Ludovic Champenois at Sun Microsystems Web 2.0 IDE & ALM 1999 WebDev PC Soft DSSSL 1999 XSLT (+ XPath) W3C, James Clark Game Maker 1999 Game Maker Language (GML) Mark Overmars JAVA, HTML 1999 DASL (AUS) Bob Goldberg, Bruce Daniels, Peter Yared, Yury Kamen, and Syed Ali at Sun Microsystems 2000s Java 2000 Join Java G Stewart von Itzstein FP, Forth 2000 Joy von Thun C, C++, C#, Java 2000 D Walter Bright at Digital Mars Ada, C++, Lisp 2000 XL Christophe de Dinechin Magic 2000 eDeveloper Magic Software Enterprises C, C++, Java, Delphi 2000 C# Anders Hejlsberg at Microsoft(ECMA [disambiguation needed]) C, C++, Java, PHP, Python, Ruby, Scheme 2000 Ferite Chris Ross Java 2001 AspectJ Xerox PARC Visual Basic 2001 Visual Basic .NET Microsoft Self, NewtonScript 2002 Io Steve Dekorte C#, ML, MetaHaskell 2003 Nemerle University of Wrocław Joy, Forth, Lisp 2003 Factor Slava Pestov Smalltalk, Java, Haskell, Standard ML, OCaml 2003 Scala Martin Odersky Lua 2003 Squirrel Alberto Demichelis BASIC 2004 FreeBASIC Andre Victor Mobile Development 2004 WinDev Mobile PC Soft * 2004 Subtext Jonathan Edwards Python, C# 2004 Boo Rodrigo B. de Oliveira Object Pascal, C# 2004 Oxygene (formerly Chrome) RemObjects Software Java 2004 Groovy James Strachan BASIC 2004 ThinBasic Eros Olmi thinBasic community * 2005 Corn Objective Caml, C#, Haskell 2005 F# Don Syme at Microsoft Research ARC Assembler 2005 Rage Assembler Wim Boot at Micronix Softworks * 2005 Seed7 Thomas Mertes Haskell 2006 Links Philip Wadler, University of Edinburgh * 2006 Kite Mooneer Salem C#, ksh, Perl, CL, DCL, SQL 2006 Windows PowerShell Microsoft C#, Scala, Ruby, Erlang 2007 Fan Brian Frank, Andy Frank APEX 2007 APEX Salesforce.com C# 2007 Vala GNOME Lisp, ML, Haskell, Erlang 2007 Clojure Rich Hickey * 2007 LOLCODE Adam Lindsay Oberon 2007 Oberon-07 Wirth [1] * 2008 RapidRage Wim Boot at Micronix Softworks eDeveloper 2008 uniPaaS Magic Software Enterprises Haskell 2008 Disciple Ben Lippmeier Disciple Wiki C, R 2008 PCASTL Philippe Choquette * 2008 Seccia Sylvain Seccia Standard ML, SML/NJ 2009 Mythryl Cynbe ru Taren MSIL, C#, VB.NET 2009 dylan.NET Dylan Borg 伴随着50年计算机编程语言的发展,目前已经有超过 参考文献编辑本段回目录
http://www.javaeye.com/news/288 http://en.wikipedia.org/wiki/Timeline_of_programming_languages →如果您认为本词条还有待完善,请 编辑词条
词条内容仅供参考,如果您需要解决具体问题 标签: 编程语言大事记
收藏到:
同义词: 暂无同义词 关于本词条的评论 (共0条)发表评论>> |