Language Comparison Table: Difference between revisions
Content added Content deleted
(Added SkookumScript) |
m (added wording to REXX's garbage collection, added two blank lines between all entries to make (entry/examples) perusing easier.) |
||
Line 14: | Line 14: | ||
!Design goals |
!Design goals |
||
|- |
|- |
||
! {{anchor|ACL2|[[ACL2]]}} |
! {{anchor|ACL2|[[ACL2]]}} |
||
|[[functional programming|functional]] |
|[[functional programming|functional]] |
||
Line 27: | Line 29: | ||
|Be logically sound, mimic Common Lisp |
|Be logically sound, mimic Common Lisp |
||
|- |
|- |
||
! {{anchor|ActionScript|[[ActionScript]]}} |
! {{anchor|ActionScript|[[ActionScript]]}} |
||
|[[imperative programming|imperative]], [[object-oriented]],[[:Category:Programming paradigm/Distributed|distributed]] |
|[[imperative programming|imperative]], [[object-oriented]],[[:Category:Programming paradigm/Distributed|distributed]] |
||
Line 40: | Line 44: | ||
| |
| |
||
|- |
|- |
||
! {{anchor|Ada|[[Ada]]}} |
! {{anchor|Ada|[[Ada]]}} |
||
|[[concurrent programming|concurrent]], [[:Category:Programming paradigm/Distributed|distributed]], [[generic programming|generic]], [[imperative programming|imperative]], [[object-oriented]] |
|[[concurrent programming|concurrent]], [[:Category:Programming paradigm/Distributed|distributed]], [[generic programming|generic]], [[imperative programming|imperative]], [[object-oriented]] |
||
Line 53: | Line 59: | ||
|Reliability and maintenance, Programming as a human activity, Efficiency [http://www.adaic.com/standards/05rm/html/RM-0-3.html Language Reference Manual] |
|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]]}} |
! {{anchor|ALGOL_68|[[ALGOL 68]]}} |
||
|[[concurrent programming|concurrent]], [[imperative programming|imperative]] |
|[[concurrent programming|concurrent]], [[imperative programming|imperative]] |
||
Line 66: | Line 74: | ||
|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) |
|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]]}} |
! {{anchor|ALGOL_W|[[ALGOL W]]}} |
||
|[[imperative programming|imperative]] |
|[[imperative programming|imperative]] |
||
Line 79: | Line 89: | ||
| |
| |
||
|- |
|- |
||
! {{anchor|AmbientTalk|[[AmbientTalk]]}} |
! {{anchor|AmbientTalk|[[AmbientTalk]]}} |
||
|[[concurrent programming|concurrent]] |
|[[concurrent programming|concurrent]] |
||
Line 92: | Line 104: | ||
| |
| |
||
|- |
|- |
||
! {{anchor|AutoHotkey|[[AutoHotkey]]}} |
! {{anchor|AutoHotkey|[[AutoHotkey]]}} |
||
|[[imperative programming|imperative]] |
|[[imperative programming|imperative]] |
||
Line 105: | Line 119: | ||
|simplicity, speed, stability |
|simplicity, speed, stability |
||
|- |
|- |
||
! {{anchor|AutoIt|[[AutoIt]]}} |
! {{anchor|AutoIt|[[AutoIt]]}} |
||
|[[imperative programming|imperative]] |
|[[imperative programming|imperative]] |
||
Line 118: | Line 134: | ||
|Simplicity |
|Simplicity |
||
|- |
|- |
||
! {{anchor|BASIC|[[BASIC]]}} |
! {{anchor|BASIC|[[BASIC]]}} |
||
|[[procedural programming|procedural]] |
|[[procedural programming|procedural]] |
||
Line 131: | Line 149: | ||
|Simplicity |
|Simplicity |
||
|- |
|- |
||
! {{anchor|C|[[C]]}} |
! {{anchor|C|[[C]]}} |
||
|[[imperative programming|imperative]] |
|[[imperative programming|imperative]] |
||
Line 144: | Line 164: | ||
|Low level access, Minimal constraint |
|Low level access, Minimal constraint |
||
|- |
|- |
||
! {{anchor|C_sharp|[[C sharp|C#]]}} |
! {{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]] |
|[[imperative programming|imperative]], [[object-oriented]], [[generic programming|generic]], [[reflective programming|reflective]], [[functional programming|functional]], [[event-driven programming|event-driven]] |
||
Line 157: | Line 179: | ||
|Rapid application development |
|Rapid application development |
||
|- |
|- |
||
! {{anchor|C++|[[C++]]}} |
! {{anchor|C++|[[C++]]}} |
||
|[[imperative programming|imperative]], [[object-oriented]], [[generic programming|generic]] |
|[[imperative programming|imperative]], [[object-oriented]], [[generic programming|generic]] |
||
Line 170: | Line 194: | ||
|Abstraction, Efficiency, Compatibility |
|Abstraction, Efficiency, Compatibility |
||
|- |
|- |
||
! {{anchor|Chapel|[[Chapel]]}} |
! {{anchor|Chapel|[[Chapel]]}} |
||
|[[concurrent]], [[generic programming|generic]], [[object-oriented]], [[imperative programming|imperative]], [[:Category:Programming paradigm/Distributed|distributed]], [[reflective programming|reflective]] |
|[[concurrent]], [[generic programming|generic]], [[object-oriented]], [[imperative programming|imperative]], [[:Category:Programming paradigm/Distributed|distributed]], [[reflective programming|reflective]] |
||
Line 183: | Line 209: | ||
|Programmer productivity (compared to C/Fortran), performance |
|Programmer productivity (compared to C/Fortran), performance |
||
|- |
|- |
||
! {{anchor|Clean|[[Clean]]}} |
! {{anchor|Clean|[[Clean]]}} |
||
|[[functional programming|functional]], [[generic programming|generic]] |
|[[functional programming|functional]], [[generic programming|generic]] |
||
Line 196: | Line 224: | ||
|Correctness, Modularity |
|Correctness, Modularity |
||
|- |
|- |
||
! {{anchor|Clojure|[[Clojure]]}} |
! {{anchor|Clojure|[[Clojure]]}} |
||
|[[functional programming|functional]], [[concurrent programming|concurrent]] |
|[[functional programming|functional]], [[concurrent programming|concurrent]] |
||
Line 209: | Line 239: | ||
| |
| |
||
|- |
|- |
||
! {{anchor|COBOL|[[COBOL]]}} |
! {{anchor|COBOL|[[COBOL]]}} |
||
|[[imperative programming|imperative]], [[object-oriented]] |
|[[imperative programming|imperative]], [[object-oriented]] |
||
Line 222: | Line 254: | ||
|Readability |
|Readability |
||
|- |
|- |
||
! {{anchor|ColdFusion|[[ColdFusion]]}} |
! {{anchor|ColdFusion|[[ColdFusion]]}} |
||
|[[procedural programming|procedural]], [[object-oriented]] |
|[[procedural programming|procedural]], [[object-oriented]] |
||
Line 235: | Line 269: | ||
|Rapid Application Development, Ease of use |
|Rapid Application Development, Ease of use |
||
|- |
|- |
||
! {{anchor|Common Lisp|[[Common Lisp]]}} |
! {{anchor|Common Lisp|[[Common Lisp]]}} |
||
|[[imperative programming|imperative]], [[functional programming|functional]], [[object-oriented]] |
|[[imperative programming|imperative]], [[functional programming|functional]], [[object-oriented]] |
||
Line 248: | Line 284: | ||
|Standardize [[Lisp]] |
|Standardize [[Lisp]] |
||
|- |
|- |
||
! {{anchor|D|[[D]]}} |
! {{anchor|D|[[D]]}} |
||
|[[imperative programming|imperative]], [[object-oriented]], [[generic programming|generic]] |
|[[imperative programming|imperative]], [[object-oriented]], [[generic programming|generic]] |
||
Line 261: | Line 299: | ||
|Compilability, Correctness, Efficiency |
|Compilability, Correctness, Efficiency |
||
|- |
|- |
||
! {{anchor|Dao|[[Dao]]}} |
! {{anchor|Dao|[[Dao]]}} |
||
|[[object-oriented]] |
|[[object-oriented]] |
||
Line 274: | Line 314: | ||
| |
| |
||
|- |
|- |
||
! {{anchor|Dylan|[[Dylan]]}} |
! {{anchor|Dylan|[[Dylan]]}} |
||
|[[imperative programming|imperative]], [[object-oriented]], [[functional programming|functional]], [[procedural programming|procedural]] |
|[[imperative programming|imperative]], [[object-oriented]], [[functional programming|functional]], [[procedural programming|procedural]] |
||
Line 287: | Line 329: | ||
| |
| |
||
|- |
|- |
||
! {{anchor|E|[[E]]}} |
! {{anchor|E|[[E]]}} |
||
|[[imperative programming|imperative]], [[object-oriented]], [[object-capability]], [[communicating event loops]] |
|[[imperative programming|imperative]], [[object-oriented]], [[object-capability]], [[communicating event loops]] |
||
Line 300: | Line 344: | ||
|<!-- Design goals -->Familiarity to [[C]]/[[Java]]/[[JavaScript|JS]] users; less error-prone concurrency & security |
|<!-- Design goals -->Familiarity to [[C]]/[[Java]]/[[JavaScript|JS]] users; less error-prone concurrency & security |
||
|- |
|- |
||
! {{anchor|EC|[[eC]]}} |
! {{anchor|EC|[[eC]]}} |
||
|[[imperative programming|imperative]], [[object-oriented]], [[generic programming|generic]], [[reflective programming|reflective]] |
|[[imperative programming|imperative]], [[object-oriented]], [[generic programming|generic]], [[reflective programming|reflective]] |
||
Line 313: | Line 359: | ||
|Elegance, Performance, Simplicity, Lightness, 99.9% [[C]] compatibility |
|Elegance, Performance, Simplicity, Lightness, 99.9% [[C]] compatibility |
||
|- |
|- |
||
! {{anchor|Eiffel|[[Eiffel]]}} |
! {{anchor|Eiffel|[[Eiffel]]}} |
||
|[[imperative programming|imperative]], [[object-oriented]], [[generic programming|generic]] |
|[[imperative programming|imperative]], [[object-oriented]], [[generic programming|generic]] |
||
Line 327: | Line 375: | ||
|- |
|- |
||
! {{anchor|Ela|[[Ela]]}} |
! {{anchor|Ela|[[Ela]]}} |
||
|[[functional programming|functional]] |
|[[functional programming|functional]] |
||
Line 342: | Line 392: | ||
|- |
|- |
||
! {{anchor|Elm|[[Elm]]}} |
! {{anchor|Elm|[[Elm]]}} |
||
|[[functional programming|functional]], functional reactive programming, [[declarative programming|declarative]], pattern matching |
|[[functional programming|functional]], functional reactive programming, [[declarative programming|declarative]], pattern matching |
||
Line 357: | Line 409: | ||
|- |
|- |
||
! {{anchor|Elena|[[Elena]]}} |
! {{anchor|Elena|[[Elena]]}} |
||
|[[object-oriented]] |
|[[object-oriented]] |
||
Line 370: | Line 424: | ||
| |
| |
||
|- |
|- |
||
! {{anchor|Erlang|[[Erlang]]}} |
! {{anchor|Erlang|[[Erlang]]}} |
||
|[[functional programming|functional]], [[concurrent programming|concurrent]], [[:Category:Programming paradigm/Distributed|distributed]], [[declarative programming|declarative]] - pattern matching, [[imperative programming|imperative]] |
|[[functional programming|functional]], [[concurrent programming|concurrent]], [[:Category:Programming paradigm/Distributed|distributed]], [[declarative programming|declarative]] - pattern matching, [[imperative programming|imperative]] |
||
Line 383: | Line 439: | ||
|Fault tolerance, Reliability - Nonstop Running, Hot Code Change, Safety, Concurrency, Distribution, Scalability |
|Fault tolerance, Reliability - Nonstop Running, Hot Code Change, Safety, Concurrency, Distribution, Scalability |
||
|- |
|- |
||
! {{anchor|ERRE|[[ERRE]]}} |
! {{anchor|ERRE|[[ERRE]]}} |
||
|[[imperative programming|imperative]], [[procedural programming|procedural]] |
|[[imperative programming|imperative]], [[procedural programming|procedural]] |
||
Line 396: | Line 454: | ||
|Readability, Modularity |
|Readability, Modularity |
||
|- |
|- |
||
! {{anchor|Factor|[[Factor]]}} |
! {{anchor|Factor|[[Factor]]}} |
||
|[[stack]]-oriented |
|[[stack]]-oriented |
||
Line 409: | Line 469: | ||
|<!-- Design goals -->x |
|<!-- Design goals -->x |
||
|- |
|- |
||
! {{anchor|Forth|[[Forth]]}} |
! {{anchor|Forth|[[Forth]]}} |
||
|[[imperative programming|imperative]], [[stack]]-oriented |
|[[imperative programming|imperative]], [[stack]]-oriented |
||
Line 422: | Line 484: | ||
|Compact implementations, Low level access, Interactive programming, CPU agnostic Assembler Alternative, ultra-small memory systems. |
|Compact implementations, Low level access, Interactive programming, CPU agnostic Assembler Alternative, ultra-small memory systems. |
||
|- |
|- |
||
! {{anchor|Fortran|[[Fortran]]}} |
! {{anchor|Fortran|[[Fortran]]}} |
||
|[[imperative programming|imperative]], [[procedural programming|procedural]], [[object-oriented]], (partially) [[generic programming|generic]], [[concurrent programming|concurrent]] |
|[[imperative programming|imperative]], [[procedural programming|procedural]], [[object-oriented]], (partially) [[generic programming|generic]], [[concurrent programming|concurrent]] |
||
Line 435: | Line 499: | ||
|Runtime efficiency, Simple syntax |
|Runtime efficiency, Simple syntax |
||
|- |
|- |
||
! {{anchor|FutureBasic|[[FutureBasic]]}} |
! {{anchor|FutureBasic|[[FutureBasic]]}} |
||
|[[procedural programming|procedural]] |
|[[procedural programming|procedural]] |
||
Line 448: | Line 514: | ||
|Readability, Simplicity, Compliability, Freeware, Efficiency |
|Readability, Simplicity, Compliability, Freeware, Efficiency |
||
|- |
|- |
||
! {{anchor|Gambas|[[Gambas]]}} |
! {{anchor|Gambas|[[Gambas]]}} |
||
|[[object-oriented|object-oriented]] |
|[[object-oriented|object-oriented]] |
||
Line 461: | Line 529: | ||
|<!-- Design goals -->Rapid application development, Visual Basic alternative |
|<!-- Design goals -->Rapid application development, Visual Basic alternative |
||
|- |
|- |
||
! {{anchor|Go|[[Go]]}} |
! {{anchor|Go|[[Go]]}} |
||
|[[concurrent programming|concurrent]] |
|[[concurrent programming|concurrent]] |
||
Line 474: | Line 544: | ||
|<!-- Design goals --> |
|<!-- Design goals --> |
||
|- |
|- |
||
! {{anchor|Gosu|[[Gosu]]}} |
! {{anchor|Gosu|[[Gosu]]}} |
||
|[[imperative programming|imperative]], [[object-oriented]], [[generic programming|generic]], [[functional programming|functional]] |
|[[imperative programming|imperative]], [[object-oriented]], [[generic programming|generic]], [[functional programming|functional]] |
||
Line 487: | Line 559: | ||
|Open type system, optional dynamic loading |
|Open type system, optional dynamic loading |
||
|- |
|- |
||
! {{anchor|Groovy|[[Groovy]]}} |
! {{anchor|Groovy|[[Groovy]]}} |
||
|[[imperative programming|imperative]], [[object-oriented]], [[wp:Aspect-oriented_programming|aspect-oriented]] |
|[[imperative programming|imperative]], [[object-oriented]], [[wp:Aspect-oriented_programming|aspect-oriented]] |
||
Line 500: | Line 574: | ||
|[[JVM]] compatibility |
|[[JVM]] compatibility |
||
|- |
|- |
||
! {{anchor|Haskell|[[Haskell]]}} |
! {{anchor|Haskell|[[Haskell]]}} |
||
|[[functional programming|functional]], [[generic programming|generic]], [[lazy evaluation]] |
|[[functional programming|functional]], [[generic programming|generic]], [[lazy evaluation]] |
||
Line 513: | Line 589: | ||
|[[lazy evaluation]], Teaching and research, completely formally described [http://haskell.org/onlinereport/preface-jfp.html Report Preface] |
|[[lazy evaluation]], Teaching and research, completely formally described [http://haskell.org/onlinereport/preface-jfp.html Report Preface] |
||
|- |
|- |
||
! {{anchor|Icon|[[icon]]}} |
! {{anchor|Icon|[[icon]]}} |
||
| [[procedural programming|procedural]], [[structured]], [[Goal_directed_programming|goal directed]], [[string scanning]], [[co-expressions]] |
| [[procedural programming|procedural]], [[structured]], [[Goal_directed_programming|goal directed]], [[string scanning]], [[co-expressions]] |
||
Line 526: | Line 604: | ||
| 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. |
| 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]]}} |
! {{anchor|Io|[[Io]]}} |
||
|[[object-oriented]], prototype |
|[[object-oriented]], prototype |
||
Line 539: | Line 619: | ||
| |
| |
||
|- |
|- |
||
! {{anchor|J|[[J]]}} |
! {{anchor|J|[[J]]}} |
||
|[[array]] programming, function-level programming, [[tacit programming|tacit]] |
|[[array]] programming, function-level programming, [[tacit programming|tacit]] |
||
Line 552: | Line 634: | ||
|Describe computers mathematically and concisely |
|Describe computers mathematically and concisely |
||
|- |
|- |
||
! {{anchor|Java|[[Java]]}} |
! {{anchor|Java|[[Java]]}} |
||
|[[imperative programming|imperative]], [[object-oriented]], [[generic programming|generic]], [[reflective programming|reflective]] |
|[[imperative programming|imperative]], [[object-oriented]], [[generic programming|generic]], [[reflective programming|reflective]] |
||
Line 565: | Line 649: | ||
|Write once run anywhere |
|Write once run anywhere |
||
|- |
|- |
||
! {{anchor|JavaScript|[[JavaScript]]}} |
! {{anchor|JavaScript|[[JavaScript]]}} |
||
|[[imperative programming|imperative]], [[object-oriented]], [[functional programming|functional]], [[reflective programming|reflective]] |
|[[imperative programming|imperative]], [[object-oriented]], [[functional programming|functional]], [[reflective programming|reflective]] |
||
Line 578: | Line 664: | ||
| |
| |
||
|- |
|- |
||
! {{anchor|Joy|[[Joy]]}} |
! {{anchor|Joy|[[Joy]]}} |
||
|[[functional programming|functional]], [[stack]]-oriented |
|[[functional programming|functional]], [[stack]]-oriented |
||
Line 591: | Line 679: | ||
|[[concatenative programming|concatenative]] |
|[[concatenative programming|concatenative]] |
||
|- |
|- |
||
! {{anchor|LFE|[[LFE]]}} |
! {{anchor|LFE|[[LFE]]}} |
||
|[[functional programming|functional]], [[concurrent programming|concurrent]], [[:Category:Programming paradigm/Distributed|distributed]], [[declarative programming|declarative]] - pattern matching, [[imperative programming|imperative]] |
|[[functional programming|functional]], [[concurrent programming|concurrent]], [[:Category:Programming paradigm/Distributed|distributed]], [[declarative programming|declarative]] - pattern matching, [[imperative programming|imperative]] |
||
Line 604: | Line 694: | ||
|Fault tolerance, Reliability - Nonstop Running, Hot Code Change, Safety, Concurrency, Distribution, Scalability |
|Fault tolerance, Reliability - Nonstop Running, Hot Code Change, Safety, Concurrency, Distribution, Scalability |
||
|- |
|- |
||
! {{anchor|Lisp|[[Lisp]]}} |
! {{anchor|Lisp|[[Lisp]]}} |
||
|[[functional programming|functional]], [[reflective programming|reflective]]; others vary by dialect |
|[[functional programming|functional]], [[reflective programming|reflective]]; others vary by dialect |
||
Line 617: | Line 709: | ||
|Simple notation for Lambda calculus, Homoiconicity |
|Simple notation for Lambda calculus, Homoiconicity |
||
|- |
|- |
||
! {{anchor|Logo|[[Logo]]}} |
! {{anchor|Logo|[[Logo]]}} |
||
|[[procedural programming|procedural]], [[functional programming|functional]] |
|[[procedural programming|procedural]], [[functional programming|functional]] |
||
Line 630: | Line 724: | ||
|Simple syntax, Turtle graphics, Interactive programming |
|Simple syntax, Turtle graphics, Interactive programming |
||
|- |
|- |
||
! {{anchor|Lua|[[Lua]]}} |
! {{anchor|Lua|[[Lua]]}} |
||
|[[procedural programming|procedural]], [[imperative programming|imperative]], [[reflective programming|reflective]] |
|[[procedural programming|procedural]], [[imperative programming|imperative]], [[reflective programming|reflective]] |
||
Line 643: | Line 739: | ||
|Small, embedded, configuration. |
|Small, embedded, configuration. |
||
|- |
|- |
||
! {{anchor|Lucid|[[Lucid]]}} |
! {{anchor|Lucid|[[Lucid]]}} |
||
|[[dataflow programming|dataflow]], [[functional programming|functional]] |
|[[dataflow programming|dataflow]], [[functional programming|functional]] |
||
Line 656: | Line 754: | ||
|dataflow |
|dataflow |
||
|- |
|- |
||
! {{anchor|Luck|[[Luck]]}} |
! {{anchor|Luck|[[Luck]]}} |
||
|[[imperative programming|imperative]], [[functional programming|functional]] |
|[[imperative programming|imperative]], [[functional programming|functional]] |
||
Line 669: | Line 769: | ||
|fast, C compatible, high-level language |
|fast, C compatible, high-level language |
||
|- |
|- |
||
! {{anchor|Mathematica|[[Mathematica]]}} |
! {{anchor|Mathematica|[[Mathematica]]}} |
||
|[[functional programming|functional]], [[procedural programming|procedural]] |
|[[functional programming|functional]], [[procedural programming|procedural]] |
||
Line 682: | Line 784: | ||
| |
| |
||
|- |
|- |
||
! {{anchor|MATLAB|[[MATLAB]]}} |
! {{anchor|MATLAB|[[MATLAB]]}} |
||
|[[procedural programming|procedural]], [[imperative programming|imperative]], [[array]] programming |
|[[procedural programming|procedural]], [[imperative programming|imperative]], [[array]] programming |
||
Line 695: | Line 799: | ||
|At the beginning designed as interpreter for easy use of fortran libraries, nowadays high performance numerical analysis and visualization |
|At the beginning designed as interpreter for easy use of fortran libraries, nowadays high performance numerical analysis and visualization |
||
|- |
|- |
||
! {{anchor|MAXScript|[[MAXScript]]}} |
! {{anchor|MAXScript|[[MAXScript]]}} |
||
|[[imperative programming|imperative]], [[object-oriented]], [[procedural programming|procedural]] |
|[[imperative programming|imperative]], [[object-oriented]], [[procedural programming|procedural]] |
||
Line 708: | Line 814: | ||
|Simplicity, Accessibilty |
|Simplicity, Accessibilty |
||
|- |
|- |
||
! {{anchor|Modula-3|[[Modula-3]]}} |
! {{anchor|Modula-3|[[Modula-3]]}} |
||
|[[imperative programming|imperative]], [[object-oriented]], [[procedural programming|procedural]], [[generic programming|generic]] |
|[[imperative programming|imperative]], [[object-oriented]], [[procedural programming|procedural]], [[generic programming|generic]] |
||
Line 721: | Line 829: | ||
|Simple, Object oriented |
|Simple, Object oriented |
||
|- |
|- |
||
! {{anchor|MUMPS|[[MUMPS]]}} |
! {{anchor|MUMPS|[[MUMPS]]}} |
||
|[[procedural programming|procedural]] |
|[[procedural programming|procedural]] |
||
Line 734: | Line 844: | ||
|Built-in Persistent Storage |
|Built-in Persistent Storage |
||
|- |
|- |
||
! {{anchor|Nial|[[Nial]]}} |
! {{anchor|Nial|[[Nial]]}} |
||
|[[functional programming|functional]], [[array]] programming |
|[[functional programming|functional]], [[array]] programming |
||
Line 747: | Line 859: | ||
| |
| |
||
|- |
|- |
||
! {{anchor|Nim|[[Nim]]}} |
! {{anchor|Nim|[[Nim]]}} |
||
|[[procedural programming|procedural]], [[functional programming|functional]], [[generic programming|generic]] |
|[[procedural programming|procedural]], [[functional programming|functional]], [[generic programming|generic]] |
||
Line 760: | Line 874: | ||
|Efficient, Expressive, Elegant in that order. |
|Efficient, Expressive, Elegant in that order. |
||
|- |
|- |
||
! {{anchor|Oberon-2|[[Oberon-2]]}} |
! {{anchor|Oberon-2|[[Oberon-2]]}} |
||
|[[procedural programming|procedural]], [[imperative programming|imperative]], [[object-oriented]] |
|[[procedural programming|procedural]], [[imperative programming|imperative]], [[object-oriented]] |
||
Line 773: | Line 889: | ||
|Simplicity |
|Simplicity |
||
|- |
|- |
||
! {{anchor|Objeck|[[Objeck]]}} |
! {{anchor|Objeck|[[Objeck]]}} |
||
|[[object-oriented]],[[functional programming|functional]] |
|[[object-oriented]],[[functional programming|functional]] |
||
Line 786: | Line 904: | ||
|Minimalist, Cross-Platform, Modular |
|Minimalist, Cross-Platform, Modular |
||
|- |
|- |
||
! {{anchor|Object Pascal|[[Object Pascal]]}} ({{anchor|Delphi|[[Delphi]]}}) |
! {{anchor|Object Pascal|[[Object Pascal]]}} ({{anchor|Delphi|[[Delphi]]}}) |
||
|[[imperative programming|imperative]], [[object-oriented]], [[generic programming|generic]] |
|[[imperative programming|imperative]], [[object-oriented]], [[generic programming|generic]] |
||
Line 799: | Line 919: | ||
|Readability, Rapid application development, Modularity |
|Readability, Rapid application development, Modularity |
||
|- |
|- |
||
! {{anchor|Objective-C|[[Objective-C]]}} |
! {{anchor|Objective-C|[[Objective-C]]}} |
||
|[[imperative programming|imperative]], [[object-oriented]], [[reflective programming|reflective]], [[generic programming|generic]] (as of Xcode 7) |
|[[imperative programming|imperative]], [[object-oriented]], [[reflective programming|reflective]], [[generic programming|generic]] (as of Xcode 7) |
||
Line 812: | Line 934: | ||
|[[Smalltalk]] like, Component based code reuse, [[C]]/[[C++]] compatibility |
|[[Smalltalk]] like, Component based code reuse, [[C]]/[[C++]] compatibility |
||
|- |
|- |
||
! {{anchor|OCaml|[[OCaml]]}} |
! {{anchor|OCaml|[[OCaml]]}} |
||
|[[object-oriented]], [[functional programming|functional]], [[imperative programming|imperative]], [[generic programming|generic]] |
|[[object-oriented]], [[functional programming|functional]], [[imperative programming|imperative]], [[generic programming|generic]] |
||
Line 825: | Line 949: | ||
|Efficiency, Robustness, Correctness |
|Efficiency, Robustness, Correctness |
||
|- |
|- |
||
! {{anchor|Oz|[[Oz]]}} |
! {{anchor|Oz|[[Oz]]}} |
||
|logic programming, [[functional programming|functional]], [[imperative programming|imperative]], [[object-oriented]], [[concurrent programming|concurrent]] |
|logic programming, [[functional programming|functional]], [[imperative programming|imperative]], [[object-oriented]], [[concurrent programming|concurrent]] |
||
Line 838: | Line 964: | ||
| |
| |
||
|- |
|- |
||
! {{anchor|PARI/GP|[[PARI/GP]]}} |
! {{anchor|PARI/GP|[[PARI/GP]]}} |
||
|[[imperative programming|imperative]], [[procedural programming|procedural]] |
|[[imperative programming|imperative]], [[procedural programming|procedural]] |
||
Line 851: | Line 979: | ||
| |
| |
||
|- |
|- |
||
! {{anchor|Pascal|[[Pascal]]}} |
! {{anchor|Pascal|[[Pascal]]}} |
||
|[[imperative programming|imperative]], [[procedural programming|procedural]] |
|[[imperative programming|imperative]], [[procedural programming|procedural]] |
||
Line 864: | Line 994: | ||
|Readability, Discipline, Modularity |
|Readability, Discipline, Modularity |
||
|- |
|- |
||
! {{anchor|Perl|[[Perl]]}} |
! {{anchor|Perl|[[Perl]]}} |
||
|[[imperative programming|imperative]], [[procedural programming|procedural]], [[reflective programming|reflective]], [[functional programming|functional]], [[object-oriented]], [[generic programming|generic]] |
|[[imperative programming|imperative]], [[procedural programming|procedural]], [[reflective programming|reflective]], [[functional programming|functional]], [[object-oriented]], [[generic programming|generic]] |
||
Line 877: | Line 1,009: | ||
|Terseness, Expressiveness |
|Terseness, Expressiveness |
||
|- |
|- |
||
! {{anchor|Perl 6|[[Perl 6]]}} |
! {{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 |
|[[imperative programming|imperative]], [[procedural programming|procedural]], [[reflective programming|reflective]], [[functional programming|functional]], [[object-oriented]], [[generic programming|generic]], [[lazy evaluation]], multiple dispatch, metaprogramming |
||
Line 890: | Line 1,024: | ||
|Expressiveness, generality |
|Expressiveness, generality |
||
|- |
|- |
||
! {{anchor|Phix|[[Phix]]}} |
! {{anchor|Phix|[[Phix]]}} |
||
|[[imperative programming|imperative]], [[procedural programming|procedural]] |
|[[imperative programming|imperative]], [[procedural programming|procedural]] |
||
Line 903: | Line 1,039: | ||
|<!-- Design goals -->Simplicity, Readability, Facilitate ease of programming and maintenance |
|<!-- Design goals -->Simplicity, Readability, Facilitate ease of programming and maintenance |
||
|- |
|- |
||
! {{anchor|PHP|[[PHP]]}} |
! {{anchor|PHP|[[PHP]]}} |
||
|[[imperative programming|imperative]], [[object-oriented]], [[reflective programming|reflective]] |
|[[imperative programming|imperative]], [[object-oriented]], [[reflective programming|reflective]] |
||
Line 916: | Line 1,054: | ||
|Robustness and Simplicity |
|Robustness and Simplicity |
||
|- |
|- |
||
! {{anchor|Pike|[[Pike]]}} |
! {{anchor|Pike|[[Pike]]}} |
||
|[[imperative programming|imperative]], [[procedural programming|procedural]], [[functional programming|functional]], [[object-oriented]], [[reflective programming|reflective]], [[event-driven programming|event-driven]] |
|[[imperative programming|imperative]], [[procedural programming|procedural]], [[functional programming|functional]], [[object-oriented]], [[reflective programming|reflective]], [[event-driven programming|event-driven]] |
||
Line 929: | Line 1,069: | ||
|optimized execution, efficient networking |
|optimized execution, efficient networking |
||
|- |
|- |
||
! {{anchor|Pop11|[[Pop11]]}} |
! {{anchor|Pop11|[[Pop11]]}} |
||
|[[imperative programming|imperative]], [[object-oriented]], [[functional programming|functional]] |
|[[imperative programming|imperative]], [[object-oriented]], [[functional programming|functional]] |
||
Line 942: | Line 1,084: | ||
| |
| |
||
|- |
|- |
||
! {{anchor|Prolog|[[Prolog]]}} |
! {{anchor|Prolog|[[Prolog]]}} |
||
|logic programming |
|logic programming |
||
Line 955: | Line 1,099: | ||
|[[declarative programming|declarative]] |
|[[declarative programming|declarative]] |
||
|- |
|- |
||
!{{anchor|Pure|[[Pure]]}} |
!{{anchor|Pure|[[Pure]]}} |
||
|[[dynamic programming|dynamic]], [[functional programming|functional]] |
|[[dynamic programming|dynamic]], [[functional programming|functional]] |
||
Line 968: | Line 1,114: | ||
| |
| |
||
|- |
|- |
||
! {{anchor|Python|[[Python]]}} |
! {{anchor|Python|[[Python]]}} |
||
|[[imperative programming|imperative]], [[object-oriented]], [[functional programming|functional]], [[wp:Aspect-oriented_programming|aspect-oriented]], [[reflective programming|reflective]] |
|[[imperative programming|imperative]], [[object-oriented]], [[functional programming|functional]], [[wp:Aspect-oriented_programming|aspect-oriented]], [[reflective programming|reflective]] |
||
Line 981: | Line 1,129: | ||
|Simplicity, Readability, Expressiveness, Modularity |
|Simplicity, Readability, Expressiveness, Modularity |
||
|- |
|- |
||
! {{anchor|Ra|[[Ra]]}} |
! {{anchor|Ra|[[Ra]]}} |
||
|[[object-oriented]] |
|[[object-oriented]] |
||
Line 994: | Line 1,144: | ||
|Program in native language, clean and clear syntax, extensive standard library, convenience |
|Program in native language, clean and clear syntax, extensive standard library, convenience |
||
|- |
|- |
||
! {{anchor|Racket|[[Racket]]}} |
! {{anchor|Racket|[[Racket]]}} |
||
|[[functional programming|functional]], [[imperative programming|imperative]], [[object-oriented]], [[reflective programming|reflective]] |
|[[functional programming|functional]], [[imperative programming|imperative]], [[object-oriented]], [[reflective programming|reflective]] |
||
Line 1,007: | Line 1,159: | ||
|Extensibility, Simplicity, Modularity |
|Extensibility, Simplicity, Modularity |
||
|- |
|- |
||
! {{anchor|RapidQ|[[RapidQ]]}} |
! {{anchor|RapidQ|[[RapidQ]]}} |
||
|[[imperative programming|imperative]], component-oriented programming, [[event-driven programming|event-driven]] |
|[[imperative programming|imperative]], component-oriented programming, [[event-driven programming|event-driven]] |
||
Line 1,020: | Line 1,174: | ||
|Rapid application development, Simplicity, [[BASIC]] compatibility |
|Rapid application development, Simplicity, [[BASIC]] compatibility |
||
|- |
|- |
||
! {{anchor|R|[[R]]}} |
! {{anchor|R|[[R]]}} |
||
Line 1,034: | Line 1,189: | ||
|Expressiveness, interactive manipulation and analysis of datasets |
|Expressiveness, interactive manipulation and analysis of datasets |
||
|- |
|- |
||
! {{anchor|REXX|[[REXX]]}} |
! {{anchor|REXX|[[REXX]]}} |
||
Line 1,044: | Line 1,200: | ||
| dynamic (but only when both comparands are numeric ''and'' non-strict comparisons are used) |
| dynamic (but only when both comparands are numeric ''and'' non-strict comparisons are used) |
||
| by value |
| by value |
||
| {{optional| garbage collection is allowed, but not mandated}} |
| {{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 |
| 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. |
| 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]]}} |
! {{anchor|Ruby|[[Ruby]]}} |
||
Line 1,062: | Line 1,219: | ||
|Expressiveness, Readability |
|Expressiveness, Readability |
||
|- |
|- |
||
! {{anchor|Scala|[[Scala]]}} |
! {{anchor|Scala|[[Scala]]}} |
||
|[[object-oriented]], [[functional programming|functional]], [[generic programming|generic]] |
|[[object-oriented]], [[functional programming|functional]], [[generic programming|generic]] |
||
Line 1,075: | Line 1,234: | ||
|Concise, Type-safe, Integrate OO and functional paradigms, Scalable and Elegance. Platform independent |
|Concise, Type-safe, Integrate OO and functional paradigms, Scalable and Elegance. Platform independent |
||
|- |
|- |
||
! {{anchor|Scheme|[[Scheme]]}} |
! {{anchor|Scheme|[[Scheme]]}} |
||
|[[functional programming|functional]] |
|[[functional programming|functional]] |
||
Line 1,088: | Line 1,249: | ||
|Minimalistic, Lexical Scoping |
|Minimalistic, Lexical Scoping |
||
|- |
|- |
||
! {{anchor|Seed7|[[Seed7]]}} |
! {{anchor|Seed7|[[Seed7]]}} |
||
|extensible, [[object-oriented]], [[imperative programming|imperative]], structured, [[generic programming|generic]], [[reflective programming|reflective]] |
|extensible, [[object-oriented]], [[imperative programming|imperative]], structured, [[generic programming|generic]], [[reflective programming|reflective]] |
||
Line 1,101: | Line 1,264: | ||
|Extensibility, Portability, Reliability, Efficiency, Elegance |
|Extensibility, Portability, Reliability, Efficiency, Elegance |
||
|- |
|- |
||
! {{anchor|Sidef|[[Sidef]]}} |
! {{anchor|Sidef|[[Sidef]]}} |
||
|[[object-oriented]], [[imperative programming|imperative]], [[reflective programming|reflective]], [[dynamic programming|dynamic]], [[functional programming|functional]] |
|[[object-oriented]], [[imperative programming|imperative]], [[reflective programming|reflective]], [[dynamic programming|dynamic]], [[functional programming|functional]] |
||
Line 1,114: | Line 1,279: | ||
|Expressiveness, Elegance, Readability |
|Expressiveness, Elegance, Readability |
||
|- |
|- |
||
! {{anchor|SkookumScript|[[SkookumScript]]}} |
! {{anchor|SkookumScript|[[SkookumScript]]}} |
||
|[[concurrent programming|concurrent]], [[object-oriented]], [[functional programming|functional]], [[imperative programming|imperative]], [[generic programming|generic]] |
|[[concurrent programming|concurrent]], [[object-oriented]], [[functional programming|functional]], [[imperative programming|imperative]], [[generic programming|generic]] |
||
Line 1,127: | Line 1,294: | ||
|Game concepts, Interactivity, Live workflow, Efficiency, Embedded |
|Game concepts, Interactivity, Live workflow, Efficiency, Embedded |
||
|- |
|- |
||
! {{anchor|Slate|[[Slate]]}} |
! {{anchor|Slate|[[Slate]]}} |
||
|[[object-oriented]], [[imperative programming|imperative]], [[functional programming|functional]], [[reflective programming|reflective]], prototype, multi-dispatch |
|[[object-oriented]], [[imperative programming|imperative]], [[functional programming|functional]], [[reflective programming|reflective]], prototype, multi-dispatch |
||
Line 1,140: | Line 1,309: | ||
|Uniformity, Pure object-oriented, expressiveness, readability |
|Uniformity, Pure object-oriented, expressiveness, readability |
||
|- |
|- |
||
! {{anchor|Smalltalk|[[Smalltalk]]}} |
! {{anchor|Smalltalk|[[Smalltalk]]}} |
||
|[[object-oriented]], [[concurrent programming|concurrent]], [[event-driven programming|event-driven]], [[imperative programming|imperative]], [[declarative programming|declarative]] |
|[[object-oriented]], [[concurrent programming|concurrent]], [[event-driven programming|event-driven]], [[imperative programming|imperative]], [[declarative programming|declarative]] |
||
Line 1,153: | Line 1,324: | ||
|Uniformity, Pure object oriented |
|Uniformity, Pure object oriented |
||
|- |
|- |
||
! {{anchor|SPARK|[[SPARK]]}} |
! {{anchor|SPARK|[[SPARK]]}} |
||
|[[concurrent programming|concurrent]], [[imperative programming|imperative]], [[object-oriented]] |
|[[concurrent programming|concurrent]], [[imperative programming|imperative]], [[object-oriented]] |
||
Line 1,166: | Line 1,339: | ||
|Logically sound, simple formal definition, expressive power, security, applications verifiable and have bounded space and time. |
|Logically sound, simple formal definition, expressive power, security, applications verifiable and have bounded space and time. |
||
|- |
|- |
||
! {{anchor|Standard ML|[[Standard ML]]}} |
! {{anchor|Standard ML|[[Standard ML]]}} |
||
|[[functional programming|functional]], [[imperative programming|imperative]], [[generic programming|generic]] |
|[[functional programming|functional]], [[imperative programming|imperative]], [[generic programming|generic]] |
||
Line 1,179: | Line 1,354: | ||
| |
| |
||
|- |
|- |
||
! {{anchor|Swift|[[Swift]]}} |
! {{anchor|Swift|[[Swift]]}} |
||
|[[imperative programming|imperative]], [[object-oriented]], [[generic programming|generic]] |
|[[imperative programming|imperative]], [[object-oriented]], [[generic programming|generic]] |
||
Line 1,192: | Line 1,369: | ||
|Compatibility with [[Objective-C]] runtime |
|Compatibility with [[Objective-C]] runtime |
||
|- |
|- |
||
! {{anchor|Tcl|[[Tcl]]}} |
! {{anchor|Tcl|[[Tcl]]}} |
||
|[[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> |
|[[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> |
||
Line 1,205: | Line 1,384: | ||
|[http://www.tcl.tk/about/history.html Extend, Embed and Integrate] |
|[http://www.tcl.tk/about/history.html Extend, Embed and Integrate] |
||
|- |
|- |
||
! {{anchor|Trith|[[Trith]]}} |
! {{anchor|Trith|[[Trith]]}} |
||
|[[functional programming|functional]], [[stack]]-oriented, [[concatenative programming|concatenative]] |
|[[functional programming|functional]], [[stack]]-oriented, [[concatenative programming|concatenative]] |
||
Line 1,218: | Line 1,399: | ||
|Simplicity, Expressiveness, Terseness, [http://linkeddata.org/ Linked Data] |
|Simplicity, Expressiveness, Terseness, [http://linkeddata.org/ Linked Data] |
||
|- |
|- |
||
! {{anchor|Unicon|[[Unicon]]}} |
! {{anchor|Unicon|[[Unicon]]}} |
||
| [[procedural programming|procedural]], [[structured]], [[Goal_directed_programming|goal directed]], [[string scanning]], [[co-expressions]], [[object-oriented]] |
| [[procedural programming|procedural]], [[structured]], [[Goal_directed_programming|goal directed]], [[string scanning]], [[co-expressions]], [[object-oriented]] |
||
Line 1,231: | Line 1,414: | ||
| 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. |
| 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]]}} |
! {{anchor|V|[[V]]}} |
||
|[[functional programming|functional]], [[stack]]-oriented, [[concatenative programming|concatenative]] |
|[[functional programming|functional]], [[stack]]-oriented, [[concatenative programming|concatenative]] |
||
Line 1,244: | Line 1,429: | ||
|[[concatenative programming|concatenative]] |
|[[concatenative programming|concatenative]] |
||
|- |
|- |
||
! {{anchor|Visual Basic|[[Visual Basic]]}} |
! {{anchor|Visual Basic|[[Visual Basic]]}} |
||
|component-oriented programming, [[event-driven programming|event-driven]] |
|component-oriented programming, [[event-driven programming|event-driven]] |
||
Line 1,257: | Line 1,444: | ||
|Rapid application development, Simplicity |
|Rapid application development, Simplicity |
||
|- |
|- |
||
! {{anchor|Visual Basic .NET|[[Visual Basic .NET]]}} |
! {{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]] |
|[[imperative programming|imperative]], [[object-oriented]], [[generic programming|generic]], [[reflective programming|reflective]], [[functional programming|functional]], [[event-driven programming|event-driven]] |
||
Line 1,270: | Line 1,459: | ||
|Rapid application development |
|Rapid application development |
||
|- |
|- |
||
! {{anchor|PowerShell|[[Windows PowerShell]]}} |
! {{anchor|PowerShell|[[Windows PowerShell]]}} |
||
|[[imperative programming|imperative]], [[object-oriented]], [[functional programming|functional]], pipeline, [[reflective programming|reflective]] |
|[[imperative programming|imperative]], [[object-oriented]], [[functional programming|functional]], pipeline, [[reflective programming|reflective]] |
||
Line 1,295: | Line 1,486: | ||
!Intended use |
!Intended use |
||
!Design goals |
!Design goals |
||
|- |
|||
|} |
|} |
||
==External resources== |
==External resources== |
||
* [[wp:Comparison_of_programming_languages|Wikipedia: Comparison of programming languages]] |
* [[wp:Comparison_of_programming_languages|Wikipedia: Comparison of programming languages]] |
Revision as of 20:15, 3 May 2017
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 |
---|---|---|---|---|---|---|---|---|---|---|---|
ACL2 | functional | Yes | strong | unsafe | implicit | dynamic | immutable reference | Yes | Theorem proving | Be logically sound, mimic Common Lisp | |
ActionScript | imperative, object-oriented,distributed | Yes, ECMA | strong | safe | static | Yes | Web design | ||||
Ada | concurrent, distributed, generic, imperative, object-oriented | Yes | 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 | 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) |
ALGOL W | imperative | No | strong | safe | explicit | nominative | static or dynamic (programmer chosen) | by value, by reference or by name (programmer chosen) | Yes | Application, Education | |
AmbientTalk | concurrent | strong | safe | explicit | duck | dynamic | by value | Mobile ad hoc networks | |||
AutoHotkey | imperative | No | untyped | by value or by reference | No | End User Programming | simplicity, speed, stability | ||||
AutoIt | imperative | by value or by reference | General, scripting, GUI and tasks automation | Simplicity | |||||||
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) | Optional through external tools | System, Embedded | Low level access, Minimal constraint |
C# | imperative, object-oriented, generic, reflective, functional, event-driven | Yes, ECMA, ISO | strong | safe (unsafe allowed) | implicit | nominative | static, dynamic (for interop) | Yes | Application | Rapid application development | |
C++ | imperative, object-oriented, generic | 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 external tools | Application, System | Abstraction, Efficiency, Compatibility |
Chapel | concurrent, generic, object-oriented, imperative, distributed, reflective | No, still under development, a 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 |
Clean | functional, generic | No | strong | implicit | static | Yes | General | Correctness, Modularity | |||
Clojure | functional, concurrent | strong | safe | dynamic, static | Yes | ||||||
COBOL | imperative, object-oriented | Yes, ANSI 68, 74, 85 (and subsequent revisions); ISO 2002, 201X | strong | safe | explicit | static | by value, by reference | 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 | explicit, optional inferred | nominative, structural | static, dynamic | by value, by reference (through reference types) | Yes | Application, System | Compilability, Correctness, Efficiency |
Dao | object-oriented | strong | safe, unsafe allowed | implicit, explicit | static, dynamic | Yes | |||||
Dylan | imperative, object-oriented, functional, procedural | strong | safe | static, dynamic | Yes | ||||||
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 | ||
Ela | functional | No | strong | safe | implicit | duck | dynamic | by value | Yes | Application | |
Elm | functional, functional reactive 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 | |
Elena | object-oriented | strong | safe | implicit | dynamic | Yes | |||||
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 mission critical distributed applications | Fault tolerance, Reliability - Nonstop Running, Hot Code Change, Safety, Concurrency, Distribution, Scalability | |
ERRE | imperative, procedural | No | weak | unsafe | explicit | static and dynamic | by value | Yes | Education | Readability, Modularity | |
Factor | stack-oriented | No | safe | implicit | duck | dynamic | by reference | Yes | x | ||
Forth | imperative, stack-oriented | 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. | |
Fortran | imperative, procedural, object-oriented, (partially) generic, concurrent | Yes | strong | safe | explicit, partially implicit | nominative | static, dynamic | by reference, or explicitly by value | No | Scientific and numeric applications | Runtime efficiency, Simple syntax |
FutureBasic | procedural | No | strong | safe | by value, by reference (through pointers) | No | Educational, Prototyping, Commerical Applications | Readability, Simplicity, Compliability, Freeware, Efficiency | |||
Gambas | object-oriented | No | strong | safe | explicit | dynamic | by value, by reference | Application, Scripting | Rapid application development, Visual Basic alternative | ||
Go | concurrent | No
, language specification available |
strong | safe | explicit, optionally inferred | nominative; structural for interface types | static | by value | Yes | ||
Gosu | imperative, object-oriented, generic, functional | Yes | strong | safe | explicit, optionally inferred | nominative and structural | static | by value | Yes | Application | Open type system, optional dynamic loading |
Groovy | imperative, object-oriented, aspect-oriented | No | strong | safe | implicit | nominative | dynamic | Yes | Application | JVM compatibility | |
Haskell | functional, generic, lazy evaluation | Yes, Haskell 2010 Report, 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 | |
icon | procedural, structured, 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 for the unified extended dialect of Icon. |
Io | object-oriented, prototype | No | strong | dynamic | Yes | ||||||
J | array programming, function-level 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 |
Java | imperative, object-oriented, generic, reflective | Yes, Java SE Specifications | strong | safe | explicit | nominative | static | by value | Yes | Application | Write once run anywhere |
JavaScript | imperative, object-oriented, functional, reflective | Yes, ECMAScript standard | weak | implicit | dynamic | by value | Yes | Client side web scripting | |||
Joy | functional, stack-oriented | No | strong | safe | dynamic | functional research | concatenative | ||||
LFE | 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 | |
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 | ||||
Luck | imperative, functional | No | weak | unsafe | explicit, partially inferred | nominative | static | by value or by reference | Yes | systems programming | fast, C compatible, high-level language |
Mathematica | functional, procedural | No | strong | dynamic | Yes | Numeric and symbolic computation, visualization | |||||
MATLAB | procedural, imperative, array programming | 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 | ||
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 |
MUMPS | procedural | Yes, ISO | untyped | not applicable | by value, by reference | Yes | Built-in Persistent Storage | ||||
Nial | functional, array programming | No | strong | dynamic | Data processing | ||||||
Nim | procedural, functional, generic | No | strong | safe | static | Yes | General, Application, Systems | Efficient, Expressive, Elegant in that order. | |||
Oberon-2 | procedural, imperative, object-oriented | No | strong | safe | explicit | structural | static | by value, by reference | Yes | Teaching, System | Simplicity |
Objeck | object-oriented,functional | No | strong | safe | explicit | nominative | static | by value | Yes | General, Education | Minimalist, Cross-Platform, Modular |
Object Pascal (Delphi) | imperative, object-oriented, generic | No | strong | safe (unsafe allowed) | explicit | nominative | static, dynamic | by reference, by value | some types | Application, System | Readability, Rapid application development, Modularity |
Objective-C | imperative, object-oriented, reflective, generic (as of Xcode 7) | No | weak | explicit | static | by value | Yes (as of 2.0) | Application | Smalltalk like, Component based code reuse, C/C++ compatibility | ||
OCaml | object-oriented, functional, imperative, generic | No, the manual includes language specification | 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 | strong | safe | implicit | structural | dynamic | by reference (though often immutable) | Yes | Application, Education, Distribution | |
PARI/GP | imperative, procedural | No | weak | unsafe | implicit | nominal | dynamic | by value, by reference | Yes | Mathematics, especially number theory | |
Pascal | imperative, procedural | 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 | |
Perl | imperative, procedural, reflective, functional, object-oriented, generic | No | weak | implicit | dynamic, static | by reference | Reference counting | Text processing, Scripting | Terseness, Expressiveness | ||
Perl 6 | imperative, procedural, reflective, functional, object-oriented, generic, lazy evaluation, multiple dispatch, metaprogramming | Yes, 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 |
Phix | imperative, procedural | No | strong | safe | explicit, partially implicit | duck | dynamic, static | copy on write, immutable reference, multiple returns | Reference counting | Application, General, High-level scripting, Text processing | Simplicity, Readability, Facilitate ease of programming and maintenance |
PHP | imperative, object-oriented, reflective | No | weak | dynamic | by value, by reference | Yes | Web Application, CLI | Robustness and Simplicity | |||
Pike | imperative, procedural, functional, object-oriented, reflective, event-driven | No | strong | safe | explicit | structural | dynamic, static | by value, by reference | Yes | Application, scripting | optimized execution, efficient networking |
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, language reference included with each version's documentation | strong | safe | implicit | dynamic | by value (Call by object reference) | Yes | Application, Education, Scripting | Simplicity, Readability, Expressiveness, Modularity | |
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 | ||
Racket | functional, imperative, object-oriented, reflective | No | strong | safe | implicit or explicit (see Typed Racket) | dynamic or static | by value | Yes | General | Extensibility, Simplicity, 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 | |||
R | functional, imperative, 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 |
REXX | dynamic, procedural, functional | Yes. There is an ANSI standard, but some 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 | 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. |
Ruby | imperative, object-oriented, functional, reflective | Yes, JIS X 3017 (2011), ISO/IEC 30170 (2012) | strong | implicit | dynamic | by value (Call by object reference) | Yes | Application, Scripting | Expressiveness, Readability | ||
Scala | object-oriented, functional, generic | Yes, 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 |
Scheme | functional | Yes, R5RS, R6RS | strong | safe | implicit | dynamic (latent) | by value | Yes | General, Education | Minimalistic, Lexical Scoping | |
Seed7 | extensible, object-oriented, imperative, structured, generic, reflective | No | strong | safe | explicit | nominative | static | by value, by reference, by name | Yes (no garbage collection process that stops the world) | General, Application, System | Extensibility, Portability, Reliability, Efficiency, Elegance |
Sidef | object-oriented, imperative, reflective, dynamic, functional | No | weak | unsafe | optional explicit | duck | dynamic | by value (Call by object reference), by reference | Reference counting | Application, Scripting, PL Research, Education | Expressiveness, Elegance, Readability |
SkookumScript | concurrent, object-oriented, functional, imperative, generic | No, online syntax includes EBNF language specification | strong | safe | inferred, optional explicit annotations | nominal | static | by reference | Yes | Embedded gameplay, AI, automation, scripting | Game concepts, Interactivity, Live workflow, Efficiency, Embedded |
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 | protocol (aka duck) | dynamic | by value (Call by object reference) | Yes | Application, Education | Uniformity, Pure object oriented |
SPARK | concurrent, imperative, object-oriented | No, but Language Reference Manual available. | strong | safe | explicit | nominative | static | by value, by reference | Allowed | High integrity applications | Logically sound, simple formal definition, expressive power, security, applications verifiable and have bounded space and time. |
Standard ML | functional, imperative, generic | Yes, SML '97 | strong | safe | inferred, optional explicit annotations | polymorphic structural | static | by value | Yes | ||
Swift | imperative, object-oriented, generic | No | strong | inferred, optional explicit annotations | nominative | static | by value | Template:Partial | Application | Compatibility with Objective-C runtime | |
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 |
Trith | functional, stack-oriented, concatenative | No | strong | safe | implicit | duck | dynamic | by value | Yes | Embedded, Application, Scripting, Education | Simplicity, Expressiveness, Terseness, Linked Data |
Unicon | procedural, structured, 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 integrating object oriented capabilities, messaging and external communications, event monitoring, and more in a consistent framework. |
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 | imperative, object-oriented, generic, reflective, functional, event-driven | No | strong | safe | implicit | nominative | static, dynamic (for interop) | by reference, by value (both explicit) | Yes | Application | Rapid application development |
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 |