Content deleted Content added
→2000s and 2010s: No need to mention the ref. name since other references used too. |
Replacing Kotlin_logo_2021.svg with File:Kotlin_logo_(2021-present).svg (by CommonsDelinker because: File renamed: Criterion 4 (harmonizing names of file set) · to match the name of othe |
||
(41 intermediate revisions by 15 users not shown) | |||
Line 22:
An early proposal for a [[high-level programming language]] was [[Plankalkül]], developed by [[Konrad Zuse]] for his [[Z1 (computer)|Z1 computer]] between 1942 and 1945 but not implemented at the time.<ref>In 1998 and 2000 compilers were created for the language as a historical exercise. [[Raúl Rojas|Rojas, Raúl]], et al. (2000). "Plankalkül: The First High-Level Programming Language and its Implementation". Institut frame Informatik, Freie Universität Berlin, Technical Report B-3/2000. [http://ftp.mi.fu-berlin.de/pub/reports/TR-B-00-03.pdf (full text)]</ref>
The first functioning programming languages designed to communicate instructions to a computer were written in the early 1950s. [[John Mauchly]]'s [[Short Code (computer language)|Short Code]], proposed in 1949, was one of the first high-level languages ever developed for an [[electronic computer]].<ref name=Sebesta>{{cite book |last=Sebesta |first=W.S. |date=2006 |title=Concepts of Programming Languages |page=44 |publisher=Pearson/Addison-Wesley |isbn=978-0-321-33025-3}}</ref> Unlike [[machine code]], Short Code statements represented [[Expression (mathematics)|mathematical expressions]] in understandable form. However, the program had to be [[Interpreter (computing)|interpreted]] into machine code every time it ran, making the process much slower than running the equivalent machine code.
<!-- [[WP:NFCC]] violation: [[File:Manchester Mark2.jpg|thumb|300px|The [[Manchester Mark 1]] ran programs written in [[Autocode]] from 1952.]] -->
Line 44:
* syntax and [[Semantics_(computer_science)|semantics]] became even more orthogonal, with anonymous routines, a recursive typing system with higher-order functions, etc.;
* not only the context-free part, but the full language syntax and semantics were defined formally, in terms of [[Van Wijngaarden grammar]], a formalism designed specifically for this purpose.
ALGOL 68's many little-used language features (for example, concurrent and parallel blocks) and its complex system of syntactic shortcuts and automatic type coercions made it unpopular with implementers and gained it a reputation of being
{{Multiple image
Line 85:
* 1967 – [[BCPL]] (forerunner to C)
* 1967 – [[Logo (programming language)|Logo]] (an educational language that later influenced [[Smalltalk]] and [[Scratch (programming language)|Scratch]]).
{{div col end}}
Line 108 ⟶ 109:
* '''[[Smalltalk]]''' (mid-1970s) provided a complete ground-up design of an object-oriented language.
* '''[[Prolog]]''', designed in 1972 by [[Alain Colmerauer]], Phillipe Roussel, and [[Robert Kowalski]], was the first [[logic programming]] language.
* '''[[ML (programming language)|ML]]''' built a polymorphic type system (invented by [[Robin Milner]] in 1973) on Lisp,<ref name="Gordon1996">{{cite web |last=Gordon |first=Michael J. C. |author-link=Michael J. C. Gordon |year=1996 |title=From LCF to HOL: a short history |url=http://www.cl.cam.ac.uk/~mjcg/papers/HolHistory.pdf |page=3 |quote=Edinburgh LCF, including the ML interpreter, was implemented in Lisp. |access-date=2015-05-04}}</ref> pioneering [[type system|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 <code>[[goto]]</code>. A significant fraction of programmers believed that, even in languages that provide <code>goto</code>, it is bad [[programming style]] to use it except in rare circumstances. This debate was closely related to language design: some languages had no <code>goto</code>, which forced the use of structured programming.
Line 194 ⟶ 197:
| image6 = Ruby logo.svg
| caption6 = Ruby
| image7 = OCaml_Logo.svg
| caption7 =
}}
The rapid growth of the Internet in the mid-1990s 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 [[JavaScript]] programming language rose to popularity because of its early integration with the Netscape Navigator web browser. Various other scripting languages achieved widespread use in developing customized applications for web servers such as PHP. The 1990s saw no fundamental novelty in [[imperative language]]s, but much recombination and maturation of old ideas. This era began the spread of [[functional language]]s. A big driving philosophy was programmer productivity. Many [[rapid application development]] (RAD) languages emerged, which usually came with an [[integrated development environment]] (IDE), [[Garbage collection (computer science)|garbage collection]], and were descendants of older languages. All such languages were [[Object-oriented programming|object-oriented]]. These included [[Object Pascal]], Objective Caml (renamed [[OCaml]]), [[Visual Basic (classic)|Visual Basic]], and [[Java (programming language)|Java]]. Java in particular received much attention.
Line 222 ⟶ 225:
{{div col end}}
== 2000s:
{{Multiple image
| align = right
Line 234 ⟶ 238:
| image3 = PowerShell Core 6.0 icon.png
| caption3 = PowerShell
| image4 = Rust programming language black logo.svg▼
| caption4 = Rust▼
| image5 = Scratchlogo.svg
| caption5 = Scratch
| image6 = Go Logo Blue.svg
| caption6 = Go
| image7 = Clojure_logo.svg
| caption7 = Clojure
| image8 = Haxe_logo.svg
| caption8 = Haxe
}}
Programming language evolution continues, and more programming paradigms are used in production.
Some of the trends have included:
* Increasing support for [[functional programming]] in mainstream languages used commercially, including [[purely functional programming]] for making code easier to reason about and to parallelize (at both micro- and macro- levels)▼
* Constructs to support [[Concurrent computing|concurrent]] and [[Distributed computing|distributed]] programming.▼
* Mechanisms for adding security and [[reliability verification]] to the language: extended static checking, [[dependent typing]], information flow control, static [[thread safety]].▼
* Alternative mechanisms for composability and modularity: [[mixin]]s, [[Trait (computer programming)|traits]], [[typeclass]]es, [[Delegation (programming)|delegates]], [[Aspect-oriented programming|aspects]].▼
* Component-oriented software development.▼
* More interest in [[visual programming language]]s like [[Scratch (programming language)|Scratch]], [[LabVIEW]], and [[PWCT]] ▼
* [[Metaprogramming]], [[reflective programming]] (reflection), or access to the [[abstract syntax tree]]▼
** [[Aspect-oriented programming]] (AOP) allowing developers to insert code in another module or class at "join points"▼
** [[Domain-specific language]]s and [[Automatic programming|code generation]]▼
*** XML for graphical interface ([[XUL]], [[Extensible Application Markup Language]] (XAML))▼
[[Big Tech]] companies introduced multiple new programming languages that are designed to serve their needs. for example:
* [[Microsoft]] introduced [[C Sharp (programming language)|C#]] and [[F Sharp (programming language)|F#]]
Some notable languages developed during this period include:
{{div col}}
* 2000 – [[ActionScript]]▼
* 2001 – [[C Sharp (programming language)|C#]]▼
* 2001 – [[D (programming language)|D]]▼
* 2002 – [[Scratch (programming language)|Scratch]]▼
* 2003 – [[Groovy (programming language)|Groovy]]▼
* 2003 – [[Scala (programming language)|Scala]]▼
* 2005 – [[F Sharp (programming language)|F#]]▼
* 2005 – [[Haxe]]
* 2006 – [[Windows PowerShell|PowerShell]]▼
* 2007 – [[Clojure]]
* 2008 – [[Nim (programming language)|Nim]]▼
* 2009 – [[Go (programming language)|Go]]
{{div col end}}
== 2010s: the Mobile age ==
{{Multiple image
| align = right
| direction = vertical
| width = 100
| header = Logos
▲| image4 = Rust programming language black logo.svg
▲| caption4 = Rust
| image7 = Dart programming language logo.svg
| caption7 = Dart
| image8 = Swift logo.svg
| caption8 = Swift
| image9= Kotlin logo (2021-present).svg
| caption9 = Kotlin
| image10 = Typescript.svg
Line 257 ⟶ 308:
| caption14 = Zig
}}
Programming language evolution continues with the rise of new programming domains.
▲* Increasing support for [[functional programming]] in mainstream languages used commercially, including [[purely functional programming]] for making code easier to reason about and to parallelize (at both micro- and macro- levels)
▲* Constructs to support [[Concurrent computing|concurrent]] and [[Distributed computing|distributed]] programming.
▲* Mechanisms for adding security and [[reliability verification]] to the language: extended static checking, [[dependent typing]], information flow control, static [[thread safety]].
▲* Alternative mechanisms for composability and modularity: [[mixin]]s, [[Trait (computer programming)|traits]], [[typeclass]]es, [[Delegation (programming)|delegates]], [[Aspect-oriented programming|aspects]].
▲* Component-oriented software development.
▲* [[Metaprogramming]], [[reflective programming]] (reflection), or access to the [[abstract syntax tree]]
▲** [[Aspect-oriented programming]] (AOP) allowing developers to insert code in another module or class at "join points"
▲** [[Domain-specific language]]s and [[Automatic programming|code generation]]
▲*** XML for graphical interface ([[XUL]], [[Extensible Application Markup Language]] (XAML))
* Increased interest in distribution and mobility.
* Integration with databases, including [[XML]] and [[relational database]]s.
* [[Open-source software|Open source]] as a developmental philosophy for languages, including the GNU Compiler Collection and languages such as [[PHP]], [[Python (programming language)|Python]], [[Ruby (programming language)|Ruby]], and [[Scala (programming language)|Scala]].
▲* More interest in [[visual programming language]]s like [[Scratch (programming language)|Scratch]], [[LabVIEW]], and [[PWCT]]
* Massively parallel languages for GPU graphics processing units and supercomputer arrays, including [[OpenCL]]
* Early research into [[quantum computing]] programming languages (see [[quantum programming|list]])
* Early research in applying [[artificial intelligence]] (AI) methods to generate code using AI like using [[GPT-3]] and [[Gemini (language model)|Gemini]].<ref name="NYT_Farhad_20190515">{{Cite news |last=Manjoo |first=Farhad |date=July 29, 2020 |title=How Do You Know a Human Wrote This? |work=[[The New York Times]] |access-date=August 4, 2020 |url=https://www.nytimes.com/2020/07/29/opinion/gpt-3-ai-automation.html |issn=0362-4331}}</ref><ref>{{Cite news |last=Milmo |first=Dan |date=2023-12-06 |title=Google says new AI model Gemini outperforms ChatGPT in most tests |url=https://www.theguardian.com/technology/2023/dec/06/google-new-ai-model-gemini-bard-upgrade |access-date=2024-02-26 |work=The Guardian |language=en-GB |issn=0261-3077}}</ref>
* Multiple new programming languages tried to provide a modern replacement for the C programming language.
* Many new programming languages are influenced by the popular dynamic languages and promised adding type safety without decreasing the productivity.
* Many new programming languages uses [[LLVM]] in their implementation.
Many [[Big Tech]] companies
* [[Microsoft]] introduced
* [[Google]] introduced
* [[Apple Inc.|Apple]] introduced [[Swift (programming language)|Swift]].
* [[Meta Platforms|Meta]] introduced [[Hack (programming language)|Hack]].
Line 284 ⟶ 330:
{{div col}}
▲* 2000 – [[ActionScript]]
▲* 2001 – [[C Sharp (programming language)|C#]]
▲* 2001 – [[D (programming language)|D]]
▲* 2002 – [[Scratch (programming language)|Scratch]]
▲* 2003 – [[Groovy (programming language)|Groovy]]
▲* 2003 – [[Scala (programming language)|Scala]]
▲* 2005 – [[F Sharp (programming language)|F#]]
▲* 2006 – [[Windows PowerShell|PowerShell]]
▲* 2007 – [[Clojure]]
▲* 2008 – [[Nim (programming language)|Nim]]
▲* 2009 – [[Go (programming language)|Go]]
* 2011 – [[Dart (programming language)|Dart]]
* 2011 – [[Kotlin (programming language)|Kotlin]]
Line 309 ⟶ 344:
Other new programming languages include [[Elm (programming language)|Elm]],
[[Ballerina (programming language)|Ballerina]], [[Red (programming language)|Red]], [[Crystal (programming language)|Crystal
== 2020s: Current trends ==
{{Multiple image
| align = right
| direction = vertical
| width = 100
| header = Logos
| image1 = Power_Fx_logo.png
| caption1 = Power Fx
| image2 = Carbon_logo.png
| caption2 = Carbon
}}
The development of new programming languages continues, and some new languages appears with focus on providing a replacement for current languages. These new languages try to provide the advantages of a known language like C++ (versatile and fast) while adding safety or reducing complexity. Other new languages try to bring ease of use as provided by Python while adding performance as a
* 2021 – [[Microsoft Power Fx|Power Fx]]
* 2022 – [[Carbon (programming language)|Carbon]]
* 2023 – [[Mojo (programming language)|Mojo]]
Line 348 ⟶ 394:
Some key people who helped develop programming languages:
* [[Ada Lovelace]], published first computer program
* [[Alan Cooper (software designer)|Alan Cooper]], developer of [[Visual Basic (classic)|Visual Basic]].
* [[Alan Kay]], pioneering work on object-oriented programming, and originator of [[Smalltalk]].
* [[Anders Hejlsberg]], developer of [[Turbo Pascal]], [[Delphi (software)|Delphi]], [[C Sharp (programming language)|C#]], and [[TypeScript]].
Line 358 ⟶ 404:
* [[Brian Kernighan]], co-author of the first book on the [[C (programming language)|C]] programming language with [[Dennis Ritchie]], coauthor of the [[AWK]] and [[AMPL (programming language)|AMPL]] programming languages.
* [[Charles H. Moore|Chuck Moore]], inventor of [[Forth (programming language)|Forth]], the first concatenative programming language, and a prominent name in [[stack machine]] microprocessor design.
* [[Chris Lattner]], creator of [[Swift (programming language)|Swift]], [[Mojo (programming language)|Mojo]] and [[Clang]]/[[LLVM]].
* [[Cleve Moler]], creator of [[MATLAB]].
* [[Dennis Ritchie]], inventor of [[C (programming language)|C]]. Unix Operating System, Plan 9 Operating System.
Line 425 ⟶ 471:
* [http://www.scriptol.com/programming/history.php History and evolution of programming languages]
* [http://www.levenez.com/lang/history.html Graph of programming language history]
* [http://hopl.info/ Online Historical Encyclopaedia of Programming Languages]
{{Programming languages}}
|