Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
History of programming languages
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{short description|none}} <!-- "none" is preferred when the title is sufficiently descriptive; see [[WP:SDNONE]] --> {{About||a detailed timeline of events|Timeline of programming languages|the [[Association for Computing Machinery|ACM]] conference series|History of Programming Languages}} {{broader|Programming language}} {{Lead too short|date=February 2018}} {{History of computing}} The '''history of programming languages''' spans from documentation of early mechanical computers to modern tools for [[software development]]. Early programming languages were highly specialized, relying on [[mathematical notation]] and similarly obscure [[Syntax_(programming_languages)|syntax]].<ref>Hopper (1978) p. 16.</ref> Throughout the 20th century, research in [[compiler]] theory led to the creation of [[high-level programming language]]s, which use a more accessible syntax to communicate instructions. The first high-level programming language was [[Plankalkül]], created by [[Konrad Zuse]] between 1942 and 1945.<ref>{{cite journal |last1=Knuth |first1=Donald E. |last2=Pardo |first2=Luis Trabb |title=Early development of programming languages |journal=Encyclopedia of Computer Science and Technology |volume=7 |pages=419–493 |publisher=Marcel Dekker}}</ref> The first high-level language to have an associated [[compiler]] was created by [[Corrado Böhm]] in 1951, for his [[Doctor of Philosophy|PhD]] thesis.<ref>[http://e-collection.library.ethz.ch/eserv/eth:32719/eth-32719-02.pdf Corrado Böhm's PhD thesis]</ref> The first commercially available language was [[FORTRAN]] (FORmula TRANslation), developed in 1956 (first manual appeared in 1956, but first developed in 1954) by a team led by [[John Backus]] at [[IBM]]. == Early history == During 1842–1849, [[Ada Lovelace]] translated the memoir of Italian mathematician [[Luigi Menabrea]] about [[Charles Babbage]]'s newest proposed machine: the [[Analytical Engine]]; she supplemented the memoir with notes that specified in detail a method for calculating [[Bernoulli number]]s with the engine, recognized by most of historians as the world's first published computer program.<ref>{{citation |last1=Fuegi |first1=J. |last2=Francis |first2=J. |title=Lovelace & Babbage and the creation of the 1843 'notes'|journal=Annals of the History of Computing |volume=25 |issue=4|date=October–December 2003 |doi=10.1109/MAHC.2003.1253887 |pages=16–26}}</ref> [[Jacquard Loom]]s and Charles Babbage's [[Difference engine|Difference Engine]] both were designed to utilize [[punched card]]s,<ref name="Bales">{{cite web |last=Bales |first=Rebecca |title=Charles Babbage Analytical Engine Explained|url=https://history-computer.com/charles-babbage-analytical-engine/|website=history-computer.com|date=24 July 2023}}</ref><ref name="Swade">{{cite web |last=Swade |first=Doron |title=The Engines|url=https://www.computerhistory.org/babbage/engines/|website=computerhistory.org|access-date=23 February 2024}}</ref> which would describe the sequence of operations that their programmable machines should perform. The first computer [[Source code|codes]] were specialized for their applications: e.g., [[Alonzo Church]] was able to express the [[lambda calculus]] in a formulaic way and the [[Turing machine]] was an abstraction of the operation of a tape-marking machine. == First programming languages == In the 1940s, the first recognizably modern electrically powered computers were created. The limited speed and [[Computer data storage|memory capacity]] forced programmers to write hand-tuned [[assembly language]] programs. It was eventually realized that programming in assembly language required a great deal of intellectual effort.{{Citation needed|date=June 2022|reason=great deal of intellectual effort?}} 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.]] --> In the early 1950s, [[Alick Glennie]] developed [[Autocode]], possibly the first compiled programming language, at the [[University of Manchester]]. In 1954, a second iteration of the language, known as the "Mark 1 Autocode", was developed for the [[Harvard Mark I|Mark 1]] by [[Tony Brooker|R. A. Brooker]]. Brooker, with the University of Manchester, also developed an autocode for the [[Ferranti Mercury]] in the 1950s. The version for the [[EDSAC]] 2 was devised by [[Douglas Hartree]] of [[University of Cambridge Mathematical Laboratory]] in 1961. Known as EDSAC 2 Autocode, it was a straight development from Mercury Autocode adapted for local circumstances and was noted for its [[object code]] optimization and source-language diagnostics which were advanced for the time. A contemporary but separate thread of development, [[Atlas Autocode]] was developed for the [[University of Manchester]] [[Atlas Computer (Manchester)|Atlas 1]] machine. In 1954, [[FORTRAN]] was invented at IBM by a team led by [[John Backus]]; it was the first widely used high-level general purpose language to have a functional implementation, in contrast to only a design on paper.<ref>{{cite web |url=https://www.nbcnews.com/id/wbna17704662 |title=Fortran creator John Backus dies – Tech and gadgets |publisher=NBC News |date=2007-03-20 |access-date=2010-04-25}}</ref><ref>{{cite web |url=http://www.math.grin.edu/~rebelsky/Courses/CS302/99S/Outlines/outline.02.html |title=CSC-302 99S : Class 02: A Brief History of Programming Languages |publisher=Math.grin.edu |access-date=2010-04-25 |archive-url=https://web.archive.org/web/20100715042920/http://www.math.grin.edu/~rebelsky/Courses/CS302/99S/Outlines/outline.02.html |archive-date=2010-07-15 |url-status=dead}}</ref> When FORTRAN was first introduced, it was viewed with skepticism due to bugs, delays in development, and the comparative efficiency of "hand-coded" programs written in assembly.<ref>{{cite journal |last1=Padua |first1=David |title=The FORTRAN I Compiler |journal=Computing in Science and Engineering |date=Feb 2000 |volume=2 |issue=1 |pages=70–75 |doi=10.1109/5992.814661 |bibcode=2000CSE.....2a..70P |url=http://www.cs.fsu.edu/~lacher/courses/COT4401/notes/cise_v2_i1/fortran.pdf |access-date=7 November 2019}}</ref> However, in a hardware market that was rapidly evolving, the language eventually became known for its efficiency. It is still a popular language for [[high-performance computing]]<ref name=hpc>{{cite journal|url=http://queue.acm.org/detail.cfm?id=1820518|author=Eugene Loh|title=The Ideal HPC Programming Language|journal=Queue|date=18 June 2010 |publisher=Association of Computing Machines|volume=8|issue=6}}</ref> and is used for programs that benchmark and rank the world's [[TOP500]] fastest supercomputers.<ref>{{cite web |title=HPL – A Portable Implementation of the High-Performance Linpack Benchmark for Distributed-Memory Computers |access-date=2015-02-21 |url=http://www.netlib.org/benchmark/hpl}}</ref> Another early programming language was devised by [[Grace Hopper]] in the US, named [[FLOW-MATIC]]. It was developed for the [[UNIVAC I]] at [[Remington Rand]] during the period from 1955 until 1959. Hopper found that business [[data processing]] customers were uncomfortable with [[mathematical notation]], and in early 1955, she and her team wrote a specification for an [[English language]] programming language and implemented a prototype.<ref>Hopper (1978) p. 16.</ref> The FLOW-MATIC compiler became publicly available in early 1958 and was substantially complete in 1959.<ref>Sammet (1969) p. 316</ref> Flow-Matic was a major influence in the design of [[COBOL]], since only it and its direct descendant [[AIMACO]] were in use at the time.<ref>Sammet (1978) p. 204.</ref> Other languages still in use today include [[Lisp (programming language)|LISP]] (1958), invented by [[John McCarthy (computer scientist)|John McCarthy]] and [[COBOL]] (1959), created by the Short Range Committee. 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 three key language innovations: * nested block structure: code sequences and associated declarations could be grouped into [[block (programming)|blocks]] without having to be turned into separate, explicitly named procedures; * [[Scope (programming)|lexical scoping]]: a block could have its own private variables, procedures and functions, invisible to code outside that block, that is, [[information hiding]]. Another innovation, related to this, was in how the language was described: * a mathematically exact notation, [[Backus–Naur form]] (BNF), was used to describe 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. [[ALGOL 60]] was particularly influential in the design of later languages, some of which soon became more popular. The [[Burroughs large systems]] were designed to be programmed in an extended subset of ALGOL. ALGOL's key ideas were continued, producing [[ALGOL 68]]: * 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 ''difficult''. [[Niklaus Wirth]] actually walked out of the design committee to create the simpler [[Pascal (programming language)|Pascal]] language. {{Multiple image | align = right | direction = vertical | width = 100 | header = Logos | image1 = Fortran acs cover.jpeg | caption1 = Fortran | image2 = Lisp logo.svg | caption2 = Lisp | image3 = Simula - logo.svg | caption3 = Simula }} Some notable languages that were developed in this period include: {{div col}} * 1951 – [[Assembly language|Regional Assembly Language]] * 1952 – [[Autocode]] * 1954 – [[Information Processing Language|IPL]] (forerunner to LISP) * 1955 – [[FLOW-MATIC]] (led to COBOL) * 1957 – [[Fortran|FORTRAN]] (first compiler) * 1957 – [[COMTRAN]] (precursor to COBOL) * 1958 – [[Lisp (programming language)|LISP]] * 1958 – [[ALGOL 58]] * 1959 – [[FACT computer language|FACT]] (forerunner to COBOL) * 1959 – [[COBOL]] * 1959 – [[IBM RPG|RPG]] * 1960 – [[ALGOL 60]] * 1962 – [[APL (programming language)|APL]] * 1962 – [[Simula]] * 1962 – [[SNOBOL]] * 1963 – [[Combined Programming Language|CPL]] (forerunner to C) * 1964 – [[Speakeasy (computational environment)|Speakeasy]] * 1964 – [[BASIC]] * 1964 – [[PL/I]] * 1966 – [[JOSS]] * 1966 – [[MUMPS]] * 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}} == Establishing fundamental paradigms == {{Multiple image | align = right | direction = vertical | width = 100 | header = Logos | image1 = Lambda lc.svg | caption1 = Scheme | image2= The C Programming Language logo.svg | caption2 = C | image3= Smalltalk Balloon.svg | caption3 = Smalltalk }} The period from the late 1960s to the late 1970s brought a major flowering of programming languages. Most of the major language [[Programming_paradigm|paradigms]] now in use were invented in this period:{{Original research inline|date=May 2018}} * '''[[Speakeasy (computational environment)|Speakeasy]]''', developed in 1964 at [[Argonne National Laboratory]] (ANL) by [[Stanley Cohen (physicist)|Stanley Cohen]], is an [[object-oriented programming]] system (OOPS), much like the later [[MATLAB]], [[IDL (programming language)|IDL]] and [[Mathematica]] numerical package. Speakeasy has a clear [[Fortran]] foundation syntax. It first addressed efficient physics computing internally at ANL, was modified for research use (as "Modeleasy") for the [[Federal Reserve Board]] in the early 1970s and then was made available commercially; Speakeasy and Modeleasy are still in use. * '''[[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]]. * '''[[Forth (programming language)|FORTH]]''', the earliest [[concatenative programming language]] was designed by Charles Moore in 1969 as a personal development system while at the [[National Radio Astronomy Observatory]] (NRAO). * '''[[C (programming language)|C]]''', an early [[system programming|systems programming]] language, was developed by [[Dennis Ritchie]] and [[Ken Thompson]] at [[Bell Labs]] between 1969 and 1973. * '''[[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. To provide even faster compile times, some languages were structured for "[[one-pass compiler]]s" which expect subordinate routines to be defined first, as with [[Pascal (programming language)|Pascal]], where the main routine, or driver function, is the final section of the program listing. Some notable languages that were developed in this period include: {{div col}} * 1967 – [[BCPL]] (forerunner to B) * 1967 – [[Logo (programming language)|Logo]] * 1969 – [[B (programming language)|B]] (forerunner to C) * 1970 – [[Pascal (programming language)|Pascal]] * 1970 – [[Forth (programming language)|Forth]] * 1972 – [[C (programming language)|C]] * 1972 – [[Smalltalk]] * 1972 – [[Prolog]] * 1973 – [[ML (programming language)|ML]] * 1975 – [[Scheme (programming language)|Scheme]] * 1978 – [[SQL]] (a query language, later extended) {{div col end}} == 1980s: consolidation, modules, performance == {{Multiple image | align = right | direction = vertical | width = 100 | header = Logos | image1 = Matlab Logo.png | caption1 = MATLAB | image2 = Erlang logo.png | caption2 = Erlang | image3 = Tcl-powered.svg | caption3 = Tcl | image4 = ISO C++ Logo.svg | caption4= C++ | image5 = | caption5= Perl | image6 = | caption6 = Wolfram }} The 1980s were years of relative consolidation in [[imperative language]]s. Rather than inventing new paradigms, all of these movements elaborated upon the ideas invented in the prior decade. [[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 programming language]]s that incorporated logic programming constructs. The functional languages community moved to standardize ML and Lisp. Research in [[Miranda (programming language)|Miranda]], a functional language with [[lazy evaluation]], began to take hold in this decade. 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]], Ada, and ML all developed notable module systems in the 1980s. Module systems were often wedded to [[generic programming]] constructs: generics being, in essence, parametrized modules{{citation needed|date=August 2017}} (see also [[Polymorphism (computer science)]]). Although major new paradigms for imperative 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 systems adapted object-oriented programming to [[distributed computing]] systems. The 1980s also brought advances in programming language implementation. The [[reduced instruction set computer]] (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]] (CPU) speed improvements that enabled increasingly aggressive compiling methods, the RISC movement sparked greater interest in compiler technology for high-level languages. Language technology continued along these lines well into the 1990s. <!-- However, adoption of languages has always been driven by 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 notable languages that were developed in this period include: {{div col}} * 1980 – [[C++]] (as [[C with classes]], renamed in 1983) * 1983 – [[Ada (programming language)|Ada]] * 1984 – [[Common Lisp]] * 1984 – [[MATLAB]] * 1984 – dBase III, dBase III Plus ([[Clipper (programming language)|Clipper]] and [[FoxPro]] as [[FoxBASE]]) * 1985 – [[Eiffel (programming language)|Eiffel]] * 1986 – [[Objective-C]] * 1986 – [[LabVIEW]] ([[visual programming language]]) * 1986 – [[Erlang (programming language)|Erlang]] * 1987 – [[Perl]] * 1988 – [[PIC (markup language)]] * 1988 – [[Tcl]] * 1988 – [[Wolfram Language]] (as part of [[Mathematica]], only got a separate name in June 2013) * {{nowrap|1989 – [[FL (programming language)|FL]] (Backus)}} {{div col end}} == 1990s: the Internet age == {{Multiple image | align = right | direction = vertical | width = 100 | header = Logos | image1 = Haskell-Logo.svg | caption1 = Haskell | image2 = Lua-Logo.svg | caption2 = Lua | image3 = PHP Logo.png | caption3 = PHP | image4 = Rebol logo.png | caption4 = Rebol | image5 = Python-logo-notext.svg | caption5 = Python | image6 = Ruby logo.svg | caption6 = Ruby | image7 = OCaml_Logo.svg | caption7 = Ocaml }} 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. More radical and innovative than the RAD languages were the new [[scripting language]]s. These did not directly descend from other languages and featured new syntaxes and more liberal incorporation of features. Many consider these scripting languages to be more productive than even the RAD languages, but often because of choices that make small programs simpler but large programs more difficult to write and maintain.{{Citation needed|date=June 2009}} Nevertheless, scripting languages came to be the most prominent ones used in connection with the Web. Some programming languages included other languages in their distribution to save the development time. for example both of [[Python (programming language)|Python]] and [[Ruby (programming language)|Ruby]] included [[Tcl]] to support [[Graphical_user_interface|GUI]] programming through libraries like [[Tkinter]]. Some notable languages that were developed in this period include: {{div col}} * 1990 – [[Haskell]] * 1991 – [[Python (programming language)|Python]] * 1991 – [[Visual Basic (classic)|Visual Basic]] * 1993 – [[Lua (programming language)|Lua]] * 1993 – [[R (programming language)|R]] * 1994 – [[CLOS]] (part of ANSI [[Common Lisp]]) * 1995 – [[Ruby (programming language)|Ruby]] * 1995 – [[Ada 95]] * 1995 – [[Java (programming language)|Java]] * {{nowrap|1995 – [[Delphi (software)|Delphi]] ([[Object Pascal]])}} * 1995 – [[Visual FoxPro]] * 1995 – [[JavaScript]] * 1995 – [[PHP]] * 1996 – [[OCaml]] * 1997 – [[Rebol]] {{div col end}} == 2000s: programming paradigms == {{Multiple image | align = right | direction = vertical | width = 100 | header = Logos | image1 = D Programming Language logo.svg | caption1 = D | image2 = Groovy-logo.svg | caption2 = Groovy | image3 = PowerShell Core 6.0 icon.png | caption3 = PowerShell | 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#]] * [[Google]] introduced [[Go (programming language)|Go]] 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.svg | caption9 = Kotlin | image10 = Typescript.svg | caption10 = TypeScript | image11 = C Sharp Logo 2023.svg | caption11 = C# | image12 = Ringlogo transparent.png | caption12 = Ring | image13 = Julia Programming Language Logo.svg | caption13 = Julia | image14 = Zig logo 2020.svg | caption14 = Zig }} Programming language evolution continues with the rise of new programming domains. * 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]]. * 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 continued introducing new programming languages that are designed to serve their needs and provides first-class support for their platforms. for example: * [[Microsoft]] introduced [[TypeScript]], [[Q Sharp|Q#]] and [[Bosque (programming language)|Bosque]] * [[Google]] introduced [[Dart (programming language)|Dart]] * [[Apple Inc.|Apple]] introduced [[Swift (programming language)|Swift]]. * [[Meta Platforms|Meta]] introduced [[Hack (programming language)|Hack]]. Some notable languages developed during this period include:<ref name="TIOBE Index">{{cite web |url=https://www.tiobe.com/tiobe-index/ |title=TIOBE Index, Top 100 programming languages according to TIOBE Index |author=<!-- Unstated staff writer. --> |date=22 February 2024 |work=www.tiobe.com |publisher=[[TIOBE index]]}}</ref><ref name="GitHub's Octoverse 2018">{{cite web |url=https://octoverse.github.com/projects |archive-url=https://web.archive.org/web/20190322190823/https://octoverse.github.com/projects |url-status=dead |archive-date=2019-03-22 |title=GitHub's Octoverse 2018}}</ref> {{div col}} * 2011 – [[Dart (programming language)|Dart]] * 2011 – [[Kotlin (programming language)|Kotlin]] * 2012 – [[Julia (programming language)|Julia]] * 2012 – [[TypeScript]] * 2012 – [[Elixir (programming language)|Elixir]] * 2014 – [[Swift (programming language)|Swift]] * 2014 – [[Hack (programming language)|Hack]] * 2015 – [[Rust (programming language)|Rust]] * 2015 – [[Raku (programming language)|Raku]] * 2016 – [[Ring (programming language)|Ring]] * 2016 – [[Zig (programming language)|Zig]] {{div col end}} Other new programming languages include [[Elm (programming language)|Elm]], [[Ballerina (programming language)|Ballerina]], [[Red (programming language)|Red]], [[Crystal (programming language)|Crystal]], [[V (programming language)|V (Vlang)]], [[Reason (programming language)|Reason]]. == 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 priority. Also, the growing of Machine Learning and AI tools still plays a big rule behind these languages' development, where some visual languages focus on integrating these AI tools while other textual languages focus on providing more suitable support for developing them. <ref>{{cite web | url=https://www.microsoft.com/en-us/power-platform/blog/power-apps/introducing-the-new-copilot-features-for-power-fx/ | title=Introducing new Copilot features for Power Fx | website=[[Microsoft]] | date=29 April 2024 }}</ref><ref>{{cite web | url=https://www.infoworld.com/article/2336275/carbon-language-aims-to-be-a-better-c-plus-plus.html | title=Carbon language aims to be a better C++ }}</ref><ref>{{cite web | url=https://devops.com/modular-makes-a-case-for-mojo-programming-language-based-on-python/ | title=Modular Makes a Case for Mojo Programming Language, Based on Python | date=5 April 2024 }}</ref> Some notable new programming languages include: * 2021 – [[Microsoft Power Fx|Power Fx]] * 2022 – [[Carbon (programming language)|Carbon]] * 2023 – [[Mojo (programming language)|Mojo]] == Key figures == {{multiple image | align = right | direction = vertical | width = 100 | header = Some innovators | image1 = Dennis Ritchie 2011.jpg | caption1 = Dennis Ritchie | image2 = Niklaus Wirth, UrGU.jpg | caption2 = Niklaus Wirth | image3 = Grace Hopper.jpg | caption3 = Grace M. Hopper | image4 = BjarneStroustrup.jpg | caption4 = Bjarne Stroustrup | image5 = Anders Hejlsberg.jpg | caption5 = Anders Hejlsberg | image6 = Guido-portrait-2014-drc.jpg | caption6 = Guido van Rossum | image7 = Yukihiro Matsumoto EuRuKo 2011.jpg | caption7 = Yukihiro Matsumoto | image8 = James Gosling 2008.jpg | caption8 = James Gosling | image9 = Larry Wall YAPC 2007.jpg | caption9 = Larry Wall }} 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]]. * [[Arthur Whitney (computer scientist)|Arthur Whitney]], developer of [[A+ (programming language)|A+]], [[K (programming language)|k]], and [[Q (programming language from Kx Systems)|q]]. * [[Bertrand Meyer]], inventor of [[Eiffel (programming language)|Eiffel]]. * [[Bjarne Stroustrup]], developer of [[C++]]. * [[Brad Cox]], co-creator of [[Objective-C]]. * [[Brendan Eich]], developer of [[JavaScript]]. * [[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. * [[Douglas McIlroy]], influenced and designed such languages as [[SNOBOL]], [[TRAC (programming language)|TRAC]], [[PL/I]], [[ALTRAN]], [[TMG (language)|TMG]] and [[C++]]. * [[Grace Hopper]], first to use the term [[compiler]] and developer of [[FLOW-MATIC]], influenced development of [[COBOL]]. Popularized machine-independent programming languages and the term "[[debugging]]". * [[Guido van Rossum]], creator of [[Python (programming language)|Python]]. * [[James Gosling]], lead developer of [[Java (programming language)|Java]] and its precursor, [[Oak (programming language)|Oak]]. * [[Jean Ichbiah]], chief designer of [[Ada (programming language)|Ada]], [[Ada 83]]. * [[Jean-Yves Girard]], co-inventor of the [[polymorphic lambda calculus]] (System F). * [[Jeff Bezanson]], main designer, and one of the core developers of [[Julia (programming language)|Julia]]. * [[Jeffrey Snover]], inventor of [[PowerShell]]. * [[Joe Armstrong (programming)|Joe Armstrong]], creator of [[Erlang (programming language)|Erlang]]. * [[John Backus]], inventor of [[Fortran]], cooperated in designing [[ALGOL 58]] and [[ALGOL 60]]. * [[John C. Reynolds]], co-inventor of the polymorphic lambda calculus (System F). * [[John McCarthy (computer scientist)|John McCarthy]], inventor of [[Lisp (programming language)|LISP]], design committee of [[ALGOL 60]]. * [[John von Neumann]], originator of the [[operating system]] concept. * [[Rust (programming language)|Graydon Hoare]], inventor of [[Rust (programming language)|Rust]]. * [[Ken Thompson]], inventor of [[B (programming language)|B]] and [[Go (programming language)|Go]]. * [[Kenneth E. Iverson]], developer of [[APL (programming language)|APL]], co-developer of [[J (programming language)|J]] with [[Roger Hui]]. * [[Konrad Zuse]], designed the first [[high-level programming language]], [[Plankalkül]] (which influenced [[ALGOL 58]]<ref>{{cite book |last1=Rojas |first1=Raúl |last2=Hashagen |first2=Ulf |year=2002 |title=The First Computers: History and Architectures |page=292 |url=https://books.google.com/books?id=nDWPW9uwZPAC&q=algol-68+konrad+zuse&pg=PA292 |publisher=MIT Press |isbn=978-0262681377 |access-date=October 25, 2013}}</ref>). * [[Kristen Nygaard]], pioneered object-oriented programming, co-invented [[Simula]]. * [[Larry Wall]], creator of the Perl programming language (see [[Perl]] and [[Raku (programming language)|Raku]]). * [[Martin Odersky]], creator of [[Scala (programming language)|Scala]], and previously a contributor to the design of [[Java (programming language)|Java]]. * [[Martin Richards (computer scientist)|Martin Richards]] developed the [[BCPL]] programming language, forerunner of the [[B (programming language)|B]] and [[C (programming language)|C]] languages. * [[Nathaniel Rochester (computer scientist)|Nathaniel Rochester]], inventor of first [[Assembler (computing)|assembler]] (IBM 701). * [[Niklaus Wirth]], inventor of [[Pascal (programming language)|Pascal]], [[Modula]] and [[Oberon (programming language)|Oberon]]. * [[Ole-Johan Dahl]], pioneered object-oriented programming, co-invented [[Simula]]. * [[Rasmus Lerdorf]], creator of [[PHP]]. * [[Rich Hickey]], creator of [[Clojure]]. * [[Robert Gentleman (statistician)|Robert Gentleman]], co-creator of [[R (programming language)|R]]. * [[Robert Griesemer]], co-creator of [[Go (programming language)|Go]]. * [[Robin Milner]], inventor of [[ML (programming language)|ML]], and sharing credit for [[Hindley–Milner]] [[parametric polymorphism|polymorphic]] [[type inference]]. * [[Rob Pike]], co-creator of [[Go (programming language)|Go]], [[Inferno (operating system)]] and [[Plan 9 (operating system)]] Operating System co-author. * [[Ross Ihaka]], co-creator of [[R (programming language)|R]]. * [[Stanley Cohen (physicist)|Stanley Cohen]], inventor of [[Speakeasy (computational environment)|Speakeasy]], which was created with an OOPS, object-oriented programming system, the first instance, in 1964. * [[Stephen Wolfram]], creator of [[Mathematica]]. * [[Walter Bright]], creator of [[D (programming language)|D]]. * [[Yukihiro Matsumoto]], creator of [[Ruby (programming language)|Ruby]]. == See also == {{div col}} * [[Association for Computing Machinery]] (ACM) * [[SIGPLAN]] * [[History of Programming Languages Conference]] * [[History of compiler construction]] * [[History of computing hardware]] * [[Programming language]] * [[Timeline of computing]] * [[Timeline of programming languages]] * [[List of programming languages]] * [[List of programmers]] {{div col end}} == References == {{Reflist}} == Further reading == * [[Saul Rosen|Rosen, Saul]], (editor), ''Programming Systems and Languages'', McGraw-Hill, 1967. * [[Jean E. Sammet|Sammet, Jean E.]], ''Programming Languages: History and Fundamentals'', Prentice-Hall, 1969. * {{cite journal |last=Sammet |first=Jean E. |title=Programming Languages: History and Future |journal=Communications of the ACM |volume=15 |issue=7 |date=July 1972 |pages=601–610 |doi=10.1145/361454.361485 |s2cid=2003242|doi-access=free }} * [[Richard L. Wexelblat]] (ed.): ''History of Programming Languages'', [[Academic Press]] 1981. * Thomas J. Bergin and Richard G. Gibson (eds.): ''History of Programming Languages'', Addison Wesley, 1996. * Sebesta, Robert W. Concepts of programming languages. Pearson Education India, 2004. == External links == * [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}} {{DEFAULTSORT:Programming languages}} [[Category:History of computing]] [[Category:History of computer science]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:About
(
edit
)
Template:Broader
(
edit
)
Template:Citation
(
edit
)
Template:Citation needed
(
edit
)
Template:Cite book
(
edit
)
Template:Cite journal
(
edit
)
Template:Cite news
(
edit
)
Template:Cite web
(
edit
)
Template:Div col
(
edit
)
Template:Div col end
(
edit
)
Template:History of computing
(
edit
)
Template:Lead too short
(
edit
)
Template:Multiple image
(
edit
)
Template:Nowrap
(
edit
)
Template:Original research inline
(
edit
)
Template:Programming languages
(
edit
)
Template:Reflist
(
edit
)
Template:Short description
(
edit
)
Template:Sidebar
(
edit
)