General comparison
editThe following table compares general and technical information for a selection of commonly used programming languages. See the individual languages' articles for further information. Please note that the following table may be missing some information.
Language | Intended use | Imperative | Functional | Procedural | Generic | Reflective | Event-Driven | Concurrent | Logic | Other Paradigm(s) | Standardized? |
---|---|---|---|---|---|---|---|---|---|---|---|
ActionScript 3.0 | Application, client-side, Web | X | X | object-oriented | 1996, ECMA | ||||||
Ada | Application, embedded, realtime, system | X | X[1] | X[2] | X[3] | distributed,[4] imperative object-oriented,[5] | 1983, 2005, 2012, ANSI, ISO, GOST 27831-88[6] | ||||
Aldor | Highly domain-specific, symbolic computing | X | X | object-oriented | No | ||||||
ALGOL 58 | Application | X | No | ||||||||
ALGOL 60 | Application | X | 1960, IFIP WG 2.1, ISO[7] | ||||||||
ALGOL 68 | Application | X | X | 1968, IFIP WG 2.1, GOST 27974-88,[8] | |||||||
Ateji PX | Parallel application | object-oriented, pi calculus | No | ||||||||
APL | Application, data processing | array-oriented, tacit | 1989, ISO | ||||||||
Assembly language | General | X | any, syntax is usually highly specific, related to the target processor | No | |||||||
AutoHotkey | GUI automation (macros), highly domain-specific | X | No | ||||||||
AutoIt | GUI automation (macros), highly domain-specific | X | X | X | No | ||||||
BASIC | Application, education | X | X | 1983, ANSI, ISO | |||||||
BBj | Application, business, Web | X | object-oriented | No | |||||||
BeanShell | Application, scripting | X | X | X | object-oriented | In progress, JCP[9] | |||||
BitC | System | X | X | No | |||||||
BLISS | System | X | No | ||||||||
BlitzMax | Application, game | X | X | object-oriented | No | ||||||
Boo | Application | No | |||||||||
Bro | domain-specific, application | X | X | No | |||||||
C | Application, system,[10] general purpose, low-level operations | X | X | 1989, ANSI C89, ISO C90, ISO C99, ISO C11[11] | |||||||
C++ | Application, system | X | X | X | X | object-oriented | 1998, ISO/IEC 1998, ISO/IEC 2003, ISO/IEC 2011[12] | ||||
C# | Application, business, client-side, general, server-side, Web, Robotics | X | X | X | X | X | X | structured,[13] object-oriented | 2000, ECMA, ISO[14] | ||
Clarion | General, business, Web | X | X[15] | object-oriented | Unknown | ||||||
Clean | General | X | X | No | |||||||
Clojure | General | X | X | No | |||||||
CLU | General | X | X | X | object-oriented | No | |||||
COBOL | Application, business | X | object-oriented | 2002 (ISO/IEC 1989) | |||||||
Cobra | Application, business, general, Web | X | X | X | X | object-oriented | No | ||||
ColdFusion (CFML) | Web | X | object-oriented | No | |||||||
Common Lisp | General | X | X | X | X | object-oriented | 1994, ANSI | ||||
COMAL 80 | Education | X | X | No | |||||||
Crystal 1.0.0 | Education | X | X | X | No | ||||||
Cython | Application, general, numerical computing | X | X | X | aspect-oriented, object-oriented | No | |||||
D | Application, system | X | X | X | X | generative, object-oriented | No | ||||
Dart | Application, Web | X | structured, object-oriented | No | |||||||
Dylan | Application | X | object-oriented | No | |||||||
Eiffel | Application | X | X | object-oriented | 2005, ECMA, ISO[16] | ||||||
Erlang | Application, distributed, telecom | X | concurrent, distributed | No | |||||||
Euphoria | Application. Since the interpreter is shared for system and application code, system is not an intended use because application crashes would affect the whole system. | X | X | No | |||||||
Factor | stack-oriented | No | |||||||||
Falcon | General, Application | X | X | object oriented, prototype OOP, message oriented, tabular programming | No | ||||||
FP | X | No | |||||||||
F# | Application | X | X | X | object-oriented | No | |||||
Forth | General | X | stack-oriented | 1994, ANSI | |||||||
Fortran | Application, numerical computing | X | X | X | object-oriented | 1966, ANSI 66, ANSI 77, MIL-STD-1753, ISO 90, ISO 95, ISO 2003, ISO/IEC 1539-1:2010 (2008) | |||||
G2 | Application, inference, expert system | X | X | common graphical development and runtime environment, object-oriented | No | ||||||
Gambas | Application | X | X | object-oriented | No | ||||||
Game Maker Language | Application, games | X | X | object-oriented | No | ||||||
GLBasic | Application, games | X | X | simple object-oriented | No | ||||||
Go | Application, system | X | concurrent | No | |||||||
Gosu | Application, general, scripting, Web | X | X | X | object-oriented | No | |||||
GraphTalk | Application | logic, object-oriented | No | ||||||||
Groovy | Application, general, scripting, Web | X | X | aspect-oriented, object-oriented | In progress, JCP[17] | ||||||
Harbour | Application, business, data processing, general, Web | X | X | X | X | X | declarative, object-oriented | No | |||
Haskell | Application | X | X | lazy evaluation | 2010, Haskell 2010[18] | ||||||
Haxe | Application, general, Web | X | X | X | X | object-oriented | No | ||||
HyperNext | Application, education | X | X | weakly typed | No | ||||||
HyperTalk | Application, RAD, General | X | object-oriented, weakly typed | Unknown | |||||||
Io | Application, host-driven scripting | X | object-oriented | No | |||||||
ISLISP | General | X | X | X | object-oriented | 1997, ISO | |||||
J | Data processing | array-oriented, function-level, tacit | No | ||||||||
JADE | Application, distributed | X | object-oriented | No | |||||||
Java | Application, business, client-side, general, server-side, Web | X | X | X | object-oriented, concurrent | De facto standard via Java Language Specification | |||||
JavaScript | Client-side, Server-side, Web | X | X | X | prototype-based | 1997, ECMA | |||||
Joy | Research | X | stack-oriented | No | |||||||
K | Data processing, business | array-oriented, tacit | Unknown | ||||||||
LabVIEW (G) | Application, industrial instrumentation-automation | dataflow, visual | No | ||||||||
Lisp | General | X | Unknown | ||||||||
Livecode | Application, RAD, General | X | object-oriented, weakly typed | No | |||||||
Logtalk | Artificial intelligence, application | X | X | logic, object-oriented | No | ||||||
Lua | Application, embedded scripting | X | X | X | X | aspect-oriented, object-oriented[19] | No[20] | ||||
Maple | Symbolic computation, numerical computing | X | X | X | object-oriented, distributed | No | |||||
Mathematica | Symbolic language | X | X | X | logic, distributed, object-oriented | No | |||||
MATLAB | Highly domain-specific, numerical computing | X | X | object-oriented | No | ||||||
Modula-2 | Application, system | X | X | 1996, ISO[21] | |||||||
Modula-3 | Application | X | X | object-oriented | No | ||||||
Oberon | Application, system | X | object-oriented | No | |||||||
Objective-C | Application, general | X | X | object-oriented, concurrent | No | ||||||
Occam | General | X | X | concurrent, process-oriented | No | ||||||
Opa | Web applications | X | X | X | distributed | No | |||||
Oxygene | Application | X | X | object-oriented | No | ||||||
Oz | Application, distribution, education | X | X | concurrent, logic, object-oriented | No | ||||||
Pascal | Application, education | X | X | 1983, ISO[22] | |||||||
Pawn | Embedded, host-driven scripting | X | No | ||||||||
Perl | Application, scripting, text processing, Web | X | X | X | X | X | object-oriented | No | |||
PHP | Server-side, Web Application, Web | X | X[23] | X | object-oriented[24] | No | |||||
PL/I | Application | X | X | object-oriented | 1969 | ||||||
Plus | Application, system development | X | X | No | |||||||
Prolog | Application, artificial intelligence | logic | 1995, ISO | ||||||||
PureBasic | Application | X | No | ||||||||
Python | Application, general, Web, scripting, AI, scientific computing | X | X | X | aspect-oriented, object-oriented | No | |||||
Racket | Education, general, scripting | X | X | X | modular, object-oriented, logic, meta | No | |||||
REALbasic | Application | X | Unknown | ||||||||
REBOL | Distributed | X | X | dialected, object-oriented | No | ||||||
RPG (IBM) | Application, system | X | X | No | |||||||
Ruby | Application, scripting, Web | X | X | X | aspect-oriented, object-oriented | 2011(JIS X 3017), 2012(ISO/IEC 30170) | |||||
Rust | Application, system | X | X | X | X | concurrent, object-oriented | No | ||||
S | Application, statistics | X | X | X | object-oriented | No | |||||
S-Lang | Application, numerical, scripting | X | X | No | |||||||
Scala | Application, distributed, Web | X | X | X | object-oriented | De facto standard via Scala Language Specification (SLS) | |||||
Scheme | Education, general | X | 1998, R6RS | ||||||||
Seed7 | Application, general, scripting, Web | X | X | X | multi-paradigm, extensible, object-oriented, structured | No | |||||
Simula | Education, general | X | X | discrete event simulation, multi-threaded (quasi-parallel) program execution, object-oriented | 1968 | ||||||
Small Basic | Application, education, games | X | X | component-oriented | No | ||||||
Smalltalk | Application, education | X | X | concurrent, declarative, object-oriented | 1998, ANSI | ||||||
SNOBOL | Text processing | Unknown | |||||||||
Standard ML | Application | X | X | X | 1997, SML '97[25] | ||||||
Tcl | Application, scripting, Web | X | X | X | X | No | |||||
Visual Basic | Application, education | X | X | component-oriented | No | ||||||
Visual Basic .NET | Application, education, Web | X | X | object-oriented | No | ||||||
Visual FoxPro | Application | data-centric, logic, object-oriented | No | ||||||||
Visual Prolog | Application | X | X | X | X | declarative, object-oriented | No | ||||
Windows PowerShell | Administration | X | X | X | object-oriented, pipeline | No | |||||
XL | X | concept programming, object-oriented | No | ||||||||
Language | Intended use | Imperative | Functional | Procedural | Generic | Reflective | Event-Driven | Concurrent | Logic | Other Paradigm(s) | Standardized? |
- ^ Ada Reference Manual, ISO/IEC 8652:2005(E) Ed. 3, Section 6: Subprograms
- ^ Ada Reference Manual, ISO/IEC 8652:2005(E) Ed. 3, Section 12: Generic Units
- ^ Ada Reference Manual, ISO/IEC 8652:2005(E) Ed. 3, Section 9: Tasks and Synchronization
- ^ Ada Reference Manual, ISO/IEC 8652:2005(E) Ed. 3 Annex E: Distributed Systems
- ^ Ada Reference Manual, ISO/IEC 8652:2005(E) Ed. 3, 3.9 Tagged Types and Type Extensions
- ^ Vak.ru
- ^ ISO 1538:1984
- ^ Vak.ru
- ^ JSR 274
- ^ CM.bell-labs.com
- ^ ANSI C89, ISO/IEC 9899:1990, 1999, 2011
- ^ ISO/IEC 14882:1998, 2003, 2011
- ^ Codeproject.com: Functional Programming in C# 3.0 using Lambda Expression
- ^ ECMA-334; ISO/IEC 23270:2006
- ^ Softvelocity.com
- ^ ECMA-367; ISO/IEC 25436:2006
- ^ JSR 241
- ^ "The Haskell 2010 Language Report". Retrieved 2011-12-07. Most Haskell implementations extend the Haskell 2010 standard.
- ^ Lua doesn't have explicit "object" type (more general type of "table" is used for object definition), but does have explicit syntax for object method calling
- ^ Version releases are accompanied with a definitive Lua Reference Manual showing full syntax and semantics; a reference implementation, and a test suite. These are used to generate other Lua VM implementations and compilers such as Kahlua and LLVM-Lua.
- ^ ISO/IEC 10514-1:1996
- ^ ISO 7185
- ^ PHP Manual, Chapter 17. Functions
- ^ PHP Manual, Chapter 19. Classes and Objects (PHP 5),
- ^ SMLNJ.org