Content deleted Content added
mergesection Programming language#History |
Merging/importing content from Programming language#History |
||
Line 3:
{{mergesection|Programming language|History}}
== Prehistory ==
The first programming languages predate the modern computer. The most important of these are the '''[[lambda calculus]]''' and the [[Turing machine]]. However, unlike the lambda calculus, Turing's code does not serve well as a basis for higher-level languages — its principal use is in rigorous analyses of [[algorithm|algorithmic]] [[computational complexity theory|complexity]].
Like many "firsts" in history, the first modern programming language is hard to identify. For some people the answer depends on how much power and human-readability is required before the status of "programming language" is granted. [[Jacquard loom]]s and [[Charles Babbage]]'s [[Difference engine|Difference Engine]] both had simple, extremely limited languages for describing the actions that these machines should perform. One can even regard the punch holes on a [[player piano]] scroll as a limited [[___domain-specific programming language]], albeit not designed for human consumption.
== The 1940s ==
In the 1940s the first recognizably modern, electrically powered computers were created. The limited speed and memory capacity forced programmers to write hand tuned [[assembly language]] programs. It was soon discovered that programming in assembly language required a great deal of intellectual effort and was error-prone.
In 1945, Konrad Zuse [http://www-history.mcs.st-andrews.ac.uk/history/Mathematicians/Zuse.html] published details of his programming language [[Plankalkül]]. However, it was not implemented in his time and his original contributions were isolated from other developments because Germany was isolated during the war.
Some important languages that were developed in this time period include:
* [[1943]] - [[Plankalkül]] ([[Konrad Zuse]])
* [[1943]] - [[ENIAC coding system]]
* [[1949]] - [[C-10 programming language|C-10]]
== The 1950s and 1960s ==
In the [[1950s]] the first three modern programming languages whose descendants are still in widespread use today were designed:
* [[FORTRAN programming language|FORTRAN]], the "'''FOR'''mula '''TRAN'''slator, invented by [[John W. Backus]] et al.;
* [[LISP programming language|LISP]], the "'''LIS'''t '''P'''rocessor", invented by [[John McCarthy]] et al.;
* [[COBOL programming language|COBOL]], the '''CO'''mmon '''B'''usiness '''O'''riented '''L'''anguage, created by the [[Short Range Committee]], heavily influenced by [[Grace Hopper]].
Another milestone in the late 1950s was the publication, by a committee of American and European computer scientists, of "a new language for algorithms"; the ''[[Algol 60]] Report'' (the "'''ALGO'''rithmic '''L'''anguage"). This report consolidated many ideas circulating at the time and featured two key innovations:
* The use of [[Backus-Naur Form]] (BNF) for describing the language's syntax. Nearly all subsequent programming languages have used a variant of BNF to describe the [[context-free grammar|context-free]] portion of their syntax.
* The introduction of [[lexical scoping]] for names in arbitrarily nested scopes.
Algol 60 was particularly influential in the design of later languages, some of which soon became more popular. The [[Burroughs B5000]] was designed to be programmed in an extended subset of Algol.
Some important languages that were developed in this time period include:
* [[1951]] - [[Regional Assembly Language]]
* [[1952]] - [[Autocode]]
Line 18 ⟶ 46:
* [[1964]] - [[BASIC programming language|BASIC]]
* [[1964]] - [[PL/I]]
== 1967-1978: establishing fundamental paradigms ==
The period from the late 1960s to the late 1970s brought a major flowering of programming languages. Most of the major language paradigms now in use were invented in this period:
* '''[[Simula programming language|Simula]]''', invented in the late 1960s by [[Kristen Nygaard|Nygaard]] and [[Ole-Johan Dahl|Dahl]] as a superset of Algol 60, was the first language designed to support [[object-oriented programming]]. [[Smalltalk programming language|Smalltalk]] (mid 1970s) provided a complete ground-up design of an object-oriented language.
* '''[[C programming language|C]]''', an early [[systems programming]] language, was developed by [[Dennis Ritchie]] and [[Ken Thompson]] at [[Bell Labs]] between [[1969]] and [[1973]].
* '''[[Prolog programming language|Prolog]]''', designed in [[1972]] by [[Alain Colmerauer|Colmerauer]], [[Phillipe Roussel|Roussel]], and [[Robert Kowalski|Kowalski]], was the first [[logic programming]] language.
* '''[[ML programming language|ML]]''' built a polymorphic type system (invented by [[Robin Milner]] in [[1978]]) on top of Lisp, pioneering [[static typing|statically typed]] [[functional programming]] languages.
Each of these languages spawned an entire family of descendants, and most modern languages count at least one of them in their ancestry.
The 1960s and 1970s also saw considerable debate over the merits of "[[structured programming]]", which essentially meant programming without the use of [[GOTO]]. This debate was closely related to language design: some languages did not include GOTO, which forced structured programming on the programmer. Although the debate raged hotly at the time, nearly all programmers now agree that, even in languages that provide GOTO, it is bad [[programming style|style]] to use it except in rare circumstances. As a result, later generations of language designers have found the structured programming debate tedious and even bewildering.
Some important languages that were developed in this time period include:
* [[1970]] - [[Pascal programming language|Pascal]]
* [[1972]] - [[C programming language|C]]
Line 24 ⟶ 65:
* [[1973]] - [[ML programming language|ML]]
* [[1978]] - [[SQL]]
== The 1980s: consolidation, modules, performance ==
The 1980s were years of relative consolidation. [[C_Plus_Plus|C++]] combined object-oriented and systems programming. The United States government standardized [[Ada programming language|Ada]], a systems programming language intended for use by defense contractors. In Japan and elsewhere, vast sums were spent investigating so-called "fifth generation" languages that incorporated logic programming constructs. The functional languages community moved to standardize ML and Lisp. Rather than inventing new paradigms, all of these movements elaborated upon the ideas invented in the previous decade.
However, one important new trend in language design was an increased focus on programming for large-scale systems through the use of ''modules'', or large-scale organizational units of code. [[Modula programming language|Modula]], Ada, and ML all developed notable module systems in the 1980s. Module systems were often wedded to [[generic programming]] constructs---generics being, in essence, parameterized modules (see also [[parametric polymorphism]]).
Although major new paradigms for programming languages did not appear, many researchers expanded on the ideas of prior languages and adapted them to new contexts. For example, the languages of the [[Argus (computer system)|Argus]] and [[Emerald (computer system)|Emerald]] systems adapted object-oriented programming to [[distributed programming|distributed systems]].
The 1980s also brought advances in programming language implementation. The [[RISC]] movement in [[computer architecture]] postulated that hardware should be designed for [[compiler]]s rather than for human assembly programmers. Aided by [[Central Processing Unit|processor]] speed improvements that enabled increasingly aggressive compilation techniques, the RISC movement sparked greater interest in compilation technology for high-level languages.
Language technology continued along these lines well into the 1990s. However, the adoption of languages has always been driven by the adoption of new computer systems, and in the mid-1990s one of the most important new systems in computer history suddenly exploded in popularity.
Some important languages that were developed in this time period include:
* [[1983]] - [[Ada programming language|Ada]]
* [[1983]] - [[C++]]
Line 29 ⟶ 84:
* [[1987]] - [[Perl]]
* [[1989]] - [[FL programming language|FL]] (Backus)
== The 1990s: the Internet age ==
The rapid growth of the [[Internet]] in the mid-1990's was the next major historic event in programming languages. By opening up a radically new platform for computer systems, the Internet created an opportunity for new languages to be adopted. In particular, the [[Java programming language]] rose to popularity because of its early integration with the [[Netscape Navigator]] [[web browser]], and various [[scripting language]]s achieved widespread use in developing customized applications for [[web server]]s. Neither of these developments represented much fundamental novelty in language design; for example, the design of Java was a more conservative version of ideas explored many years earlier in the Smalltalk community, but the widespread adoption of languages that supported features like [[garbage collection (computer science)|garbage collection]] and [[strong typing|strong]] [[static typing|static typing]] was a major change in programming practice.
Some important languages that were developed in this time period include:
* [[1990]] - [[Haskell programming language|Haskell]]
* [[1990]] - [[Python programming language|Python]]
Line 35 ⟶ 96:
* [[2000]] - [[C sharp|C#]]
==
Programming language evolution continues, in both industry and research. Some current directions:
* Mechanisms for adding security and reliability verification to the language: extended static checking, information flow control, static [[thread-safe|thread safety]].
* Alternative mechanisms for modularity: [[mixin]]s, [[delegation|delegates]], [[aspect-oriented programming|aspects]].
* Component-oriented software development.
* Increased emphasis on distribution and mobility.
* Integration with databases, including [[XML]] and [[relational databases]].
* [[Open Source]] as a developmental philosophy for languages, including recent languages such as [[Python]], [[Ruby]], and [[Squeak]].
==External links==
Line 47 ⟶ 115:
* [http://www.scriptol.org/history.php History of programming languages] New concepts in each language, by Denis Sureau.
* [http://www.oreilly.com/news/graphics/prog_lang_poster.pdf Programming language timeline (PDF)]
[[Category:Lists of programming languages]]
[[Category:History of computing|Programming languages]]
|