Content deleted Content added
Some lists numbered and last of a paragraph maded number list. Tags: Reverted Visual edit |
Citation bot (talk | contribs) Added date. | Use this bot. Report bugs. | Suggested by Jay8g | #UCB_toolbar |
||
(47 intermediate revisions by 36 users not shown) | |||
Line 1:
{{short description|none}}
{{ProgLangCompare}}
[[Programming language]]s are used for controlling the behavior of a machine (often a [[computer]]). Like [[natural language]]s, programming languages follow rules for [[syntax]] and [[semantics]].
There are [[list of programming languages|thousands of programming languages]]<ref>As of May 2006 Diarmuid Pigott's [http://hopl.murdoch.edu.au/ Encyclopedia of Computer Languages] {{webarchive|url=https://web.archive.org/web/20110220044217/http://hopl.murdoch.edu.au/ |date=2011-02-20}} hosted at [[Murdoch University]], [[Australia]] lists 8512 computer languages.</ref> and new ones are created every year. Few languages ever become sufficiently popular that they are used by more than a few people, but professional [[programmer]]s may use dozens of languages in a career.
Most programming languages are not standardized by an international (or national) standard, even widely used ones, such as [[Perl]] or [[Standard ML]] (despite the name). Notable standardized programming languages include
# [[C (programming language)|C]], ▼
__TOC__
Line 33 ⟶ 14:
<!-- Per [[WP:REPEATLINK]]: Wikilink terms on 1st instance only, remove later repeat links. -->
{{sticky header}}
{|class="wikitable sortable" style="text-align:center;"▼
{{sort-under}}
▲{|class="wikitable sortable sort-under sticky-header" style="text-align:center;"
|-
! scope="col" | Language
! scope="col" | Original purpose
! scope="col" | [[
! scope="col" | [[
! scope="col" | [[
! scope="col" | [[
! scope="col" | [[
! scope="col" | [[
! scope="col" | Other [[
! scope="col" | [[
|-
Line 79 ⟶ 62:
| <!-- Generic --> {{yes}}<ref>[http://www.adaic.org/standards/05rm/html/RM-TTL.html Ada Reference Manual, ISO/IEC 8652:2005(E) Ed. 3], [http://www.adaic.org/standards/05rm/html/RM-12.html Section 12: Generic Units]</ref>
| <!-- Reflective --> {{no}}
|
| <!-- Standardized? --> {{yes}}<br/>1983, 2005, 2012, ANSI, ISO, [[GOST]] 27831-88<ref>{{Cite web |url=http://vak.ru/lib/exe/fetch.php/book/gost/pdf/gost-27831-88.pdf |title=Vak.ru |access-date=2008-08-09 |archive-url=https://web.archive.org/web/20170330020459/http://vak.ru/lib/exe/fetch.php/book/gost/pdf/gost-27831-88.pdf |archive-date=2017-03-30 |url-status=dead}}</ref>
Line 116 ⟶ 99:
| <!-- Reflective --> {{no}}
| <!-- Other paradigms -->
| <!-- Standardized? --> {{yes}}<br/>1960, [[IFIP WG 2.1]], ISO<ref>
|-
Line 164 ⟶ 147:
| <!-- Reflective --> {{no}}
| <!-- Other paradigms --> Any, syntax is usually highly specific, related to the target processor
| <!-- Standardized? --> {{yes}}<br/>1985 IEEE 694-1985<ref>
|-
Line 170 ⟶ 153:
| <!-- Original purpose --> GUI automation ([[Macro (computer science)#Application macros and scripting|macros]]), highly ___domain-specific
| <!-- Imperative --> {{yes}}
| <!-- Object-oriented --> {{yes}}<br/><ref>
| <!-- Functional --> {{no}}
| <!-- Procedural --> {{yes}}
Line 199 ⟶ 182:
| <!-- Generic --> {{no}}
| <!-- Reflective --> {{no}}
| <!-- Other paradigms --> Concurrent, transactional, statically and strongly typed
| <!-- Standardized? --> {{maybe|De facto}}<br/>standard via Ballerina Language Specification<ref>{{cite web |url=https://ballerina.io/res/Ballerina-Language-Specification-WD-2015-05-01.pdf |publisher=WSO2 |title=Ballerina Language Specification |date=2018-05-01 |access-date=2018-05-03 |archive-date=2018-05-04 |archive-url=https://web.archive.org/web/20180504090305/https://ballerina.io/res/Ballerina-Language-Specification-WD-2015-05-01.pdf |url-status=dead}}</ref>
|-
Line 236 ⟶ 219:
| <!-- Reflective --> {{yes}}
| <!-- Other paradigms -->
| <!-- Standardized? --> {{no}}<br/>In progress, [[Java Community Process|JCP]]<ref>
|-
Line 276 ⟶ 259:
|-
! scope="row" | [[C (programming language)|C]]
| <!-- Original purpose --> Application, system,<ref>
| <!-- Imperative --> {{yes}}
| <!-- Object-oriented --> {{no}}
Line 284 ⟶ 267:
| <!-- Reflective --> {{no}}
| <!-- Other paradigms -->
| <!-- Standardized? --> {{yes}}<br/>1989, [[ANSI C|ANSI C89, ISO/IEC C90, ISO/IEC C95, ISO/IEC C99, ISO/IEC C11, ISO/IEC C17, ISO/IEC C2x]]<ref>
|-
Line 294 ⟶ 277:
| <!-- Procedural --> {{yes}}
| <!-- Generic --> {{yes}}
| <!-- Reflective --> {{
| <!-- Other paradigms --> Concurrent
| <!-- Standardized? --> {{yes}}<br/>1998, [[C++#Standardization|ISO/IEC C++98, ISO/IEC C++03, ISO/IEC C++11, ISO/IEC C++14, ISO/IEC C++17, ISO/IEC C++20, ISO/IEC C++23, ISO/IEC C++26]]<ref>
|-
Line 303 ⟶ 286:
| <!-- Imperative --> {{yes}}
| <!-- Object-oriented --> {{yes}}
| <!-- Functional --> {{yes}}<ref>
| <!-- Procedural --> {{yes}}
| <!-- Generic --> {{yes}}
| <!-- Reflective --> {{yes}}
| <!-- Other paradigms -->
| <!-- Standardized? --> {{yes}}<br/>2000, ECMA, ISO<ref>ECMA-334; ISO/IEC 23270:2006</ref>
Line 315 ⟶ 298:
| <!-- Imperative --> {{yes}}
| <!-- Object-oriented --> {{yes}}
| <!-- Functional --> {{yes}}<ref>
| <!-- Procedural --> {{no}}
| <!-- Generic --> {{no}}
Line 368 ⟶ 351:
| <!-- Reflective --> {{no}}
| <!-- Other paradigms -->
| <!-- Standardized? --> {{yes}}<br/>1968 ANSI X3.23, 1974, 1985; ISO/IEC 1989:1985, 2002, 2014, 2023
|-
Line 425 ⟶ 408:
| <!-- Functional --> {{yes}}
| <!-- Procedural --> {{yes}}
| <!-- Generic --> {{yes}}<ref>{{Cite web|url=https://crystal-lang.org/reference/1.12/syntax_and_semantics/generics.html|title=Crystal Generics|website=crystal-lang.org|date=13 April 2024}}</ref>
| <!-- Generic --> {{no}}▼
| <!-- Reflective --> {{no}}
| <!-- Other paradigms -->
| <!-- Standardized? --> {{no}}
Line 440 ⟶ 423:
| <!-- Reflective --> {{no}}
| <!-- Other paradigms --> [[lazy evaluation]], non-determinism
| <!-- Standardized? --> {{maybe|De facto}}
|-
Line 479 ⟶ 462:
|-
! scope="row" | [[Delphi (
| <!-- Original purpose --> General purpose
| <!-- Imperative --> {{yes}}
Line 488 ⟶ 471:
| <!-- Reflective --> {{yes}}
| <!-- Other paradigms -->
| <!-- Standardized? --><br/>
Line 508 ⟶ 491:
| <!-- Imperative --> {{yes}}
| <!-- Object-oriented --> {{yes}}
| <!-- Functional --> {{yes}}<ref>
| <!-- Procedural --> {{no}}
| <!-- Generic --> {{yes}}
Line 572 ⟶ 555:
| <!-- Generic --> {{yes}}
| <!-- Reflective --> {{yes}}
| <!-- Other paradigms --> [[stack-oriented programming
| <!-- Standardized? --> {{no}}
Line 604 ⟶ 587:
| <!-- Imperative --> {{yes}}
| <!-- Object-oriented --> {{no}}
| <!-- Functional --> {{
| <!-- Procedural --> {{yes}}
| <!-- Generic --> {{no}}
Line 675 ⟶ 658:
| <!-- Original purpose --> Application, web, server-side
| <!-- Imperative --> {{yes}}
| <!-- Object-oriented --> {{maybe|Can be viewed as}}<ref>
| <!-- Functional --> {{maybe|Can be viewed as}}<ref>{{Cite web |url=https://go.dev/doc/codewalk/functions/ |title=Codewalk: First-Class Functions in Go |quote=Go supports first class functions, higher-order functions, user-defined function types, function literals, closures, and multiple return values. This rich feature set supports a functional programming style in a strongly typed language.}}</ref>
| <!-- Functional --> {{no}}▼
| <!-- Procedural --> {{yes}}
| <!-- Generic --> {{yes}}
| <!-- Reflective --> {{yes}}
| <!-- Other paradigms --> Concurrent
| <!-- Standardized? --> {{maybe|De facto}}
|-
Line 717 ⟶ 700:
| <!-- Reflective --> {{yes}}
| <!-- Other paradigms --> Meta-programming
| <!-- Standardized? --> {{no
|-
Line 753 ⟶ 736:
| <!-- Reflective --> {{yes}}
| <!-- Other paradigms -->
| <!-- Standardized? --> {{no}}▼
|-▼
| <!-- Original purpose --> Application, education▼
| <!-- Imperative --> {{no}}▼
| <!-- Object-oriented --> {{no}}▼
| <!-- Functional --> {{no}}▼
| <!-- Other paradigms --> [[weak typing|Weakly typed]]▼
| <!-- Standardized? --> {{no}}
Line 849 ⟶ 820:
| <!-- Reflective --> {{yes}}
| <!-- Other paradigms --> Concurrent
| <!-- Standardized? --> {{maybe|De facto}}
|-
Line 861 ⟶ 832:
| <!-- Reflective --> {{yes}}
| <!-- Other paradigms --> [[prototype-based]]
| <!-- Standardized? --> {{yes}}<br/>
|-
Line 891 ⟶ 862:
| <!-- Original purpose --> General, technical computing
| <!-- Imperative --> {{yes}}
| <!-- Object-oriented --> {{maybe|Can be viewed as}}<ref>{{Cite web |url=https://medium.com/@abhimanyuaryan/object-oriented-programming-in-julia-4dbde2661fde|title=Object-Oriented programming in julia|date=4 June 2023 |quote= in Julia, Oriented programming is not the primary focus, instead it emphasizes multiple dispatches, a more general concept. Despite this, OOP can still be achieved in Julia through the use of composite types and methods.}}</ref><ref>{{Cite web |url=https://dev.to/acmion/julia-object-oriented-programming-5dgh |title=Julia Object Oriented Programming |date=29 May 2021 |quote=Julia does only partially support object oriented programming (OOP) }}</ref>
| <!-- Functional --> {{yes}}
| <!-- Procedural --> {{yes}}
Line 897 ⟶ 868:
| <!-- Reflective --> {{yes}}
| <!-- Other paradigms --> Multiple dispatch, meta, scalar and array-oriented, parallel, concurrent, distributed ("cloud")
| <!-- Standardized? --> {{maybe|De facto}}<br/>standard via Julia Documentation<ref>{{Cite web|url=https://docs.julialang.org/en/v1/|title=Julia Documentation · The Julia Language|website=docs.julialang.org}}</ref>
|-
Line 913 ⟶ 884:
|-
! scope="row" | [[Kotlin (programming language)|Kotlin]]
| <!-- Original purpose --> Application, general, mobile development, server-side, client-side, web, scripting<ref>{{Cite web|url=https://github.com/Kotlin/kotlin-script-examples/blob/master/jvm/main-kts/MainKts.md|title=kotlin-script-examples/jvm/main-kts/MainKts.md at master · Kotlin/kotlin-script-examples|website=GitHub}}</ref>, ___domain-specific<ref>{{Cite web|url=https://kotlinlang.org/docs/type-safe-builders.html|title=Type-safe builders | Kotlin|website=Kotlin Help}}</ref>
| <!-- Imperative --> {{yes}}
| <!-- Object-oriented --> {{yes}}
Line 920 ⟶ 891:
| <!-- Generic --> {{yes}}
| <!-- Reflective --> {{yes}}<ref>{{cite web |url=http://blog.jetbrains.com/kotlin/2014/07/m8-is-out/ |title=M8 is out! |date=2 July 2014 |quote=As a first peek into the future reflective capabilities of Kotlin, you can now access properties as first-class objects in Kotlin}}</ref>
| <!-- Other paradigms --> Concurrent<ref>{{Cite web|url=https://kotlinlang.org/docs/coroutines-overview.html|title=Coroutines | Kotlin|website=Kotlin Help}}</ref>
| <!-- Standardized? --> {{maybe|De facto}}
|-
Line 933 ⟶ 904:
| <!-- Reflective --> {{no}}
| <!-- Other paradigms --> Several variants, custom programmable, dynamic loadable modules
| <!-- Standardized? --> {{maybe|Optionally}}<br/>[[POSIX.2]]<ref name="POSIX 1003"
|-
Line 993 ⟶ 964:
| <!-- Reflective --> {{no}}
| <!-- Other paradigms --> Scripts exist in in-world objects
| <!-- Standardized? --> {{maybe|De facto}}
|-
Line 1,088 ⟶ 1,059:
| <!-- Generic --> {{yes}}
| <!-- Reflective --> {{yes}}
| <!-- Other paradigms --> Multiple dispatch,
| <!-- Standardized? --> {{no}}
Line 1,233 ⟶ 1,204:
| <!-- Reflective --> {{yes}}
| <!-- Other paradigms -->
| <!-- Standardized? --> {{maybe|De facto}}
|-
Line 1,269 ⟶ 1,240:
| <!-- Reflective --> {{no}}
| <!-- Other paradigms --> [[Concatenative programming language|Concatenative]], [[Stack-oriented programming|stack-oriented]]
| <!-- Standardized? --> {{maybe|De facto}}
|-
Line 1,298 ⟶ 1,269:
! scope="row" | [[PureBasic]]
| <!-- Original purpose --> Application
| <!-- Imperative --> {{
| <!-- Object-oriented --> {{no}}
| <!-- Functional --> {{no}}
Line 1,317 ⟶ 1,288:
| <!-- Reflective --> {{yes}}
| <!-- Other paradigms --> Aspect-oriented
| <!-- Standardized? --> {{maybe|De facto}}
|-
Line 1,340 ⟶ 1,311:
| <!-- Generic --> {{no}}
| <!-- Reflective --> {{yes}}
| <!-- Other paradigms --> [[Modular programming|Modular]], logic, meta
| <!-- Standardized? --> {{no}}
Line 1,431 ⟶ 1,402:
| <!-- Original purpose --> Application, server-side, system, web
| <!-- Imperative --> {{yes}}
| <!-- Object-oriented --> {{
| <!-- Functional --> {{yes}}
| <!-- Procedural --> {{yes}}
Line 1,437 ⟶ 1,408:
| <!-- Reflective --> {{no}}<ref>{{cite book |last1=Klabnik |first1=Steve |last2=Nichols |first2=Carol |title=The Rust Programming Language |url=https://doc.rust-lang.org/book/title-page.html |chapter=Macros |chapter-url=https://doc.rust-lang.org/book/ch19-06-macros.html}}</ref>
| <!-- Other paradigms --> Concurrent
| <!-- Standardized? --> {{
|-
Line 1,452 ⟶ 1,423:
|-
! scope="row" | [[
| <!-- Original purpose --> Application, numerical, scripting
| <!-- Imperative --> {{yes}}
Line 1,465 ⟶ 1,436:
|-
! scope="row" | [[Scala (programming language)|Scala]]
| <!-- Original purpose --> Application, general, parallel, distributed, web
| <!-- Imperative --> {{yes}}
| <!-- Object-oriented --> {{yes}}
Line 1,472 ⟶ 1,443:
| <!-- Generic --> {{yes}}
| <!-- Reflective --> {{yes}}
| <!-- Other paradigms --> Data-oriented programming, metaprogramming
| <!-- Standardized? --> {{maybe|De facto}}
|-
Line 1,485 ⟶ 1,456:
| <!-- Reflective --> {{no}}
| <!-- Other paradigms --> meta, extensible-syntax
| <!-- Standardized? --> {{maybe|De facto}}<br/>1975-2013, R<sup>0</sup>RS, R<sup>1</sup>RS, R<sup>2</sup>RS, R<sup>3</sup>RS, R<sup>4</sup>RS, R<sup>5</sup>RS, R<sup>6</sup>RS, R<sup>7</sup>RS Small Edition
|-
Line 1,557 ⟶ 1,528:
| <!-- Reflective --> {{no}}
| <!-- Other paradigms -->
| <!-- Standardized? --> {{yes}}<br/>1997, SML '97<ref>
|-
Line 1,581 ⟶ 1,552:
| <!-- Reflective --> {{yes}}
| <!-- Other paradigms -->
▲|-
| <!-- Functional --> {{maybe|Can be viewed as}}
| <!-- Standardized? --> {{no}}
Line 1,589 ⟶ 1,572:
| <!-- Object-oriented --> {{yes}}
| <!-- Functional --> {{no}}
| <!-- Procedural --> {{
| <!-- Generic --> {{yes}}
| <!-- Reflective --> {{no}}
Line 1,610 ⟶ 1,593:
! scope="row" | [[Visual FoxPro]]
| <!-- Original purpose --> Application
| <!-- Imperative --> {{
| <!-- Object-oriented --> {{yes}}
| <!-- Functional --> {{no}}
| <!-- Procedural --> {{
| <!-- Generic --> {{no}}
| <!-- Reflective --> {{no}}
Line 1,635 ⟶ 1,618:
| <!-- Original purpose --> Symbolic language
| <!-- Imperative --> {{yes}}
| <!-- Object-oriented --> {{
| <!-- Functional --> {{yes}}
| <!-- Procedural --> {{yes}}
Line 1,713 ⟶ 1,696:
| <!-- Reflective --> {{no}}
| <!-- Other paradigms --> Loadable modules
| <!-- Standardized? --> {{maybe|Optionally}}<br/>[[POSIX.2]]<ref name="POSIX 1003"
|}
Line 1,724 ⟶ 1,707:
Some (mostly older) languages require that programmers explicitly add checks for these kinds of errors. Psychologically, different [[List of cognitive biases|cognitive biases]] (e.g., [[optimism bias]]) may affect novices and experts alike and lead them to skip these checks. This can lead to [[software bug|erroneous behavior]].
# '''No Failsafe I/O''': [[AutoHotkey]] (global ErrorLevel must be explicitly checked), [[C (programming language)|C]],<ref name="VS">[[GNU compiler collection|gcc]] can warn on unchecked [[errno.h|errno]]. Newer versions of [[Visual Studio]] usually throw exceptions on failed I/O when using [[C file input/output|stdio]].</ref> [[COBOL]], [[Eiffel (programming language)|Eiffel]] (it actually depends on the library and it is not defined by the language), [[GLBasic]] (will generally cause program to crash), [[IBM RPG|RPG]], [[Lua (programming language)|Lua]] (some functions do not warn or throw exceptions), and [[Perl]].<ref>Considerable error checking can be enabled optionally, but by default Perl is not failsafe.</ref>▼
'''No Failsafe I/O''':
▲
Some I/O checking is built in [[C++]] ([[Input/output (C++)|STL iostreams]] throw on failure but C APIs like [[C file input/output|stdio]] or [[C POSIX library|POSIX]] do not)<ref name="VS"/> and [[Object Pascal]], in [[Bash (Unix shell)|Bash]]<ref><code>set -e</code> enables termination if any unchecked [[exit status]] is nonzero.</ref> it is optional.
Line 1,760 ⟶ 1,745:
==Timeline of specific language comparisons==
==See also==
{{Category tree all|Lists of programming languages|mode=all|depth=2}}
▲# [[TIOBE index]]
==References==
Line 1,780 ⟶ 1,764:
==Further reading==
{{Programming languages}}
|