General-purpose programming language: Difference between revisions

Content deleted Content added
Tags: Reverted possible vandalism nowiki added
Correction.
Tags: Visual edit Mobile edit Mobile web edit
 
(7 intermediate revisions by 5 users not shown)
Line 1:
{{Short description|Programming language used in many domains}}
{{confusion|text=[[GNU General Public License|GPL (GNU General Public License)]]}}
 
In [[computer software]], a '''general-purpose programming language''' ('''GPL''') is a [[programming language]] for building [[software]] in a wide variety of application [[Domain (software engineering)|___domain]]s. Conversely, a [[Domain-specific language|___domain-specific programming language]] (DSL) is used within a specific area. For example, [[Python (programming language)|Python]] is a GPL, while [[SQL]] is a DSL for [[Query language|querying relational databases]].
Line 15 ⟶ 14:
 
== GPL vs. DSL ==
The distinction between general-purpose programming languages and ___domain-specific programming languages is not always clear.<ref>{{Cite journal |last=van Deursen |first=Arie |last2=Klint |first2=Paul |last3=Visser |first3=Joost |date=2000 |title=Domain-Specific Languages: An Annotated Bibliography |journal=ACM SIGPLAN Notices |volume=35 |issue=6 |pages=26-36 |citeseerx=10.1.1.33.8207 |doi=10.1145/352029.352035}}</ref> A programming language may be created for a specific task, but used beyond that original ___domain and thus be considered a general purpose programming language. For example, [[COBOL]], [[Fortran]], and [[Lisp (programming language)|Lisp]] were created as DSLs (for business processing, numeric computation, and symbolic processing), but became GPL'sGPLs over time.{{Dubious|date=December 2022}} Inversely, a language may be designed for general use but only applied in a specific area in practice.<ref>{{Cite journal |last=Berry |first=Gerard |date=May 2006 |title=Real time programming: special purpose or general purpose languages |url=https://hal.inria.fr/inria-00075494/document |journal=HAL Open Science}}</ref> A programming language that is well suited for a problem, whether it be general-purpose language or DSL, should minimize the level of detail required while still being expressive enough in the problem ___domain.<ref name=":0">{{Cite journal |last=Kosar |first=Tomaz |date=May 2010 |title=Comparing General-Purpose and Domain-Specific Languages: An Empirical Study |url=http://www.doiserbia.nb.rs/img/doi/1820-0214/2010/1820-02141002247K.pdf |journal=Computer Science and Information Systems|volume=7 |issue=2 |pages=247–264 |doi=10.2298/CSIS1002247K }}</ref> As the name suggests, general-purpose language is "general" in that it cannot provide support for ___domain-specific notation while DSLs can be designed in diverse problem domains to handle this problem.<ref name=":0" /> General-purpose languages are preferred to DSLs when an application ___domain is not well understood enough to warrant its own language. In this case, a general-purpose language with an appropriate library of data types and functions for the ___domain may be used instead.<ref>{{Cite journal |last=van Deursen |first=Arie |date=December 1998 |title=Little languages: little maintenance? |url=https://onlinelibrary.wiley.com/doi/pdf/10.1002/%28SICI%291096-908X%28199803/04%2910%3A2%3C75%3A%3AAID-SMR168%3E3.0.CO%3B2-5 |journal=Journal of Software Maintenance: Research and Practice|volume=10 |issue{{#tag:ref|=-2 |pages|group="nb"|name=""}}{{#tag:ref|{{#tag:ref|{{#tag:ref|{{#tag:ref|{{#tag:ref|{{Reflist}}{{Reflist}}<references /><includeonly><includeonly><includeonly>{{{<span class="plainlinks"><ref name="{{#tag:ref|<blockquote>–&nbsp;<ref name="″&nbsp;{{DEFAULTSORT:<noinclude>{{DEFAULTSORT:<ref name="<blockquote><span class="plainlinks"><span class="plainlinks"><includeonly><pre><code><sub><sup><s></s></sup></sub></code></pre></includeonly></span></span></blockquote>" />}}</noinclude>}}" /></blockquote>|group="nb"|name=""}}" /></span>}}}</includeonly></includeonly></includeonly>|group="nb"|name=""}}|group="nb"|name=""}}|group="nb"|name=""}}|group="nb"|name=""}}|group="nb"|name=""}}=75–92 |doi=10.1002/(SICI)1096908X1096-908X(199803/04)10:2<75::AID-SMR168>3.0.CO;2-5 }}</ref> While DSLs are usually smaller than GPL in that they offer a smaller range of notations of abstractions, some DSLs actually contain an entire GPL as a sublanguage. In these instances, the DSLs are able to offer ___domain-specific expressive power along with the expressive power of GPL.<ref>{{Cite journal |last1=van Deursen |first1=Arie |last2=Klint |first2=Paul |last3=Visser |first3=Joost |date=June 2000 |title=Domain-specific languages: an annotated bibliography |url=https://dl.acm.org/doi/10.1145/352029.352035 |journal=ACM SIGPLAN Notices |language=en |volume=35 |issue=6 |pages=26–36 |doi=10.1145/352029.352035 |s2cid=1049872 |issn=0362-1340|doi-access=free }}</ref>
 
General Purpose programming languages are all [[Turing completeness|Turing -complete]], meaning that they can theoretically solve any computational problem. Domain-specific languages are often similarly Turing -complete but are not exclusively so.
 
=== Advantages and disadvantages ===
General-purpose programming languages are more commonly used by programmers. According to a study, [[C (programming language)|C]], [[Python (programming language)|Python]], and [[Java (programming language)|Java]] were the most commonly used programming languages in 2021.<ref>{{Cite web |title=The Most Popular Programming Languages - 1965/2021 - New Update - Statistics and Data |url=https://statisticsanddata.org/data/the-most-popular-programming-languages-1965-2021/#:~:text=The%20most%20popular%20<sup>{{#tag:ref|{{#tag:ref|{{#tag:ref||group="nb"|name=""}}|group="nb"|name=""}}|group="nb"|name=""}}</sup>programming20programming%20languages%20in%202021%20(TIOBE%20Index)&text=The%20most%20popular%20programming%20language,third%20place%20with%20a%2010.31%25 |access-date=2022-06-03 |website=statisticsanddata.org}}</ref> One argument in favor of using general-purpose programming languages over ___domain-specific languages is that more people will be familiar with these languages, overcoming the need to learn a new language.{{#tag:ref|{{#tag:ref|<ref name="{{DEFAULTSORT:{{DEFAULTSORT:<blockquote><nowiki>{{#tag:ref|<includeonly><references /><span class="plainlinks"><includeonly><references /><span class="plainlinks"><span class="plainlinks"><span class="plainlinks"><span class="plainlinks"><span class="plainlinks"></span></span></span></span></span></includeonly></span></includeonly>|group="nb"|name=""}}</nowiki></blockquote>}}}}" />|group="nb"|name=""}}|group="nb"|name=""}}
 
Additionally, for many tasks (e.g., statistical analysis, machine learning, etc.) there are libraries that are extensively tested and optimized. Theoretically, the presence of these libraries should bridge the gap between general-purpose and ___domain-specific languages.<ref name=":0" />
Line 31 ⟶ 30:
The predecessor to [[C (programming language)|C]], [[B (programming language)|B]], was developed largely for a specific purpose: [[systems programming]].<ref>{{Cite web |last=Thompson |first=K. |date=1972-01-07 |title=Cover sheet for technical memorandum |url=https://www.bell-labs.com/usr/dmr/www/kbman.pdf |url-status=live |archive-url=https://web.archive.org/web/20150611114427/https://www.bell-labs.com/usr/dmr/www/kbman.pdf |archive-date=2015-06-11 |access-date=2022-06-03 |publisher=[[Bell Telephone Laboratories]]}}</ref> By contrast, C has found use in a variety of computational domains, such as [[operating system]]s, [[device driver]]s, [[application software]], and [[embedded system]]s.
 
C is suitable for use in a variety of areas because of its generality. It provides economy of expression, flow control, data structures, and a rich set of operators, but does not constrain its users to use it in any one context.<ref>{{Cite book |last=W. |first=Kernighan, Brian |url=http://worldcat.org/oclc/1004153413 |title=The C programming language |date=2016 |publisher=Prentice Hall |isbn=978-0-13-110370-2 |oclc=1004153413}}</ref> As a result, though it was first used by its creators to rewrite the kernel of the [[Unix]] operating system,<ref>{{Cite journal |last=Ritchie |first=Dennis |date=April 1993 |title=The development of the C language |url=https://www.bell-labs.com/usr/dmr/www/chist.pdf |journal=ACM SIGPLAN Notices|volume=28 |issue=3 |pages=201–208 |doi=10.1145/155360.155580 }}</ref> it was easily adapted for use in application development, embedded systems (e.g., microprocessor programming), video games (e.g., [[Doom (franchise)|Doom]]), and so on. Today, C remains one of the most popular and widely- used programming languages.<ref>{{Cite web |title=TIOBE Index |url=https://www.tiobe.com/tiobe-index/ |access-date=2022-06-03 |website=TIOBE |language=en-US}}</ref>
 
=== C++ ===
Conceived as an extension to C, [[C++]] introduced [[Object-oriented programming|object-oriented]] features, as well as other conveniences like references, operator overloading, and default arguments. Like C, C++'s generality allowed it to be used in a wide range of areas. While its C++'s core area of application is in systems programming (because of C++'s ability to grant access to low-level architecture),<ref>{{Cite book |last=Stroustrup |first=Bjarne |title=The C++ Programming Language |publisher=Addison-Wesley |year=1995}}</ref> it has been used extensively to build desktop applications, video games, databases, financial systems, and much more.<ref name=":1">{{Cite web |title=C++ Applications |url=https://www.stroustrup.com/applications.html |access-date=2022-06-03 |website=www.stroustrup.com}}</ref> Major software and finance companies, such as [[Microsoft]], [[Apple Inc.|Apple]], [[Bloomberg L.P.|Bloomberg]], and [[Morgan Stanley]], still widely use C++ in their internal and external applications.<ref name=":1" />
 
=== Python ===
[[Python (programming language)|Python]] was conceived as a language that emphasized code readability and extensibility.<ref>{{Cite web |title=artima - The Making of Python |url=https://www.artima.com/articles/the-making-of-python |access-date=2022-06-03 |website=www.artima.com}}</ref><ref>{{Cite web |title=General Python FAQ Python 3.10.4 documentation |url=https://docs.python.org/3/faq/general.html#why-was-python-created-in-the-first-place |access-date=2022-06-03 |website=docs.python.org}}</ref> The former allowed non-software engineers to easily learn and write computer programs, while the latter allowed ___domain specialists to easily create [[Library (computing)|libraries]] suited to their own use cases. For these reasons, Python has been used across a wide range of domains.
 
Below are some of theSome areas where Python is used include:<ref>{{Cite web |title=Applications for Python |url=https://www.python.org/about/apps/ |access-date=2022-06-03 |website=Python.org |language=en}}</ref>
 
* '''Web Development:'development'' Frameworks like [[Django (web framework)|Django]] and [[Flask (web framework)|Flask]] have allowed web developers to create robust web servers that can also take advantage ofexploit the wider Python ecosystem.
* '''Science and Academia:'academia'' Scientific and data libraries, like [[SciPy]] and [[Pandas (software)|Pandas]], have enabled Python's use in scientific research.<ref>{{Cite web |title=Programming Languages Popularity in 12,086 Research Papers – Quantifying Health |url=https://quantifyinghealth.com/programming-languages-popularity-in-research/ |access-date=2022-06-03 |language=en-US}}</ref>
* '''Machine Learning:'learning'' Libraries like [[scikit-learn]] and [[TensorFlow|Tensorflow]] have increasedmade the[[machine accessibilitylearning]] ofmore machine learningaccessible to developers.<ref>{{Cite journal |lastlast1=Pedregosa |firstfirst1=Fabian |date=2011 |title=Scikit-learn: Machine learning in Python |url=https://www.jmlr.org/papers/volume12/pedregosa11a/pedregosa11a.pdf?ref=https://githubhelp.com |journal=The Journal of Machine Learning Research |volume=12 |pages=2825–2830 |arxiv=1201.0490 |bibcode=2011JMLR...12.2825P }}</ref>
* '''General Softwaresoftware Development:'development'' Developing user applications, web scraping programs, games, and other general software.
 
==List==
Line 63 ⟶ 62:
* [[F Sharp (programming language)|F#]]
* [[Go (programming language)|Go]]
* [[Harbour compiler(programming language)|Harbour]]
* [[Haskell (programming language)|Haskell]]
* [[Java (programming language)|Java]]
* [[JavaScript (programming language)|JavaScript]]
* [[Julia (programming language)|Julia]]
* [[Kotlin (programming language)|Kotlin]]
Line 87 ⟶ 86:
* [[V (programming language)|V]]
* [[Visual Basic]]
* [[Visual Basic (.NET)]]
* [[Zig (programming language)|Zig]]{{div col end}}