Language Comparison Table: Difference between revisions

From Rosetta Code
Content added Content deleted
(Added another Erlang paradigm, we need to shorten these links. Looks like a Perl program to me.)
(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

, GOST 27974-88

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

, ANSI, ISO

varies by dialect varies by dialect Education Simplicity
C imperative Yes

, ANSI C89, ISO C90/C99

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

, ECMA, ISO

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

, ECMA-367, ISO/IEC 25436:2006

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

, ISO, ISO/IEC 1539-1:2004

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

, Haskell 98 Report

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
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

External resources