Talk:Programming language: Difference between revisions

Content deleted Content added
Undid revision 1200114090 by Buidhe paid (talk)
+
Line 248:
{{collapse bottom}}
Thanks [[User:Buidhe paid|Buidhe paid]] ([[User talk:Buidhe paid|talk]]) 08:57, 27 January 2024 (UTC)
 
Please replace the content of the "History" section, after the hatnote, with:
{{collapse top}}
 
===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 scare 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; it is often considered the first [[compiler|compiled]] high-level programming language{{sfn|Gabbrielli|Martini|2023|p=521}}{{sfn|Sebesta|2012|p=42}} and the first third-generation language to be widely used.<ref>{{cite web |url=http://www.nbcnews.com/id/17704662 |title=Fortran creator John Backus dies – Tech and gadgets|publisher=NBC News |date=2007-03-20 |access-date=2010-04-25}}</ref> 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. Unlike Fortran, it supports [[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 present===
[[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. They were also used for integration with [[HTML]], building web pages hosted on [[Server (computing)|server]]s.{{sfn|Gabbrielli|Martini|2023|pp=538–539}}{{sfn|Sebesta|2012|pp=97–99}}
 
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]], and [[Swift (programming language)|Swift]]—competed for the performance-critical software for which C had historically been used.{{sfn|Gabbrielli|Martini|2023|p=544}}
{{talk ref}}
{{collapse bottom}}
 
Reasons: add references, improve summary style, remove unsourced text, fix some MOS:CURRENT issues [[User:Buidhe paid|Buidhe paid]] ([[User talk:Buidhe paid|talk]]) 20:08, 28 January 2024 (UTC)