Language Comparison Table: Difference between revisions

From Rosetta Code
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 &nbsp; (but only when both comparands are numeric ''and'' non-strict comparisons are used)
| dynamic &nbsp; (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
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

External resources