Movatterモバイル変換


[0]ホーム

URL:


Jump to content
WikipediaThe Free Encyclopedia
Search

General-purpose programming language

From Wikipedia, the free encyclopedia
Programming language used in many domains

Incomputer software, ageneral-purpose programming language (GPL) is aprogramming language for buildingsoftware in a wide variety of applicationdomains. Conversely, adomain-specific programming language (DSL) is used within a specific area. For example,Python is a GPL, whileSQL is a DSL forquerying relational databases.

History

[edit]

Early programming languages were designed for scientific computing (numerical calculations) or commercial data processing, as was computer hardware. Scientific languages such asFortran andAlgol supported floating-point calculations and multidimensional arrays, while business languages such asCOBOL supported fixed-field file formats anddata records. Much less widely used were specialized languages such asIPL-V andLISP forsymbolic list processing;COMIT for string manipulation;APT fornumerically controlled machines.Systems programming requiringpointer manipulation was typically done inassembly language, thoughJOVIAL was used for some military applications.[1]

IBM'sSystem/360, announced in 1964, was designed as a unified hardware architecture supporting both scientific and commercial applications, and IBM developedPL/I for it as a single, general-purpose language that supported scientific, commercial, and systems programming. Indeed, a subset of PL/I was used as the standard systems programming language for theMultics operating system.

Since PL/I, the distinction between scientific and commercial programming languages has diminished, with most languages supporting the basic features required by both, and much of the special file format handling delegated to specializeddatabase management systems.

Many specialized languages were also developed starting in the 1960s:GPSS andSimula for discrete event simulation;MAD,BASIC,Logo, andPascal for teaching programming;C for systems programming;JOSS andAPL\360 for interactive programming.[1]

GPL vs. DSL

[edit]

The distinction between general-purpose programming languages and domain-specific programming languages is not always clear.[2] 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, andLisp were created as DSLs (for business processing, numeric computation, and symbolic processing), but became GPLs over time.[dubiousdiscuss] Inversely, a language may be designed for general use but only applied in a specific area in practice.[3] 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.[4] 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.[4] 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.[5] 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.[6]

General Purpose programming languages are allTuring-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

[edit]

General-purpose programming languages are more commonly used by programmers. According to a study,C,Python, andJava were the most commonly used programming languages in 2021.[7] 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.

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.[4]

An empirical study in 2010 sought to measure problem-solving and productivity between GPLs and DSLs by giving users problems who were familiar with the GPL (C#) and unfamiliar with the DSL (XAML). Ultimately, users of this specific domain-specific language performed better by a factor of 15%, even though they were more familiar with GPL, warranting further research.[4]

Examples

[edit]

C

[edit]

The predecessor toC,B, was developed largely for a specific purpose:systems programming.[8] By contrast, C has found use in a variety of computational domains, such asoperating systems,device drivers,application software, andembedded systems.

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.[9] As a result, though it was first used by its creators to rewrite the kernel of theUnix operating system,[10] it was easily adapted for use in application development, embedded systems (e.g., microprocessor programming), video games (e.g.,Doom), and so on. Today, C remains one of the most popular and widely used programming languages.[11]

C++

[edit]

Conceived as an extension to C,C++ introducedobject-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 core area of application is in systems programming (because of C++'s ability to grant access to low-level architecture),[12] it has been used extensively to build desktop applications, video games, databases, financial systems, and much more.[13] Major software and finance companies, such asMicrosoft,Apple,Bloomberg, andMorgan Stanley, still widely use C++ in their internal and external applications.[13]

Python

[edit]

Python was conceived as a language that emphasized code readability and extensibility.[14][15] The former allowed non-software engineers to easily learn and write computer programs, while the latter allowed domain specialists to easily createlibraries suited to their own use cases. For these reasons, Python has been used across a wide range of domains.

Some areas where Python is used include:[16]

  • Web development – Frameworks likeDjango andFlask have allowed web developers to create robust web servers that can also exploit the wider Python ecosystem.
  • Science and academia – Scientific and data libraries, likeSciPy andPandas, have enabled Python's use in scientific research.[17]
  • Machine learning – Libraries likescikit-learn andTensorFlow have mademachine learning more accessible to developers.[18]
  • General software development – Developing user applications, web scraping programs, games, and other general software.

List

[edit]
Main article:List of programming languages

The following are some general-purpose programming languages:

See also

[edit]

References

[edit]
  1. ^abJean E. Sammet, "Programming Languages: History and Future",Communications of the ACM15:7:601-610 (July 1972)doi:10.1145/361454.361485
  2. ^van Deursen, Arie; Klint, Paul; Visser, Joost (2000). "Domain-Specific Languages: An Annotated Bibliography".ACM SIGPLAN Notices.35 (6):26–36.CiteSeerX 10.1.1.33.8207.doi:10.1145/352029.352035.
  3. ^Berry, Gerard (May 2006)."Real time programming: special purpose or general purpose languages".HAL Open Science.
  4. ^abcdKosar, Tomaz (May 2010)."Comparing General-Purpose and Domain-Specific Languages: An Empirical Study"(PDF).Computer Science and Information Systems.7 (2):247–264.doi:10.2298/CSIS1002247K.
  5. ^van Deursen, Arie (December 1998)."Little languages: little maintenance?".Journal of Software Maintenance: Research and Practice.10 (2):75–92.doi:10.1002/(SICI)1096-908X(199803/04)10:2<75::AID-SMR168>3.0.CO;2-5.
  6. ^van Deursen, Arie; Klint, Paul; Visser, Joost (June 2000)."Domain-specific languages: an annotated bibliography".ACM SIGPLAN Notices.35 (6):26–36.doi:10.1145/352029.352035.ISSN 0362-1340.S2CID 1049872.
  7. ^"The Most Popular Programming Languages - 1965/2021 - New Update - Statistics and Data".statisticsanddata.org. Retrieved2022-06-03.
  8. ^Thompson, K. (1972-01-07)."Cover sheet for technical memorandum"(PDF).Bell Telephone Laboratories.Archived(PDF) from the original on 2015-06-11. Retrieved2022-06-03.
  9. ^W., Kernighan, Brian (2016).The C programming language. Prentice Hall.ISBN 978-0-13-110370-2.OCLC 1004153413.{{cite book}}: CS1 maint: multiple names: authors list (link)
  10. ^Ritchie, Dennis (April 1993)."The development of the C language"(PDF).ACM SIGPLAN Notices.28 (3):201–208.doi:10.1145/155360.155580.
  11. ^"TIOBE Index".TIOBE. Retrieved2022-06-03.
  12. ^Stroustrup, Bjarne (1995).The C++ Programming Language. Addison-Wesley.
  13. ^ab"C++ Applications".www.stroustrup.com. Retrieved2022-06-03.
  14. ^"artima – The Making of Python".www.artima.com. Retrieved2022-06-03.
  15. ^"General Python FAQ – Python 3.10.4 documentation".docs.python.org. Retrieved2022-06-03.
  16. ^"Applications for Python".Python.org. Retrieved2022-06-03.
  17. ^"Programming Languages Popularity in 12,086 Research Papers – Quantifying Health". Retrieved2022-06-03.
  18. ^Pedregosa, Fabian (2011)."Scikit-learn: Machine learning in Python"(PDF).The Journal of Machine Learning Research.12:2825–2830.arXiv:1201.0490.Bibcode:2011JMLR...12.2825P.
Retrieved from "https://en.wikipedia.org/w/index.php?title=General-purpose_programming_language&oldid=1304364369"
Category:
Hidden categories:

[8]ページ先頭

©2009-2025 Movatter.jp