⚠️ Warning: This is a draft ⚠️

This means it might contain formatting issues, incorrect code, conceptual problems, or other severe issues.

If you want to help to improve and eventually enable this page, please fork RosettaGit's repository and open a merge request on GitHub.

[[Category:Encyclopedia]] {|class="wikitable sortable" ![[:Category:Programming Languages|Language]] ![[:Category:Programming paradigm|Paradigm(s)]] !Standardized ![[Type strength]] ![[Type safety]] !Expression of types ![[Type compatibility]] ![[Type checking]] ![[Parameter Passing]] Methods Available ![[Garbage collection]] !Intended use !Design goals |-

! {{anchor|ACL2|[[ACL2]]}} |[[functional programming|functional]] |{{yes}} |strong |unsafe |implicit | |dynamic |immutable reference |{{yes}} |Theorem proving |Be logically sound, mimic Common Lisp |-

! {{anchor|ActionScript|[[ActionScript]]}} |[[imperative programming|imperative]], [[object-oriented]],[[:Category:Programming paradigm/Distributed|distributed]] |{{yes|Yes, [[wp:Ecma_International|ECMA]]}} |strong |safe | | |static | |{{yes}} |Web design | |-

! {{anchor|Ada|[[Ada]]}} |[[concurrent programming|concurrent]], [[:Category:Programming paradigm/Distributed|distributed]], [[generic programming|generic]], [[imperative programming|imperative]], [[object-oriented]] |{{yes|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 |safe |explicit |nominative |static |by value, by reference (compiler chosen if not determined by the data type) |{{optional|GC is allowed, but not mandated}} |Embedded, [[real-time computing|real-time]], mission-critical, long-lived, and large scale systems |Reliability and maintenance, Programming as a human activity, Efficiency [http://www.adaic.com/standards/05rm/html/RM-0-3.html Language Reference Manual] |-

! {{anchor|ALGOL_68|[[ALGOL 68]]}} |[[concurrent programming|concurrent]], [[imperative programming|imperative]] |{{yes|Yes, [http://vak.ru/lib/exe/fetch.php/book/gost/pdf/gost-27974-88.pdf GOST 27974-88]}} |soft, weak, meek, firm and strong - depending on context. |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) |-

! {{anchor|ALGOL_W|[[ALGOL W]]}} |[[imperative programming|imperative]] |{{no}} |strong |safe |explicit |nominative |static or dynamic (programmer chosen) |by value, by reference or by name (programmer chosen) |{{yes}} |Application, Education | |-

! {{anchor|AmbientTalk|[[AmbientTalk]]}} |[[concurrent programming|concurrent]] | |strong |safe |explicit |duck |dynamic |by value | |Mobile ad hoc networks | |-

! {{anchor|AutoHotkey|[[AutoHotkey]]}} |[[imperative programming|imperative]] |{{no}} |untyped | | | | |by value or by reference |{{no}} |End User Programming |simplicity, speed, stability |-

! {{anchor|AutoIt|[[AutoIt]]}} |[[imperative programming|imperative]] | | | | | | |by value or by reference | |General, scripting, GUI and tasks automation |Simplicity |-

! {{anchor|BASIC|[[BASIC]]}} |[[procedural programming|procedural]] |{{yes|Yes, [[ANSI]], [[ISO]]}} |varies by dialect | | | | | |{{optional|varies by dialect}} |Education |Simplicity |-

! {{anchor|C|[[C]]}} |[[imperative programming|imperative]] |{{yes|Yes, [[ANSI]] [[C89]], [[ISO]] [[C90]]/[[C99]]}} |weak |unsafe |explicit |nominative |static |by value, by reference (through pointers) |{{optional}} through [[wp:Boehm-GC|external tools]] |System, Embedded |Low level access, Minimal constraint |-

! {{anchor|C_sharp|[[C sharp|C#]]}} |[[imperative programming|imperative]], [[object-oriented]], [[generic programming|generic]], [[reflective programming|reflective]], [[functional programming|functional]], [[event-driven programming|event-driven]] |{{yes|Yes, [[wp:Ecma_International|ECMA]], [[ISO]]}} |strong |safe (unsafe allowed) |implicit |nominative |static, dynamic (for interop) |by value, by reference (through managed pointers [explicitly in, out, or in-out]) |{{yes}} |Application |Rapid application development |-

! {{anchor|C++|[[C++]]}} |[[imperative programming|imperative]], [[object-oriented]], [[generic programming|generic]] |{{yes|Yes, [[ISO]] [[C++98]]/[[C++11]]}} |strong |safe (unsafe allowed) |explicit, partially implicit |nominative, structural |static, dynamic |by value, by reference (through reference types) |{{optional}} through [[wp:Boehm-GC|external tools]] |Application, System |Abstraction, Efficiency, Compatibility |-

! {{anchor|Chapel|[[Chapel]]}} |[[concurrent]], [[generic programming|generic]], [[object-oriented]], [[imperative programming|imperative]], [[:Category:Programming paradigm/Distributed|distributed]], [[reflective programming|reflective]] |{{no|No, still under development, a [http://chapel.cray.com/spec/spec-0.93.pdf preliminary language specification] exists}} |strong |safe |explicit, partially inferred |nominative |static |by value, by reference |No |High Performance Computing |Programmer productivity (compared to C/Fortran), performance |-

! {{anchor|Clean|[[Clean]]}} |[[functional programming|functional]], [[generic programming|generic]] |{{no}} |strong | |implicit | |static | |{{yes}} |General |Correctness, Modularity |-

! {{anchor|Clojure|[[Clojure]]}} |[[functional programming|functional]], [[concurrent programming|concurrent]] | |strong |safe | | |dynamic, static | |{{yes}} | | |-

! {{anchor|COBOL|[[COBOL]]}} |[[imperative programming|imperative]], [[object-oriented]] |{{yes|Yes, [[ANSI]] 68, 74, 85 (and subsequent revisions); [[ISO]] 2002, 2014}} |strong |safe |explicit | |static |by value, by reference |{{no}} |Business and Financial Applications |Readability |-

! {{anchor|ColdFusion|[[ColdFusion]]}} |[[procedural programming|procedural]], [[object-oriented]] |{{no}} |weak | |implicit | |dynamic | | |Web Development |Rapid Application Development, Ease of use |-

! {{anchor|Common Lisp|[[Common Lisp]]}} |[[imperative programming|imperative]], [[functional programming|functional]], [[object-oriented]] |{{yes}} |strong |safe | | |dynamic, static | |{{yes}} |General |Standardize [[Lisp]] |-

! {{anchor|D|[[D]]}} |[[imperative programming|imperative]], [[object-oriented]], [[generic programming|generic]] |{{no}} |strong |safe |explicit, optional inferred |nominative, structural |static, dynamic |by value, by reference (through reference types) |{{yes}} |Application, System |Compilability, Correctness, Efficiency |-

! {{anchor|Dao|[[Dao]]}} |[[object-oriented]] | |strong |safe, unsafe allowed |implicit, explicit | |static, dynamic | |{{yes}} | | |-

! {{anchor|Dyalect|[[Dyalect]]}} |[[imperative programming|imperative]], [[object-oriented]], [[functional programming|functional]] |{{no}} |strong |safe |implicit |duck |dynamic |by reference |{{yes}} |Application |Portable dynamic scripting language with consistent design and modern syntax |-

! {{anchor|Dylan|[[Dylan]]}} |[[imperative programming|imperative]], [[object-oriented]], [[functional programming|functional]], [[procedural programming|procedural]] | |strong |safe | | |static, dynamic | |{{yes}} | | |-

! {{anchor|E|[[E]]}} |[[imperative programming|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]]/[[JavaScript|JS]] users; less error-prone concurrency & security |-

! {{anchor|EC|[[eC]]}} |[[imperative programming|imperative]], [[object-oriented]], [[generic programming|generic]], [[reflective programming|reflective]] |{{no}} |weak |unsafe |explicit, partially implicit |nominative, complex conversions system |static, dynamic |according to data type, or explicitly by value, by reference |{{optional|Reference counting}} |Applications, GUIs, System, Games |Elegance, Performance, Simplicity, Lightness, 99.9% [[C]] compatibility |-

! {{anchor|Eiffel|[[Eiffel]]}} |[[imperative programming|imperative]], [[object-oriented]], [[generic programming|generic]] |{{yes|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 |safe | |nominative |static | |{{yes}} |Application |Correctness, Efficiency, Design by contract

|-

! {{anchor|Ela|[[Ela]]}} |[[functional programming|functional]] |{{no}} |strong |safe |implicit |duck |dynamic |by reference |{{yes}} |Application | |-

|-

! {{anchor|Elm|[[Elm]]}} |[[functional programming|functional]], functional reactive programming, [[declarative programming|declarative]], pattern matching |{{no}} |strong |safe |inferred, optional explicit annotations | |static |immutable data structures, syntactically by value, time-varying with Signals |{{yes}} |Web Development, GUIs, Applications, Games |Simple, Modular, Safe, Reactive |-

|-

! {{anchor|Elena|[[Elena]]}} |[[object-oriented]] | |strong |safe |implicit | |dynamic | |{{yes}} | | |-

! {{anchor|Erlang|[[Erlang]]}} |[[functional programming|functional]], [[concurrent programming|concurrent]], [[:Category:Programming paradigm/Distributed|distributed]], [[declarative programming|declarative]] - pattern matching, [[imperative programming|imperative]] |{{no}} |strong |safe |implicit | |dynamic |immutable data structures, syntactically by value but safe sharing of compound data types |{{yes}} |Telecom and mission critical distributed applications |Fault tolerance, Reliability - Nonstop Running, Hot Code Change, Safety, Concurrency, Distribution, Scalability |-

! {{anchor|ERRE|[[ERRE]]}} |[[imperative programming|imperative]], [[procedural programming|procedural]] |{{no}} |weak |unsafe |explicit | |static and dynamic |by value |{{yes}} |Education |Readability, Modularity |-

! {{anchor|Factor|[[Factor]]}} |[[stack]]-oriented |{{no}} | |safe |implicit |duck |dynamic |by reference |{{yes}} | |x |-

! {{anchor|Forth|[[Forth]]}} |[[imperative programming|imperative]], [[stack]]-oriented |{{yes|Yes, [[ANSI]]}} |none |n/a |n/a |n/a |n/a | |{{no}} |Applications, High reliability, Embedded systems, Booting new hardware. |Compact implementations, Low level access, Interactive programming, CPU agnostic Assembler Alternative, ultra-small memory systems. |-

! {{anchor|Fortran|[[Fortran]]}} |[[imperative programming|imperative]], [[procedural programming|procedural]], [[object-oriented]], (partially) [[generic programming|generic]], [[concurrent programming|concurrent]] |{{yes|Yes, [[ISO]], [http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=39691 ISO/IEC 1539-1:2004]}} |strong |safe |explicit, partially implicit |nominative |static, dynamic |by reference, or explicitly by value |{{no}} |Scientific and numeric applications |Runtime efficiency, Simple syntax |-

! {{anchor|FutureBasic|[[FutureBasic]]}} |[[procedural programming|procedural]] |{{no|No}} |strong |safe | | | |by value, by reference (through pointers) |{{no|No}} |Educational, Prototyping, Commerical Applications |Readability, Simplicity, Compliability, Freeware, Efficiency |-

! {{anchor|Gambas|[[Gambas]]}} |[[object-oriented|object-oriented]] |{{no}} |strong |safe |explicit | |dynamic |by value, by reference | |Application, Scripting |Rapid application development, Visual Basic alternative |-

! {{anchor|Go|[[Go]]}} |[[concurrent programming|concurrent]] |{{no}}, [http://golang.org/ref/spec language specification] available |strong |safe |explicit, optionally inferred |nominative; structural for interface types |static |by value |{{yes}} | | |-

! {{anchor|Gosu|[[Gosu]]}} |[[imperative programming|imperative]], [[object-oriented]], [[generic programming|generic]], [[functional programming|functional]] |{{yes|Yes}} |strong |safe |explicit, optionally inferred |nominative and structural |static |by value |{{yes}} |Application |Open type system, optional dynamic loading |-

! {{anchor|Groovy|[[Groovy]]}} |[[imperative programming|imperative]], [[object-oriented]], [[wp:Aspect-oriented_programming|aspect-oriented]] |{{no}} |strong |safe |implicit |nominative |dynamic | |{{yes}} |Application |[[JVM]] compatibility |-

! {{anchor|Haskell|[[Haskell]]}} |[[functional programming|functional]], [[generic programming|generic]], [[lazy evaluation]] |{{yes|Yes, [http://www.haskell.org/onlinereport/haskell2010/ Haskell 2010 Report], [http://www.haskell.org/onlinereport/ Haskell 98 Report]}} |strong |safe |inferred, optional explicit annotations |polymorphic structural |static | |{{yes}} |Application, Research |[[lazy evaluation]], Teaching and research, completely formally described [http://haskell.org/onlinereport/preface-jfp.html Report Preface] |-

! {{anchor|Huginn|[[Huginn]]}} |[[imperative programming|imperative]], [[object-oriented]], [[functional programming|functional]] |{{no|No, [http://huginn.org/referece language reference] included with each version's documentation}} |strong |safe |implicit | |dynamic |by reference |{{optional|Reference counting}} |Education, Application, Scripting, Interactive system shell |Consistency, Simplicity, Readability, Expressiveness, Modularity |-

! {{anchor|Icon|[[icon]]}} | [[procedural programming|procedural]], [[structured]], [[Goal_directed_programming|goal directed]], [[string scanning]], [[co-expressions]] | {{no}} | strong | Safe | implicit | nominative | dynamic | by value and safe reference depending if the type is mutable or immutable | {{yes}} | Text analysis, text editing, document formatting, artificial intelligence, expert systems, rapid prototyping, symbolic mathematics, text generation, and data laundry | Facilitates ease of programming, short concise programs, automatic storage allocation and management, provide a rich base of basic data types and structures, and platform independence. Also see [[#Unicon|Unicon]] for the unified extended dialect of Icon. |-

! {{anchor|Io|[[Io]]}} |[[object-oriented]], prototype |{{no}} |strong | | | |dynamic | |{{yes}} | | |-

! {{anchor|J|[[J]]}} |[[array]] programming, function-level programming, [[tacit programming|tacit]] |{{no}} |strong |safe |inferred |structural |dynamic |by value, by name, by address for memory mapped files (and, indirectly, for foreign languages) |{{yes}} |Data processing, expressing concepts algorithms and architectures |Describe computers mathematically and concisely |-

! {{anchor|Java|[[Java]]}} |[[imperative programming|imperative]], [[object-oriented]], [[generic programming|generic]], [[reflective programming|reflective]] |{{yes|Yes, [http://docs.oracle.com/javase/specs/index.html Java SE Specifications]}} |strong |safe |explicit |nominative |static |by value |{{yes}} |Application |Write once run anywhere |-

! {{anchor|JavaScript|[[JavaScript]]}} |[[imperative programming|imperative]], [[object-oriented]], [[functional programming|functional]], [[reflective programming|reflective]] |{{yes|Yes, [[ECMAScript standard]]}} |weak | |implicit | |dynamic |by value |{{yes}} |Client side web scripting | |-

! {{anchor|Joy|[[Joy]]}} |[[functional programming|functional]], [[stack]]-oriented |{{no}} |strong |safe | | |dynamic | | |[[functional programming|functional]] research |[[concatenative programming|concatenative]] |-

! {{anchor|Kabap|[[Kabap]]}} |[[imperative programming|imperative]], [[Dynamic programming|dynamic]], extensible |{{yes}} |weak |unsafe |implicit |duck |dynamic |by value | |User scripting, general |Safe sandboxed, easy to learn, easier to implement. Use to avoid eval() & reflection |-

! {{anchor|Kotlin|[[Kotlin]]}} |[[imperative programming|imperative]], [[object-oriented]], [[procedural programming|procedural]], [[functional programming|functional]], [[generic programming|generic]], [[reflective programming|reflective]] |{{no}} |strong |safe |explicit, optionally inferred |nominative |static, dynamic (JS only) |by value (read-only) |{{yes}} |Application |Pragmatic language for modern multi-platform applications with compilers for JVM, JS and Native code |-

! {{anchor|LDPL|[[LDPL]]}} |[[imperative programming|imperative]] |{{yes|Yes, [https://ldpl.lartu.net/reference LDPL Standard 19]}} |strong |safe |explicit | |static | |{{no}} |Portable applications, readable source codes, teaching |Readability |-

! {{anchor|LFE|[[LFE]]}} |[[functional programming|functional]], [[concurrent programming|concurrent]], [[:Category:Programming paradigm/Distributed|distributed]], [[declarative programming|declarative]] - pattern matching, [[imperative programming|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 |-

! {{anchor|Lisp|[[Lisp]]}} |[[functional programming|functional]], [[reflective programming|reflective]]; others vary by dialect |{{no}} |strong | | | |dynamic | |{{yes}} |General |Simple notation for Lambda calculus, Homoiconicity |-

! {{anchor|Logo|[[Logo]]}} |[[procedural programming|procedural]], [[functional programming|functional]] |{{no}} |strong |safe |implicit |structural |dynamic | |{{yes}} |Education |Simple syntax, Turtle graphics, Interactive programming |-

! {{anchor|Lua|[[Lua]]}} |[[procedural programming|procedural]], [[imperative programming|imperative]], [[reflective programming|reflective]] |{{no}} |strong |safe |implicit | |dynamic | |{{yes}} |Host-driven Scripting |Small, embedded, configuration. |-

! {{anchor|Lucid|[[Lucid]]}} |[[dataflow programming|dataflow]], [[functional programming|functional]] |{{no}} |strong |safe | | |dynamic | | |stream processing |dataflow |-

! {{anchor|Luck|[[Luck]]}} |[[imperative programming|imperative]], [[functional programming|functional]] |{{no}} |weak |unsafe |explicit, partially inferred |nominative |static |by value or by reference |{{yes}} |systems programming |fast, C compatible, high-level language |-

! {{anchor|Mathematica|[[Mathematica]]}} |[[functional programming|functional]], [[procedural programming|procedural]] |{{no}} |strong | | | |dynamic | |{{yes}} |Numeric and symbolic computation, visualization | |-

! {{anchor|MATLAB|[[MATLAB]]}} |[[procedural programming|procedural]], [[imperative programming|imperative]], [[array]] programming |{{no|No, however the language is also implemented in [[Octave]] and [[FreeMat]]}} |strong |unsafe | | |dynamic |by value |{{yes}} |Numeric computation and visualization |At the beginning designed as interpreter for easy use of fortran libraries, nowadays high performance numerical analysis and visualization |-

! {{anchor|MAXScript|[[MAXScript]]}} |[[imperative programming|imperative]], [[object-oriented]], [[procedural programming|procedural]] |{{no}} |strong |safe |implicit | |dynamic |by value, by reference | |3D Art Tools, Scripting |Simplicity, Accessibilty |-

! {{anchor|Modula-3|[[Modula-3]]}} |[[imperative programming|imperative]], [[object-oriented]], [[procedural programming|procedural]], [[generic programming|generic]] |{{no}} |strong |safe (unsafe allowed) |explicit |structural |static |by value, by reference |{{yes}} |Application, Systems |Simple, Object oriented |-

! {{anchor|MUMPS|[[MUMPS]]}} |[[procedural programming|procedural]] |{{yes|Yes, [[ISO]]}} |untyped |not applicable | | | |by value, by reference |{{yes}} | |Built-in Persistent Storage |-

! {{anchor|Nial|[[Nial]]}} |[[functional programming|functional]], [[array]] programming |{{no}} |strong | | | |dynamic | | |Data processing | |-

! {{anchor|Nim|[[Nim]]}} |[[procedural programming|procedural]], [[functional programming|functional]], [[generic programming|generic]] |{{no}} |strong |safe |explicit |nominative, structural |static |by value, by reference (through reference types) |{{Yes}} |General, Application, Systems, Games, Scripting, Web |Efficient, Expressive, Elegant in that order. |-

! {{anchor|Oberon-2|[[Oberon-2]]}} |[[procedural programming|procedural]], [[imperative programming|imperative]], [[object-oriented]] |{{no}} |strong |safe |explicit |structural |static |by value, by reference |{{yes}} |Teaching, System |Simplicity |-

! {{anchor|Objeck|[[Objeck]]}} |[[object-oriented]],[[functional programming|functional]] |{{no}} |strong |safe |explicit |nominative |static |by value |{{yes}} |General, Education |Minimalist, Cross-Platform, Modular |-

! {{anchor|Object Pascal|[[Object Pascal]]}} ({{anchor|Delphi|[[Delphi]]}}) |[[imperative programming|imperative]], [[object-oriented]], [[generic programming|generic]] |{{no}} |strong |safe (unsafe allowed) |explicit |nominative |static, dynamic |by reference, by value |{{optional|some types}} |Application, System |Readability, Rapid application development, Modularity |-

! {{anchor|Objective-C|[[Objective-C]]}} |[[imperative programming|imperative]], [[object-oriented]], [[reflective programming|reflective]], [[generic programming|generic]] (as of Xcode 7) |{{no}} |weak | |explicit | |static |by value |{{yes|Yes (as of 2.0)}} |Application |[[Smalltalk]] like, Component based code reuse, [[C]]/[[C++]] compatibility |-

! {{anchor|OCaml|[[OCaml]]}} |[[object-oriented]], [[functional programming|functional]], [[imperative programming|imperative]], [[generic programming|generic]] |{{no|No, [http://caml.inria.fr/pub/docs/manual-ocaml/index.html the manual] includes language specification}} |strong |safe |inferred, optional explicit annotations |polymorphic structural |static |by value |{{yes}} |Application |Efficiency, Robustness, Correctness |-

! {{anchor|Oz|[[Oz]]}} |logic programming, [[functional programming|functional]], [[imperative programming|imperative]], [[object-oriented]], [[concurrent programming|concurrent]] |{{no}} |strong |safe |implicit |structural |dynamic |by reference (though often immutable) |{{yes}} |Application, Education, Distribution | |-

! {{anchor|PARI/GP|[[PARI/GP]]}} |[[imperative programming|imperative]], [[procedural programming|procedural]] |{{no}} |weak |unsafe |implicit |nominal |dynamic |by value, by reference |{{yes}} |Mathematics, especially number theory | |-

! {{anchor|Pascal|[[Pascal]]}} |[[imperative programming|imperative]], [[procedural programming|procedural]] |{{yes|Yes, Extended Pascal standardized under [[ISO]]}} |strong |safe |explicit | |static (some dialects also dynamic) |by reference, by value |{{no}} |General, Application, Education, System |Readability, Discipline, Modularity |-

! {{anchor|Perl|[[Perl]]}} |[[imperative programming|imperative]], [[procedural programming|procedural]], [[reflective programming|reflective]], [[functional programming|functional]], [[object-oriented]], [[generic programming|generic]] |{{no}} |weak | |implicit | |dynamic, static |by reference |{{optional|Reference counting}} |Text processing, Scripting |Terseness, Expressiveness |-

! {{anchor|Perl 6|[[Perl 6]]}} |[[imperative programming|imperative]], [[procedural programming|procedural]], [[reflective programming|reflective]], [[functional programming|functional]], [[object-oriented]], [[generic programming|generic]], [[lazy evaluation]], multiple dispatch, metaprogramming |{{yes|Yes, [http://perlcabal.org/syn/#doctable Perl 6 Synopses]}} |strong |safe, unsafe |optional explicit |nominal (duck and structural available via constraints, patterns, generics, and gradual typing) |dynamic, static |by value, by reference |{{yes}} |Application, text processing, scripting |Expressiveness, generality |-

! {{anchor|Phix|[[Phix]]}} |[[imperative programming|imperative]], [[procedural programming|procedural]] |{{no}} |strong |safe |explicit, partially implicit |duck |dynamic, static |copy on write, immutable reference, multiple returns |{{optional|Reference counting}} |Application, General, High-level scripting, Text processing |Simplicity, Readability, Facilitate ease of programming and maintenance |-

! {{anchor|PHP|[[PHP]]}} |[[imperative programming|imperative]], [[object-oriented]], [[reflective programming|reflective]] |{{no}} |weak | | | |dynamic |by value, by reference |{{yes}} |Web Application, CLI |Robustness and Simplicity |-

! {{anchor|Pike|[[Pike]]}} |[[imperative programming|imperative]], [[procedural programming|procedural]], [[functional programming|functional]], [[object-oriented]], [[reflective programming|reflective]], [[event-driven programming|event-driven]] |{{no}} |strong |safe |explicit |structural |dynamic, static |by value, by reference |{{yes}} |Application, scripting |optimized execution, efficient networking |-

! {{anchor|Pop11|[[Pop11]]}} |[[imperative programming|imperative]], [[object-oriented]], [[functional programming|functional]] |{{no}} |strong |safe |implicit | |dynamic | |{{yes}} |Application, Education | |-

! {{anchor|Prolog|[[Prolog]]}} |logic programming |{{yes|Yes, [[ISO]]}} |strong | | | |dynamic | |{{yes}} |Problem solving, Artificial intelligence |[[declarative programming|declarative]] |-

!{{anchor|Pure|[[Pure]]}} |[[dynamic programming|dynamic]], [[functional programming|functional]] | |strong | | |structural |dynamic | |{{yes}} | | |-

! {{anchor|Python|[[Python]]}} |[[imperative programming|imperative]], [[object-oriented]], [[functional programming|functional]], [[wp:Aspect-oriented_programming|aspect-oriented]], [[reflective programming|reflective]] |{{no|No, [http://docs.python.org/reference/index.html language reference] included with each version's documentation}} |strong |safe |implicit | |dynamic |by value ([[wp:Python_syntax_and_semantics#Data_structures|Call by object reference]]) |{{yes}} |Application, Education, Scripting |Simplicity, Readability, Expressiveness, Modularity |-

! {{anchor|Ra|[[Ra]]}} |[[object-oriented]] |{{no}} |dynamic or static |safe |implicit or explicit | |dynamic or static | |{{yes}} |General |Program in native language, clean and clear syntax, extensive standard library, convenience |-

! {{anchor|Racket|[[Racket]]}} |[[functional programming|functional]], [[imperative programming|imperative]], [[object-oriented]], [[reflective programming|reflective]] |{{no}} |strong |safe |implicit or explicit (see [http://docs.racket-lang.org/ts-guide/index.html Typed Racket]) | |dynamic or static |by value |{{yes}} |General |Extensibility, Simplicity, Modularity |-

! {{anchor|RapidQ|[[RapidQ]]}} |[[imperative programming|imperative]], component-oriented programming, [[event-driven programming|event-driven]] |{{no}} |strong (none for Variant type) |safe | | |static |by reference, by value | |Application |Rapid application development, Simplicity, [[BASIC]] compatibility |-

! {{anchor|R|[[R]]}} |[[functional programming|functional]], [[imperative programming|imperative]], [[reflective programming|reflective]], [[array]] |{{no}} |strong |safe |implicit |Duck, structural |dynamic |value by need, by name (programmer chosen) |{{yes}} |Statistics, Numerical computation, Visualization, Education |Expressiveness, interactive manipulation and analysis of datasets |-

! {{anchor|REXX|[[REXX]]}} ({{anchor|REXX|[[Classic REXX]]}}) | [[dynamic programming|dynamic]], [[procedural programming|procedural]], [[functional programming|functional]] | {{yes|Yes. There is a ANSI standard (X3.274-1996), but some REXX implementations don't adhere to it.}} |strong |safe |inferred |nominal |dynamic (but only when both comparands are numeric ''and'' non-strict comparisons are used) |by value |{{optional| garbage collection is allowed (and in most cases, automatic), but not mandated}} |general, application, algorithms, scripting, host/sub-system scripting/interfacing, data/text processing, programming as a human activity |designed to make programming easier; to foster high quality programs by making writing them as simple and enjoyable as possible; designing each part of the language for people to use is more important than providing easy implementation; principle of least astonishment. |-

! {{anchor|Ruby|[[Ruby]]}} |[[imperative programming|imperative]], [[object-oriented]], [[functional programming|functional]], [[reflective programming|reflective]] |{{yes|Yes, JIS X 3017 (2011), ISO/IEC 30170 (2012)}} |strong | |implicit | |dynamic |by value (Call by object reference) |{{yes}} |Application, Scripting |Expressiveness, Readability |-

! {{anchor|Rust|[[Rust]]}} |[[concurrent programming|concurrent]], [[functional programming|functional]], [[imperative programming|imperative]], [[structured]], [[generic programming|generic]] |{{no}} |strong |safe |explicit, optionally inferred |nominal |static |by value, by reference |{{optional|resource acquisition is initialization (RAII), optional reference counting}} |Application, System |Highly concurrent and highly safe systems |-

! {{anchor|Scala|[[Scala]]}} |[[object-oriented]], [[functional programming|functional]], [[generic programming|generic]] |{{yes|Yes, [http://www.scala-lang.org/docu/files/ScalaReference.pdf The Scala Language Specification Version 2.9]}} |strong |safe |partially implicit |nominative, structural |static |by value, by name |{{yes}} |General, Education, Parallel computing, DSL and scripting. |Concise, Type-safe, Integrate OO and functional paradigms, Scalable and Elegance. Platform independent |-

! {{anchor|Scheme|[[Scheme]]}} |[[functional programming|functional]] |{{yes|Yes, [http://www.schemers.org/Documents/Standards/R5RS/ R5RS], [http://www.r6rs.org/ R6RS]}} |strong |safe |implicit | |dynamic (latent) |by value |{{yes}} |General, Education |Minimalistic, Lexical Scoping |-

! {{anchor|Seed7|[[Seed7]]}} |extensible, [[object-oriented]], [[imperative programming|imperative]], structured, [[generic programming|generic]], [[reflective programming|reflective]] |{{no}} |strong |safe |explicit |nominative |static |by value, by reference, by name |{{yes|Yes (no garbage collection process that stops the world)}} |General, Application, System |Extensibility, Portability, Reliability, Efficiency, Elegance |-

! {{anchor|Sidef|[[Sidef]]}} |[[object-oriented]], [[imperative programming|imperative]], [[reflective programming|reflective]], [[dynamic programming|dynamic]], [[functional programming|functional]] |{{no}} |weak |unsafe |optional explicit |duck |dynamic |by value (Call by object reference), by reference |{{optional|Reference counting}} |Application, Scripting, PL Research, Education |Expressiveness, Elegance, Readability |-

! {{anchor|SkookumScript|[[SkookumScript]]}} |[[concurrent programming|concurrent]], [[object-oriented]], [[functional programming|functional]], [[imperative programming|imperative]], [[generic programming|generic]] |{{no|No, [http://skookumscript.com/docs/v3.0/lang/syntax/ online syntax] includes EBNF language specification}} |strong |safe |inferred, optional explicit annotations |nominal |static |by reference |{{optional|Reference counting}} |Embedded gameplay, AI, automation, scripting |Game concepts, Interactivity, Live workflow, Efficiency, Embedded |-

! {{anchor|Slate|[[Slate]]}} |[[object-oriented]], [[imperative programming|imperative]], [[functional programming|functional]], [[reflective programming|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 |-

! {{anchor|Smalltalk|[[Smalltalk]]}} |[[object-oriented]], [[concurrent programming|concurrent]], [[event-driven programming|event-driven]], [[imperative programming|imperative]], [[declarative programming|declarative]] |{{yes|Yes, [http://wiki.squeak.org/squeak/172 ANSI]}} |strong |safe |implicit |protocol (aka duck) |dynamic |by value (Call by object reference) |{{yes}} |Application, Education |Uniformity, Pure object oriented |-

! {{anchor|SPARK|[[SPARK]]}} |[[concurrent programming|concurrent]], [[imperative programming|imperative]], [[object-oriented]] |{{no|No, but [http://docs.adacore.com/spark2014-docs/html/lrm/ Language Reference Manual] available.}} |strong |safe |explicit |nominative |static |by value, by reference |{{optional|Allowed}} |High integrity applications |Logically sound, simple formal definition, expressive power, security, applications verifiable and have bounded space and time. |-

! {{anchor|Standard ML|[[Standard ML]]}} |[[functional programming|functional]], [[imperative programming|imperative]], [[generic programming|generic]] |{{yes|Yes, [http://www.smlnj.org/sml97.html SML '97]}} |strong |safe |inferred, optional explicit annotations |polymorphic structural |static |by value |{{yes}} | | |-

! {{anchor|Swift|[[Swift]]}} |[[imperative programming|imperative]], [[object-oriented]], [[generic programming|generic]] |{{no}} |strong | |inferred, optional explicit annotations |nominative |static |by value |{{optional|Reference counting}} |Application |Compatibility with [[Objective-C]] runtime |-

! {{anchor|Tcl|[[Tcl]]}} |[[imperative programming|imperative]], [[procedural programming|procedural]], [[event-driven programming|event-driven]], [[object-oriented]] (native from Tcl 8.6 or via [http://wiki.tcl.tk/970 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) |{{optional|Only of unnamed entities, e.g., values}} |Embedded, Application, Scripting |[http://www.tcl.tk/about/history.html Extend, Embed and Integrate] |-

! {{anchor|Trith|[[Trith]]}} |[[functional programming|functional]], [[stack]]-oriented, [[concatenative programming|concatenative]] |{{no}} |strong |safe |implicit |duck |dynamic |by value |{{yes}} |Embedded, Application, Scripting, Education |Simplicity, Expressiveness, Terseness, [http://linkeddata.org/ Linked Data] |-

! {{anchor|Unicon|[[Unicon]]}} | [[procedural programming|procedural]], [[structured]], [[Goal_directed_programming|goal directed]], [[string scanning]], [[co-expressions]], [[object-oriented]] | {{no}} | strong | Safe | implicit | nominative | dynamic | by value and safe reference depending if the type is mutable or immutable | {{yes}} | Text analysis, text editing, document formatting, artificial intelligence, expert systems, rapid prototyping, symbolic mathematics, text generation, and data laundry. | Facilitates ease of programming, short concise programs, automatic storage allocation and management, provide a rich base of basic data types and structures, and platform independence . Unicon provides additional capabilities over [[#Icon|Icon]] integrating object oriented capabilities, messaging and external communications, event monitoring, and more in a consistent framework. |-

! {{anchor|V|[[V]]}} |[[functional programming|functional]], [[stack]]-oriented, [[concatenative programming|concatenative]] |{{no}} |strong |safe | | |dynamic | | |[[functional programming|functional]] research |[[concatenative programming|concatenative]] |-

! {{anchor|Visual Basic|[[Visual Basic]]}} |component-oriented programming, [[event-driven programming|event-driven]] |{{no}} |strong |safe | |nominative |static |by reference, by value (explicit) |{{yes}} |Application |Rapid application development, Simplicity |-

! {{anchor|Visual Basic .NET|[[Visual Basic .NET]]}} |[[imperative programming|imperative]], [[object-oriented]], [[generic programming|generic]], [[reflective programming|reflective]], [[functional programming|functional]], [[event-driven programming|event-driven]] |{{no}} |strong |safe |implicit |nominative |static, dynamic (for interop) |by value, by reference (through managed pointers [always in-out]) |{{yes}} |Application |Rapid application development |-

! {{anchor|PowerShell|[[Windows PowerShell]]}} |[[imperative programming|imperative]], [[object-oriented]], [[functional programming|functional]], pipeline, [[reflective programming|reflective]] |{{no}} |strong |safe |implicit | |dynamic | | |Scripting | |-class="sortbottom" ![[Programming Language|Language]] ![[:Category:Programming Paradigms|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==

  • [[wp:Comparison_of_programming_languages|Wikipedia: Comparison of programming languages]]