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
Programming language
(section)
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!
==History== {{Main|History of programming languages}} ===Early developments=== The first programmable computers were invented at the end of the 1940s, and with them, the first programming languages.{{sfn|Gabbrielli|Martini|2023|p=519}} The earliest computers were programmed in [[first-generation programming language]]s (1GLs), [[machine language]] (simple instructions that could be directly executed by the processor). This code was very difficult to debug and was not [[portability (computing)|portable]] between different computer systems.{{sfn|Gabbrielli|Martini|2023|pp=520–521}} In order to improve the ease of programming, [[assembly languages]] (or [[second-generation programming language]]s—2GLs) were invented, diverging from the machine language to make programs easier to understand for humans, although they did not increase portability.{{sfn|Gabbrielli|Martini|2023|p=521}} Initially, hardware resources were scarce and expensive, while [[human resources]] were cheaper. Therefore, cumbersome languages that were time-consuming to use, but were closer to the hardware for higher efficiency were favored.{{sfn|Gabbrielli|Martini|2023|p=522}} The introduction of [[high-level programming language]]s ([[third-generation programming language]]s—3GLs)—revolutionized programming. These languages [[abstraction (computing)|abstracted]] away the details of the hardware, instead being designed to express algorithms that could be understood more easily by humans. For example, arithmetic expressions could now be written in symbolic notation and later translated into machine code that the hardware could execute.{{sfn|Gabbrielli|Martini|2023|p=521}} In 1957, [[Fortran]] (FORmula TRANslation) was invented. Often considered the first [[compiler|compiled]] high-level programming language,{{sfn|Gabbrielli|Martini|2023|p=521}}{{sfn|Sebesta|2012|p=42}} Fortran has remained in use into the twenty-first century.{{sfn|Gabbrielli|Martini|2023|p=524}} ===1960s and 1970s=== [[File:IBM Electronic Data Processing Machine - GPN-2000-001881.jpg|thumb|Two people using an [[IBM 704]] [[mainframe]]—the first hardware to support [[floating-point arithmetic]]—in 1957. [[Fortran]] was designed for this machine.{{sfn|Sebesta|2012|pp=42–44}}{{sfn|Gabbrielli|Martini|2023|p=524}}]] Around 1960, the first [[mainframes]]—general purpose computers—were developed, although they could only be operated by professionals and the cost was extreme. The data and instructions were input by [[punch cards]], meaning that no input could be added while the program was running. The languages developed at this time therefore are designed for minimal interaction.{{sfn|Gabbrielli|Martini|2023|pp=523–524}} After the invention of the [[microprocessor]], computers in the 1970s became dramatically cheaper.{{sfn|Gabbrielli|Martini|2023|p=527}} New computers also allowed more user interaction, which was supported by newer programming languages.{{sfn|Gabbrielli|Martini|2023|p=528}} [[Lisp (programming language)|Lisp]], implemented in 1958, was the first [[functional programming]] language.<ref>{{Cite web|url=https://twobithistory.org/2018/10/14/lisp.html|title=How Lisp Became God's Own Programming Language|website=twobithistory.org|access-date=10 April 2024|archive-date=10 April 2024|archive-url=https://web.archive.org/web/20240410060444/https://twobithistory.org/2018/10/14/lisp.html|url-status=live}}</ref> Unlike Fortran, it supported [[recursion]] and [[conditional expression]]s,{{sfn|Sebesta|2012|pp=47–48}} and it also introduced [[dynamic memory management]] on a [[heap (computer science)|heap]] and automatic [[Garbage collection (computer science)|garbage collection]].{{sfn|Gabbrielli|Martini|2023|p=526}} For the next decades, Lisp dominated [[artificial intelligence]] applications.{{sfn|Sebesta|2012|p=50}} In 1978, another functional language, [[ML (programming language)|ML]], introduced [[type inference|inferred types]] and polymorphic [[Parameter (computer programming)|parameter]]s.{{sfn|Gabbrielli|Martini|2023|p=528}}{{sfn|Sebesta|2012|pp=701–703}} After [[ALGOL]] (ALGOrithmic Language) was released in 1958 and 1960,{{sfn|Gabbrielli|Martini|2023|pp=524–525}} it became the standard in computing literature for describing [[algorithm]]s. Although its commercial success was limited, most popular imperative languages—including [[C (programming language)|C]], [[Pascal (programming language)|Pascal]], [[Ada (programming language)|Ada]], [[C++]], [[Java (programming language)|Java]], and [[C Sharp (programming language)|C#]]—are directly or indirectly descended from ALGOL 60.{{sfn|Sebesta|2012|pp=56–57}}{{sfn|Gabbrielli|Martini|2023|p=524}} Among its innovations adopted by later programming languages included greater portability and the first use of [[context-free grammar|context-free]], [[Backus–Naur form|BNF]] grammar.{{sfn|Gabbrielli|Martini|2023|p=525}} [[Simula]], the first language to support [[object-oriented programming]] (including [[subtypes]], [[dynamic dispatch]], and [[inheritance (computer science)|inheritance]]), also descends from ALGOL and achieved commercial success.{{sfn|Gabbrielli|Martini|2023|pp=526–527}} C, another ALGOL descendant, has sustained popularity into the twenty-first century. C allows access to lower-level machine operations more than other contemporary languages. Its power and efficiency, generated in part with flexible [[Pointer (computer programming)|pointer]] operations, comes at the cost of making it more difficult to write correct code.{{sfn|Gabbrielli|Martini|2023|p=528}} [[Prolog]], designed in 1972, was the first [[logic programming]] language, communicating with a computer using formal logic notation.{{sfn|Gabbrielli|Martini|2023|p=531}}{{sfn|Sebesta|2012|p=79}} With logic programming, the programmer specifies a desired result and allows the [[interpreter (computer science)|interpreter]] to decide how to achieve it.{{sfn|Gabbrielli|Martini|2023|p=530}}{{sfn|Sebesta|2012|p=79}} ===1980s to 2000s=== [[File:Bangalore India Tech books for sale IMG 5261.jpg|thumb|right|A small selection of programming language textbooks]] During the 1980s, the invention of the [[personal computer]] transformed the roles for which programming languages were used.{{sfn|Gabbrielli|Martini|2023|pp=532–533}} New languages introduced in the 1980s included C++, a [[superset]] of C that can compile C programs but also supports [[Class (computer programming)|classes]] and [[Inheritance (object-oriented programming)|inheritance]].{{sfn|Gabbrielli|Martini|2023|p=534}} [[Ada (programming language)|Ada]] and other new languages introduced support for [[Concurrency (computer science)|concurrency]].{{sfn|Gabbrielli|Martini|2023|pp=534–535}} The Japanese government invested heavily into the so-called [[Fifth-generation programming language|fifth-generation languages]] that added support for concurrency to logic programming constructs, but these languages were outperformed by other concurrency-supporting languages.{{sfn|Gabbrielli|Martini|2023|p=535}}{{sfn|Sebesta|2012|p=736}} Due to the rapid growth of the [[Internet]] and the [[World Wide Web]] in the 1990s, new programming languages were introduced to support [[Web pages]] and [[Computer network |networking]].{{sfn|Gabbrielli|Martini|2023|p=536}} [[Java (programming language)|Java]], based on C++ and designed for increased portability across systems and security, enjoyed large-scale success because these features are essential for many Internet applications.{{sfn|Gabbrielli|Martini|2023|pp=536–537}}{{sfn|Sebesta|2012|pp=91–92}} Another development was that of [[type system|dynamically typed]] [[scripting languages]]—[[Python (programming language)|Python]], [[JavaScript]], [[PHP]], and [[Ruby (programming language)|Ruby]]—designed to quickly produce small programs that coordinate existing [[Application software|application]]s. Due to their integration with [[HTML]], they have also been used for building web pages hosted on [[Server (computing)|server]]s.{{sfn|Gabbrielli|Martini|2023|pp=538–539}}{{sfn|Sebesta|2012|pp=97–99}} ===2000s to present=== During the 2000s, there was a slowdown in the development of new programming languages that achieved widespread popularity.{{sfn|Gabbrielli|Martini|2023|p=542}} One innovation was [[service-oriented programming]], designed to exploit [[distributed systems]] whose components are connected by a network. Services are similar to objects in object-oriented programming, but run on a separate process.{{sfn|Gabbrielli|Martini|2023|pp=474–475, 477, 542}} [[C Sharp (programming language)|C#]] and [[F Sharp (programming language)|F#]] cross-pollinated ideas between imperative and functional programming.{{sfn|Gabbrielli|Martini|2023|pp=542–543}} After 2010, several new languages—[[Rust (programming language)|Rust]], [[Go (programming language)|Go]], [[Swift (programming language)|Swift]], [[Zig (programming language)|Zig]] and [[Carbon (programming language)|Carbon]] —competed for the performance-critical software for which C had historically been used.{{sfn|Gabbrielli|Martini|2023|p=544}} Most of the new programming languages use [[Type system|static typing]] while a few numbers of new languages use [[Type system|dynamic typing]] like [[Ring (programming language)|Ring]] and [[Julia_(programming_language)|Julia]].<ref>{{cite arXiv | eprint=1209.5145 | last1=Bezanson | first1=Jeff | last2=Karpinski | first2=Stefan | last3=Shah | first3=Viral B. | last4=Edelman | first4=Alan | title=Julia: A Fast Dynamic Language for Technical Computing | date=2012 | class=cs.PL }}</ref><ref>Ayouni, M. and Ayouni, M., 2020. Data Types in Ring. Beginning Ring Programming: From Novice to Professional, pp.51-98.</ref> Some of the new programming languages are classified as [[visual programming languages]] like [[Scratch_(programming_language)|Scratch]], [[LabVIEW]] and [[PWCT]]. Also, some of these languages mix between textual and visual programming usage like [[Ballerina (programming language)|Ballerina]].<ref>Sáez-López, J.M., Román-González, M. and Vázquez-Cano, E., 2016. Visual programming languages integrated across the curriculum in elementary school: A two year case study using “Scratch” in five schools. Computers & Education, 97, pp.129-141.</ref><ref>Fayed, M.S., Al-Qurishi, M., Alamri, A. and Al-Daraiseh, A.A., 2017, March. PWCT: visual language for IoT and cloud computing applications and systems. In Proceedings of the Second International Conference on Internet of things, Data and Cloud Computing (pp. 1-5).</ref><ref>Kodosky, J., 2020. LabVIEW. Proceedings of the ACM on Programming Languages, 4(HOPL), pp.1-54.</ref><ref>Fernando, A. and Warusawithana, L., 2020. Beginning Ballerina Programming: From Novice to Professional. Apress.</ref> Also, this trend lead to developing projects that help in developing new VPLs like [[Blockly]] by [[Google]].<ref>Baluprithviraj, K.N., Bharathi, K.R., Chendhuran, S. and Lokeshwaran, P., 2021, March. Artificial intelligence based smart door with face mask detection. In 2021 International Conference on Artificial Intelligence and Smart Systems (ICAIS) (pp. 543-548). IEEE.</ref> Many game engines like [[Unreal Engine|Unreal]] and [[Unity (game engine)|Unity]] added support for visual scripting too.<ref>Sewell, B., 2015. Blueprints visual scripting for unreal engine. Packt Publishing Ltd.</ref><ref>Bertolini, L., 2018. Hands-On Game Development without Coding: Create 2D and 3D games with Visual Scripting in Unity. Packt Publishing Ltd.</ref>
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)