Language Comparison Table: Difference between revisions
Content added Content deleted
(Added another Erlang paradigm, we need to shorten these links. Looks like a Perl program to me.) |
Underscore (talk | contribs) (Piped paradigm links as per Mwn3d's request.) |
||
Line 15: | Line 15: | ||
|- |
|- |
||
! {{anchor|ActionScript|[[ActionScript]]}} |
! {{anchor|ActionScript|[[ActionScript]]}} |
||
|[[imperative programming]], [[object-oriented]], [[event-driven programming]] |
|[[imperative programming|imperative]], [[object-oriented]], [[event-driven programming|event-driven]] |
||
|{{yes}}, [[ECMA]] |
|{{yes}}, [[ECMA]] |
||
|strong |
|strong |
||
Line 28: | Line 28: | ||
|- |
|- |
||
! {{anchor|Ada|[[Ada]]}} |
! {{anchor|Ada|[[Ada]]}} |
||
|[[concurrent programming]], [[distributed programming]], [[generic programming]], [[imperative programming]], [[object-oriented]] |
|[[concurrent programming|concurrent]], [[distributed programming|distributed]], [[generic programming|generic]], [[imperative programming|imperative]], [[object-oriented]] |
||
|{{yes}}, [[ANSI]], [[ISO]], ANSI/MIL-STD-1815A-1983, [http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=22983 ISO/IEC 8652], [http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=38828 ISO/IEC TR 24718], [http://vak.ru/lib/exe/fetch.php/book/gost/pdf/gost-27831-88.pdf GOST 27831-88] |
|{{yes}}, [[ANSI]], [[ISO]], ANSI/MIL-STD-1815A-1983, [http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=22983 ISO/IEC 8652], [http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=38828 ISO/IEC TR 24718], [http://vak.ru/lib/exe/fetch.php/book/gost/pdf/gost-27831-88.pdf GOST 27831-88] |
||
|strong |
|strong |
||
Line 41: | Line 41: | ||
|- |
|- |
||
! {{anchor|ALGOL_68|[[ALGOL 68]]}} |
! {{anchor|ALGOL_68|[[ALGOL 68]]}} |
||
|[[concurrent programming|concurrent]], [[imperative programming]] |
|[[concurrent programming|concurrent]], [[imperative programming|imperative]] |
||
|{{yes}}, [http://vak.ru/lib/exe/fetch.php/book/gost/pdf/gost-27974-88.pdf GOST 27974-88] |
|{{yes}}, [http://vak.ru/lib/exe/fetch.php/book/gost/pdf/gost-27974-88.pdf GOST 27974-88] |
||
|strong |
|strong |
||
Line 54: | Line 54: | ||
|- |
|- |
||
! {{anchor|AutoHotkey|[[AutoHotkey]]}} |
! {{anchor|AutoHotkey|[[AutoHotkey]]}} |
||
|[[imperative programming]] |
|[[imperative programming|imperative]] |
||
|{{no}} |
|{{no}} |
||
|untyped |
|untyped |
||
Line 67: | Line 67: | ||
|- |
|- |
||
! {{anchor|BASIC|[[BASIC]]}} |
! {{anchor|BASIC|[[BASIC]]}} |
||
|[[procedural programming]] |
|[[procedural programming|procedural]] |
||
|{{yes}}, [[ANSI]], [[ISO]] |
|{{yes}}, [[ANSI]], [[ISO]] |
||
|varies by dialect |
|varies by dialect |
||
Line 80: | Line 80: | ||
|- |
|- |
||
! {{anchor|C|[[C]]}} |
! {{anchor|C|[[C]]}} |
||
|[[imperative programming]] |
|[[imperative programming|imperative]] |
||
|{{yes}}, [[ANSI]] [[C89]], [[ISO]] [[C90]]/[[C99]] |
|{{yes}}, [[ANSI]] [[C89]], [[ISO]] [[C90]]/[[C99]] |
||
|weak |
|weak |
||
Line 93: | Line 93: | ||
|- |
|- |
||
! {{anchor|C_sharp|[[C sharp|C#]]}} |
! {{anchor|C_sharp|[[C sharp|C#]]}} |
||
|[[imperative programming]], [[object-oriented]], [[generic programming]], [[reflective programming]] |
|[[imperative programming|imperative]], [[object-oriented]], [[generic programming|generic]], [[reflective programming|reflective]] |
||
|{{yes}}, [[ECMA]], [[ISO]] |
|{{yes}}, [[ECMA]], [[ISO]] |
||
|strong |
|strong |
||
Line 106: | Line 106: | ||
|- |
|- |
||
! {{anchor|C++|[[C++]]}} |
! {{anchor|C++|[[C++]]}} |
||
|[[imperative programming]], [[object-oriented]], [[generic programming]] |
|[[imperative programming|imperative]], [[object-oriented]], [[generic programming|generic]] |
||
|{{yes}}, [[ISO]] |
|{{yes}}, [[ISO]] |
||
|strong |
|strong |
||
Line 119: | Line 119: | ||
|- |
|- |
||
! {{anchor|Clean|[[Clean]]}} |
! {{anchor|Clean|[[Clean]]}} |
||
|[[functional programming]], [[generic programming]] |
|[[functional programming|functional]], [[generic programming|generic]] |
||
|{{no}} |
|{{no}} |
||
|strong |
|strong |
||
Line 132: | Line 132: | ||
|- |
|- |
||
! {{anchor|Clojure|[[Clojure]]}} |
! {{anchor|Clojure|[[Clojure]]}} |
||
|[[functional programming]], [[concurrent programming]] |
|[[functional programming|functional]], [[concurrent programming|concurrent]] |
||
| |
| |
||
|strong |
|strong |
||
Line 145: | Line 145: | ||
|- |
|- |
||
! {{anchor|COBOL|[[COBOL]]}} |
! {{anchor|COBOL|[[COBOL]]}} |
||
|[[imperative programming]], [[object-oriented]] |
|[[imperative programming|imperative]], [[object-oriented]] |
||
|{{yes}} |
|{{yes}} |
||
|strong |
|strong |
||
Line 158: | Line 158: | ||
|- |
|- |
||
! {{anchor|ColdFusion|[[ColdFusion]]}} |
! {{anchor|ColdFusion|[[ColdFusion]]}} |
||
|[[procedural programming]], [[object-oriented]] |
|[[procedural programming|procedural]], [[object-oriented]] |
||
|{{no}} |
|{{no}} |
||
|weak |
|weak |
||
Line 171: | Line 171: | ||
|- |
|- |
||
! {{anchor|Common Lisp|[[Common Lisp]]}} |
! {{anchor|Common Lisp|[[Common Lisp]]}} |
||
|[[imperative programming]], [[functional programming]], [[object-oriented]] |
|[[imperative programming|imperative]], [[functional programming|functional]], [[object-oriented]] |
||
|{{yes}} |
|{{yes}} |
||
|strong |
|strong |
||
Line 184: | Line 184: | ||
|- |
|- |
||
! {{anchor|D|[[D]]}} |
! {{anchor|D|[[D]]}} |
||
|[[imperative programming]], [[object-oriented]], [[generic programming]] |
|[[imperative programming|imperative]], [[object-oriented]], [[generic programming|generic]] |
||
|{{no}} |
|{{no}} |
||
|strong |
|strong |
||
Line 210: | Line 210: | ||
|- |
|- |
||
! {{anchor|EC|[[eC]]}} |
! {{anchor|EC|[[eC]]}} |
||
|[[imperative programming]], [[object-oriented]], [[generic programming]], [[reflective programming]] |
|[[imperative programming|imperative]], [[object-oriented]], [[generic programming|generic]], [[reflective programming|reflective]] |
||
|{{no}} |
|{{no}} |
||
|weak |
|weak |
||
Line 223: | Line 223: | ||
|- |
|- |
||
! {{anchor|Eiffel|[[Eiffel]]}} |
! {{anchor|Eiffel|[[Eiffel]]}} |
||
|[[imperative programming]], [[object-oriented]], [[generic programming]] |
|[[imperative programming|imperative]], [[object-oriented]], [[generic programming|generic]] |
||
|{{yes}}, [http://www.ecma-international.org/publications/standards/Ecma-367.htm ECMA-367], [http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=42924 ISO/IEC 25436:2006] |
|{{yes}}, [http://www.ecma-international.org/publications/standards/Ecma-367.htm ECMA-367], [http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=42924 ISO/IEC 25436:2006] |
||
|strong |
|strong |
||
Line 236: | Line 236: | ||
|- |
|- |
||
! {{anchor|Erlang|[[Erlang]]}} |
! {{anchor|Erlang|[[Erlang]]}} |
||
|[[functional programming]], [[concurrent programming]], [[distributed programming]], [[declarative programming]] - pattern matching, [[imperative programming]] |
|[[functional programming|functional]], [[concurrent programming|concurrent]], [[distributed programming|distributed]], [[declarative programming|declarative]] - pattern matching, [[imperative programming|imperative]] |
||
|{{no}} |
|{{no}} |
||
|strong |
|strong |
||
Line 249: | Line 249: | ||
|- |
|- |
||
! {{anchor|Forth|[[Forth]]}} |
! {{anchor|Forth|[[Forth]]}} |
||
|[[imperative programming]], [[stack]]-oriented |
|[[imperative programming|imperative]], [[stack]]-oriented |
||
|{{yes}}, [[ANSI]] |
|{{yes}}, [[ANSI]] |
||
|none |
|none |
||
Line 262: | Line 262: | ||
|- |
|- |
||
! {{anchor|Fortran|[[Fortran]]}} |
! {{anchor|Fortran|[[Fortran]]}} |
||
|[[imperative programming]], [[procedural programming]], [[object-oriented]] |
|[[imperative programming|imperative]], [[procedural programming|procedural]], [[object-oriented]] |
||
|{{yes}}, [[ISO]], [http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=39691 ISO/IEC 1539-1:2004] |
|{{yes}}, [[ISO]], [http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=39691 ISO/IEC 1539-1:2004] |
||
|strong |
|strong |
||
Line 275: | Line 275: | ||
|- |
|- |
||
! {{anchor|Groovy|[[Groovy]]}} |
! {{anchor|Groovy|[[Groovy]]}} |
||
|[[imperative programming]], [[object-oriented]], [[aspect-oriented programming]] |
|[[imperative programming|imperative]], [[object-oriented]], [[aspect-oriented programming|aspect-oriented]] |
||
|{{no}} |
|{{no}} |
||
|strong |
|strong |
||
Line 288: | Line 288: | ||
|- |
|- |
||
! {{anchor|Haskell|[[Haskell]]}} |
! {{anchor|Haskell|[[Haskell]]}} |
||
|[[functional programming]], [[generic programming]], [[lazy evaluation]] |
|[[functional programming|functional]], [[generic programming|generic]], [[lazy evaluation]] |
||
|{{yes}}, [http://www.haskell.org/haskellwiki/Language_and_library_specification Haskell 98 Report] |
|{{yes}}, [http://www.haskell.org/haskellwiki/Language_and_library_specification Haskell 98 Report] |
||
|strong |
|strong |
||
Line 314: | Line 314: | ||
|- |
|- |
||
! {{anchor|J|[[J]]}} |
! {{anchor|J|[[J]]}} |
||
|[[array]] programming, function-level programming, [[tacit programming]] |
|[[array]] programming, function-level programming, [[tacit programming|tacit]] |
||
|{{no}} |
|{{no}} |
||
|strong |
|strong |
||
Line 327: | Line 327: | ||
|- |
|- |
||
! {{anchor|Java|[[Java]]}} |
! {{anchor|Java|[[Java]]}} |
||
|[[imperative programming]], [[object-oriented]], [[generic programming]], [[reflective programming]] |
|[[imperative programming|imperative]], [[object-oriented]], [[generic programming|generic]], [[reflective programming|reflective]] |
||
|{{no}} |
|{{no}} |
||
|strong |
|strong |
||
Line 340: | Line 340: | ||
|- |
|- |
||
! {{anchor|JavaScript|[[JavaScript]]}} |
! {{anchor|JavaScript|[[JavaScript]]}} |
||
|[[imperative programming]], [[object-oriented]], [[functional programming]], [[reflective programming]] |
|[[imperative programming|imperative]], [[object-oriented]], [[functional programming|functional]], [[reflective programming|reflective]] |
||
|{{yes}} |
|{{yes}} |
||
|weak |
|weak |
||
Line 353: | Line 353: | ||
|- |
|- |
||
! {{anchor|Joy|[[Joy]]}} |
! {{anchor|Joy|[[Joy]]}} |
||
|[[functional programming]], [[stack]]-oriented |
|[[functional programming|functional]], [[stack]]-oriented |
||
|{{no}} |
|{{no}} |
||
|strong |
|strong |
||
Line 362: | Line 362: | ||
| |
| |
||
| |
| |
||
|[[functional programming]] research |
|[[functional programming|functional]] research |
||
|[[concatenative]] |
|[[concatenative]] |
||
|- |
|- |
||
! {{anchor|Lisp|[[Lisp]]}} |
! {{anchor|Lisp|[[Lisp]]}} |
||
|[[functional programming]], [[reflective programming]]; others vary by dialect |
|[[functional programming|functional]], [[reflective programming|reflective]]; others vary by dialect |
||
|{{no}} |
|{{no}} |
||
|strong |
|strong |
||
Line 379: | Line 379: | ||
|- |
|- |
||
! {{anchor|Logo|[[Logo]]}} |
! {{anchor|Logo|[[Logo]]}} |
||
|[[procedural programming]], [[functional programming]] |
|[[procedural programming|procedural]], [[functional programming|functional]] |
||
|{{no}} |
|{{no}} |
||
|strong |
|strong |
||
Line 392: | Line 392: | ||
|- |
|- |
||
! {{anchor|Lua|[[Lua]]}} |
! {{anchor|Lua|[[Lua]]}} |
||
|[[procedural programming]], [[imperative programming]], [[reflective programming|reflective]] |
|[[procedural programming|procedural]], [[imperative programming|imperative]], [[reflective programming|reflective]] |
||
|{{no}} |
|{{no}} |
||
|strong |
|strong |
||
Line 405: | Line 405: | ||
|- |
|- |
||
! {{anchor|Lucid|[[Lucid]]}} |
! {{anchor|Lucid|[[Lucid]]}} |
||
|[[dataflow programming]], [[functional programming]] |
|[[dataflow programming|dataflow]], [[functional programming|functional]] |
||
|{{no}} |
|{{no}} |
||
|strong |
|strong |
||
Line 418: | Line 418: | ||
|- |
|- |
||
! {{anchor|Mathematica|[[Mathematica]]}} |
! {{anchor|Mathematica|[[Mathematica]]}} |
||
|[[functional programming]], [[procedural programming]] |
|[[functional programming|functional]], [[procedural programming|procedural]] |
||
|{{no}} |
|{{no}} |
||
|strong |
|strong |
||
Line 431: | Line 431: | ||
|- |
|- |
||
! {{anchor|MAXScript|[[MAXScript]]}} |
! {{anchor|MAXScript|[[MAXScript]]}} |
||
|[[imperative programming]], [[object-oriented]], [[procedural programming]] |
|[[imperative programming|imperative]], [[object-oriented]], [[procedural programming|procedural]] |
||
|{{no}} |
|{{no}} |
||
|strong |
|strong |
||
Line 444: | Line 444: | ||
|- |
|- |
||
! {{anchor|Modula-3|[[Modula-3]]}} |
! {{anchor|Modula-3|[[Modula-3]]}} |
||
|[[imperative programming]], [[object-oriented]], [[procedural programming]], [[generic programming]] |
|[[imperative programming|imperative]], [[object-oriented]], [[procedural programming|procedural]], [[generic programming|generic]] |
||
|{{no}} |
|{{no}} |
||
|strong |
|strong |
||
Line 457: | Line 457: | ||
|- |
|- |
||
! {{anchor|Nial|[[Nial]]}} |
! {{anchor|Nial|[[Nial]]}} |
||
|[[functional programming]], [[array]] programming |
|[[functional programming|functional]], [[array]] programming |
||
|{{no}} |
|{{no}} |
||
|strong |
|strong |
||
Line 470: | Line 470: | ||
|- |
|- |
||
! {{anchor|Oberon-2|[[Oberon-2]]}} |
! {{anchor|Oberon-2|[[Oberon-2]]}} |
||
|[[procedural programming]], [[imperative programming]], [[object-oriented]] |
|[[procedural programming|procedural]], [[imperative programming|imperative]], [[object-oriented]] |
||
|{{no}} |
|{{no}} |
||
|strong |
|strong |
||
Line 483: | Line 483: | ||
|- |
|- |
||
! {{anchor|Object Pascal|[[Object Pascal]]}} ({{anchor|Delphi|[[Delphi]]}}) |
! {{anchor|Object Pascal|[[Object Pascal]]}} ({{anchor|Delphi|[[Delphi]]}}) |
||
|[[imperative programming]], [[object-oriented]], [[generic programming]] |
|[[imperative programming|imperative]], [[object-oriented]], [[generic programming|generic]] |
||
|{{no}} |
|{{no}} |
||
|strong |
|strong |
||
Line 496: | Line 496: | ||
|- |
|- |
||
! {{anchor|Objective-C|[[Objective-C]]}} |
! {{anchor|Objective-C|[[Objective-C]]}} |
||
|[[imperative programming]], [[object-oriented]], [[reflective programming]] |
|[[imperative programming|imperative]], [[object-oriented]], [[reflective programming|reflective]] |
||
|{{yes}} |
|{{yes}} |
||
|weak |
|weak |
||
Line 509: | Line 509: | ||
|- |
|- |
||
! {{anchor|Ocaml|[[Ocaml]]}} |
! {{anchor|Ocaml|[[Ocaml]]}} |
||
|[[object-oriented]], [[functional programming]], [[imperative programming]], [[generic programming]] |
|[[object-oriented]], [[functional programming|functional]], [[imperative programming|imperative]], [[generic programming|generic]] |
||
|{{no}} |
|{{no}} |
||
|strong |
|strong |
||
Line 522: | Line 522: | ||
|- |
|- |
||
! {{anchor|Oz|[[Oz]]}} |
! {{anchor|Oz|[[Oz]]}} |
||
|logic programming, [[functional programming]], [[imperative programming]], [[object-oriented]], [[concurrent programming]] |
|logic programming, [[functional programming|functional]], [[imperative programming|imperative]], [[object-oriented]], [[concurrent programming|concurrent]] |
||
|{{no}} |
|{{no}} |
||
| |
| |
||
Line 535: | Line 535: | ||
|- |
|- |
||
! {{anchor|Pascal|[[Pascal]]}} |
! {{anchor|Pascal|[[Pascal]]}} |
||
|[[imperative programming]], [[procedural programming]] |
|[[imperative programming|imperative]], [[procedural programming|procedural]] |
||
|{{yes}} (Extended Pascal standardized under [[ISO]]) |
|{{yes}} (Extended Pascal standardized under [[ISO]]) |
||
|strong |
|strong |
||
Line 548: | Line 548: | ||
|- |
|- |
||
! {{anchor|Perl|[[Perl]]}} |
! {{anchor|Perl|[[Perl]]}} |
||
|[[imperative programming]], [[procedural programming]], [[reflective programming]], [[functional programming]], [[object-oriented]], [[generic programming]] |
|[[imperative programming|imperative]], [[procedural programming|procedural]], [[reflective programming|reflective]], [[functional programming|functional]], [[object-oriented]], [[generic programming|generic]] |
||
|{{no}} |
|{{no}} |
||
|weak |
|weak |
||
Line 561: | Line 561: | ||
|- |
|- |
||
! {{anchor|PHP|[[PHP]]}} |
! {{anchor|PHP|[[PHP]]}} |
||
|[[imperative programming]], [[object-oriented]], [[reflective programming]] |
|[[imperative programming|imperative]], [[object-oriented]], [[reflective programming|reflective]] |
||
|{{no}} |
|{{no}} |
||
|weak |
|weak |
||
Line 574: | Line 574: | ||
|- |
|- |
||
! {{anchor|Pop11|[[Pop11]]}} |
! {{anchor|Pop11|[[Pop11]]}} |
||
|[[imperative programming]], [[object-oriented]], [[functional programming]] |
|[[imperative programming|imperative]], [[object-oriented]], [[functional programming|functional]] |
||
|{{no}} |
|{{no}} |
||
|strong |
|strong |
||
Line 597: | Line 597: | ||
|{{yes}} |
|{{yes}} |
||
|Problem solving, Artificial intelligence |
|Problem solving, Artificial intelligence |
||
|[[declarative programming]] |
|[[declarative programming|declarative]] |
||
|- |
|- |
||
!{{anchor|Pure|[[Pure]]}} |
!{{anchor|Pure|[[Pure]]}} |
||
|[[dynamic programming]], [[functional programming]] |
|[[dynamic programming|dynamic]], [[functional programming|functional]] |
||
| |
| |
||
|strong |
|strong |
||
Line 613: | Line 613: | ||
|- |
|- |
||
! {{anchor|Python|[[Python]]}} |
! {{anchor|Python|[[Python]]}} |
||
|[[imperative programming]], [[object-oriented]], [[functional programming]], [[aspect-oriented programming]], [[reflective programming]] |
|[[imperative programming|imperative]], [[object-oriented]], [[functional programming|functional]], [[aspect-oriented programming|aspect-oriented]], [[reflective programming|reflective]] |
||
|{{no}} |
|{{no}} |
||
|strong |
|strong |
||
Line 626: | Line 626: | ||
|- |
|- |
||
! {{anchor|RapidQ|[[RapidQ]]}} |
! {{anchor|RapidQ|[[RapidQ]]}} |
||
|[[imperative programming]], component-oriented programming, [[event-driven programming]] |
|[[imperative programming|imperative]], component-oriented programming, [[event-driven programming|event-driven]] |
||
|{{no}} |
|{{no}} |
||
|strong (none for Variant type) |
|strong (none for Variant type) |
||
Line 639: | Line 639: | ||
|- |
|- |
||
! {{anchor|Ruby|[[Ruby]]}} |
! {{anchor|Ruby|[[Ruby]]}} |
||
|[[imperative programming]], [[object-oriented]], [[aspect-oriented programming]], [[reflective programming]] |
|[[imperative programming|imperative]], [[object-oriented]], [[aspect-oriented programming|aspect-oriented]], [[reflective programming|reflective]] |
||
|{{no}} |
|{{no}} |
||
|strong |
|strong |
||
Line 652: | Line 652: | ||
|- |
|- |
||
! {{anchor|Scala|[[Scala]]}} |
! {{anchor|Scala|[[Scala]]}} |
||
|[[object-oriented]], [[functional programming]], [[generic programming]] |
|[[object-oriented]], [[functional programming|functional]], [[generic programming|generic]] |
||
|{{no}} |
|{{no}} |
||
|strong |
|strong |
||
Line 665: | Line 665: | ||
|- |
|- |
||
! {{anchor|Scheme|[[Scheme]]}} |
! {{anchor|Scheme|[[Scheme]]}} |
||
|[[functional programming]] |
|[[functional programming|functional]] |
||
|{{yes}}, R<sup>5</sup>RS, R<sup>6</sup>RS |
|{{yes}}, R<sup>5</sup>RS, R<sup>6</sup>RS |
||
|strong |
|strong |
||
Line 678: | Line 678: | ||
|- |
|- |
||
! {{anchor|Slate|[[Slate]]}} |
! {{anchor|Slate|[[Slate]]}} |
||
|[[object-oriented]], [[imperative programming]], [[functional programming]], [[reflective programming]], prototype, multi-dispatch |
|[[object-oriented]], [[imperative programming|imperative]], [[functional programming|functional]], [[reflective programming|reflective]], prototype, multi-dispatch |
||
|{{no}} |
|{{no}} |
||
|strong |
|strong |
||
Line 691: | Line 691: | ||
|- |
|- |
||
! {{anchor|Smalltalk|[[Smalltalk]]}} |
! {{anchor|Smalltalk|[[Smalltalk]]}} |
||
|[[object-oriented]], [[concurrent programming]], [[event-driven programming]], [[imperative programming]], [[declarative programming]] |
|[[object-oriented]], [[concurrent programming|concurrent]], [[event-driven programming|event-driven]], [[imperative programming|imperative]], [[declarative programming|declarative]] |
||
|{{yes}}, [[ANSI]] |
|{{yes}}, [[ANSI]] |
||
|strong |
|strong |
||
Line 704: | Line 704: | ||
|- |
|- |
||
! {{anchor|Tcl|[[Tcl]]}} |
! {{anchor|Tcl|[[Tcl]]}} |
||
|[[imperative programming]], [[procedural programming]], [[event-driven programming]], [[object-oriented]] <small>(native from Tcl 8.6 or via [http://wiki.tcl.tk/970 extensions] before that)</small> |
|[[imperative programming|imperative]], [[procedural programming|procedural]], [[event-driven programming|event-driven]], [[object-oriented]] <small>(native from Tcl 8.6 or via [http://wiki.tcl.tk/970 extensions] before that)</small> |
||
|{{no}} |
|{{no}} |
||
|weak |
|weak |
||
Line 717: | Line 717: | ||
|- |
|- |
||
! {{anchor|V|[[V]]}} |
! {{anchor|V|[[V]]}} |
||
|[[functional programming]], [[stack]]-oriented, [[concatenative]] |
|[[functional programming|functional]], [[stack]]-oriented, [[concatenative]] |
||
|{{no}} |
|{{no}} |
||
|strong |
|strong |
||
Line 726: | Line 726: | ||
| |
| |
||
| |
| |
||
|[[functional programming]] research |
|[[functional programming|functional]] research |
||
|[[concatenative]] |
|[[concatenative]] |
||
|- |
|- |
||
! {{anchor|Visual Basic|[[Visual Basic]]}} |
! {{anchor|Visual Basic|[[Visual Basic]]}} |
||
|component-oriented programming, [[event-driven programming]] |
|component-oriented programming, [[event-driven programming|event-driven]] |
||
|{{no}} |
|{{no}} |
||
|strong |
|strong |
||
Line 743: | Line 743: | ||
|- |
|- |
||
! {{anchor|Visual Basic .NET|[[Visual Basic .NET]]}} |
! {{anchor|Visual Basic .NET|[[Visual Basic .NET]]}} |
||
|[[object-oriented]], [[event-driven programming]] |
|[[object-oriented]], [[event-driven programming|event-driven]] |
||
|{{no}} |
|{{no}} |
||
|strong |
|strong |
||
Line 756: | Line 756: | ||
|- |
|- |
||
! {{anchor|PowerShell|[[Windows PowerShell]]}} |
! {{anchor|PowerShell|[[Windows PowerShell]]}} |
||
|[[imperative programming]], [[object-oriented]], [[functional programming]], [[pipeline programming]], [[reflective programming]] |
|[[imperative programming|imperative]], [[object-oriented]], [[functional programming|functional]], [[pipeline programming|pipeline]], [[reflective programming|reflective]] |
||
|{{no}} |
|{{no}} |
||
|strong |
|strong |
Revision as of 23:38, 9 November 2009
Language | Paradigm(s) | Standardized | Type strength | Type safety | Expression of types | Type compatibility | Type checking | Parameter Passing Methods Available | Garbage collection | Intended use | Design goals |
---|---|---|---|---|---|---|---|---|---|---|---|
ActionScript | imperative, object-oriented, event-driven | Yes
, ECMA |
strong | safe | static | Yes | Web design | ||||
Ada | concurrent, distributed, generic, imperative, object-oriented | Yes
, ANSI, ISO, ANSI/MIL-STD-1815A-1983, ISO/IEC 8652, ISO/IEC TR 24718, GOST 27831-88 |
strong | safe | explicit | nominative | static | by value, by reference (compiler chosen if not determined by the data type) | GC is allowed, but not mandated | Embedded, real-time, mission-critical, long-lived, and large scale systems | Reliability and maintenance, Programming as a human activity, Efficiency Language Reference Manual |
ALGOL 68 | concurrent, imperative | Yes | strong | safe | explicit | structural | static or dynamic (programmer chosen) | by value or by reference (programmer chosen) | Yes | Application | Completeness and clarity of design, Orthogonal design, Security, Efficiency (Static mode checking, Mode-independent parsing, Independent compilation, Loop optimization, Representations in minimal & larger character sets) |
AutoHotkey | imperative | No | untyped | by value or by reference | No | End User Programming | simplicity, speed, stability | ||||
BASIC | procedural | Yes | varies by dialect | varies by dialect | Education | Simplicity | |||||
C | imperative | Yes | weak | unsafe | explicit | nominative | static | by value, by reference (through pointers) | No | System, Embedded | Low level access, Minimal constraint |
C# | imperative, object-oriented, generic, reflective | Yes | strong | safe (unsafe allowed) | implicit | nominative | static | Yes | Application | Rapid application development | |
C++ | imperative, object-oriented, generic | Yes
, ISO |
strong | safe (unsafe allowed) | explicit, partially implicit | nominative, structural | static, dynamic | by value, by reference (through reference types) | No | Application, System | Abstraction, Efficiency, Compatibility |
Clean | functional, generic | No | strong | implicit | static | Yes | General | Correctness, Modularity | |||
Clojure | functional, concurrent | strong | safe | dynamic, static | Yes | ||||||
COBOL | imperative, object-oriented | Yes | strong | static | No | Business and Financial Applications | Readability | ||||
ColdFusion | procedural, object-oriented | No | weak | implicit | dynamic | Web Development | Rapid Application Development, Ease of use | ||||
Common Lisp | imperative, functional, object-oriented | Yes | strong | safe | dynamic, static | Yes | General | Standardize Lisp | |||
D | imperative, object-oriented, generic | No | strong | safe, unsafe allowed | explicit, optional inferred | nominative, structural | static, dynamic | by value, by reference (through reference types) | Yes | Application, System | Compilability, Correctness, Efficiency |
E | imperative, object-oriented, object-capability, communicating event loops | No
, still in development |
strong (runtime) | safe | optional explicit | duck | dynamic | by value | Yes | Secure collaboration, distributed systems, running untrusted applications, high-level “scripting” | Familiarity to C/Java/JS users; less error-prone concurrency & security |
eC | imperative, object-oriented, generic, reflective | No | weak | unsafe | explicit, partially implicit | nominative, complex conversions system | static, dynamic | according to data type, or explicitly by value, by reference | Reference counting | Applications, GUIs, System, Games | Elegance, Performance, Simplicity, Lightness, 99.9% C compatibility |
Eiffel | imperative, object-oriented, generic | Yes | strong | safe | nominative | static | Yes | Application | Correctness, Efficiency, Design by contract | ||
Erlang | functional, concurrent, distributed, declarative - pattern matching, imperative | No | strong | safe | implicit | dynamic | immutable data structures, syntactically by value but safe sharing of compound data types | Yes | Telecom and distributed applications | Fault tolerance, Reliability - Nonstop Running, Hot Code Change, Safety, Concurrency, Distribution, Scalability | |
Forth | imperative, stack-oriented | Yes
, ANSI |
none | n/a | n/a | n/a | n/a | No | Application, Embedded systems | Compact implementations, Low level access, Interactive programming | |
Fortran | imperative, procedural, object-oriented | Yes | strong | safe | nominative | static | No | Scientific and numeric applications | Runtime efficiency, Simple syntax | ||
Groovy | imperative, object-oriented, aspect-oriented | No | strong | safe | implicit | dynamic | Yes | Application | JVM compatibility | ||
Haskell | functional, generic, lazy evaluation | Yes | strong | safe | inferred, optional explicit annotations | polymorphic structural | static | Yes | Application, Research | lazy evaluation, Teaching and research, completely formally described Report Preface | |
Io | object-oriented, prototype | No | strong | dynamic | Yes | ||||||
J | array programming, function-level programming, tacit | No | strong | safe | dynamic | by value, by name | Yes | Data processing, expressing concepts algorithms and architectures | Terseness, Expressiveness, Powerful Data Manipulation | ||
Java | imperative, object-oriented, generic, reflective | No | strong | safe | explicit | nominative | static | by value | Yes | Application | Write once run anywhere |
JavaScript | imperative, object-oriented, functional, reflective | Yes | weak | implicit | dynamic | Yes | Client side web scripting | ||||
Joy | functional, stack-oriented | No | strong | safe | dynamic | functional research | concatenative | ||||
Lisp | functional, reflective; others vary by dialect | No | strong | dynamic | Yes | General | Simple notation for Lambda calculus, Homoiconicity | ||||
Logo | procedural, functional | No | strong | safe | implicit | structural | dynamic | Yes | Education | Simple syntax, Turtle graphics, Interactive programming | |
Lua | procedural, imperative, reflective | No | strong | safe | implicit | dynamic | Yes | Host-driven Scripting | Small, embedded, configuration. | ||
Lucid | dataflow, functional | No | strong | safe | dynamic | stream processing | dataflow | ||||
Mathematica | functional, procedural | No | strong | dynamic | Yes | Numeric computation and visualization | |||||
MAXScript | imperative, object-oriented, procedural | No | strong | safe | implicit | dynamic | by value, by reference | 3D Art Tools, Scripting | Simplicity, Accessibilty | ||
Modula-3 | imperative, object-oriented, procedural, generic | No | strong | safe (unsafe allowed) | explicit | structural | static | by value, by reference | Yes | Application, Systems | Simple, Object oriented |
Nial | functional, array programming | No | strong | dynamic | Data processing | ||||||
Oberon-2 | procedural, imperative, object-oriented | No | strong | safe | explicit | structural | static | by value, by reference | Yes | Teaching, System | Simplicity |
Object Pascal (Delphi) | imperative, object-oriented, generic | No | strong | safe (unsafe allowed) | explicit | nominative | static | some types | Application, System | Readability, Rapid application development, Modularity | |
Objective-C | imperative, object-oriented, reflective | Yes | weak | explicit | static | Yes
(as of 2.0) |
Application | Smalltalk like, Component based code reuse, C compatibility | |||
Ocaml | object-oriented, functional, imperative, generic | No | strong | safe | inferred, optional explicit annotations | polymorphic structural | static | by value | Yes | Application | Efficiency, Robustness, Correctness |
Oz | logic programming, functional, imperative, object-oriented, concurrent | No | dynamic | Yes | Education | ||||||
Pascal | imperative, procedural | Yes
(Extended Pascal standardized under ISO) |
strong | safe | explicit | static | by value, by reference | No | Education | Readability, Discipline, Modularity | |
Perl | imperative, procedural, reflective, functional, object-oriented, generic | No | weak | implicit | dynamic | by reference | Reference counting | Text processing, Scripting | Terseness, Expressiveness | ||
PHP | imperative, object-oriented, reflective | No | weak | dynamic | Yes | Web Application, CLI | Robustness and Simplicity | ||||
Pop11 | imperative, object-oriented, functional | No | strong | safe | implicit | dynamic | Yes | Application, Education | |||
Prolog | logic programming | Yes
, ISO |
strong | dynamic | Yes | Problem solving, Artificial intelligence | declarative | ||||
Pure | dynamic, functional | strong | structural | dynamic | Yes | ||||||
Python | imperative, object-oriented, functional, aspect-oriented, reflective | No | strong | safe | implicit | dynamic | Call by object reference | Yes | Application, Education, Scripting | Simplicity, Readability, Expressiveness, Modularity | |
RapidQ | imperative, component-oriented programming, event-driven | No | strong (none for Variant type) | safe | static | by reference, by value | Application | Rapid application development, Simplicity, BASIC compatibility | |||
Ruby | imperative, object-oriented, aspect-oriented, reflective | No | strong | implicit | dynamic | by reference | Yes | Application, Scripting | Expressiveness, Readability | ||
Scala | object-oriented, functional, generic | No | strong | partially implicit | static | Yes | Education | ||||
Scheme | functional | Yes
, R5RS, R6RS |
strong | safe | implicit | dynamic (latent) | by value | Yes | General, Education | Minimalistic, Lexical Scoping | |
Slate | object-oriented, imperative, functional, reflective, prototype, multi-dispatch | No | strong | safe | implicit, optional | structural (aka duck) | dynamic | by reference | Yes | Application, Embedded, Scripting | Uniformity, Pure object-oriented, expressiveness, readability |
Smalltalk | object-oriented, concurrent, event-driven, imperative, declarative | Yes
, ANSI |
strong | safe | implicit | dynamic | by reference | Yes | Application, Education | Uniformity, Pure object oriented | |
Tcl | imperative, procedural, event-driven, object-oriented (native from Tcl 8.6 or via extensions before that) | No | weak | safe | implicit | duck | dynamic | by value (also by name and by reference through passing of variable names and upvar command)
|
Only of unnamed entities, e.g., values | Embedded, Application, Scripting | Extend, Embed and Integrate |
V | functional, stack-oriented, concatenative | No | strong | safe | dynamic | functional research | concatenative | ||||
Visual Basic | component-oriented programming, event-driven | No | strong | safe | nominative | static | by reference, by value (explicit) | Yes | Application | Rapid application development, Simplicity | |
Visual Basic .NET | object-oriented, event-driven | No | strong | static | by reference, by value (both explicit) | Yes | Application | Rapid application development, Simplicity | |||
Windows PowerShell | imperative, object-oriented, functional, pipeline, reflective | No | strong | safe | implicit | dynamic | Scripting | ||||
Language | Paradigm(s) | Standardized | Type strength | Type safety | Expression of types | Type compatibility | Type checking | Parameter Passing Methods Available | Garbage collection | Intended use | Design goals |