Language Comparison Table: Difference between revisions
Added Plain English
m (MUMPS +ISO) |
(Added Plain English) |
||
(46 intermediate revisions by 18 users not shown) | |||
Line 1:
[[Category:Encyclopedia]]
See also [[TL;DR]] (Brief descriptions of languages).
{|class="wikitable sortable"
![[:Category:Programming Languages|Language]]
Line 64 ⟶ 66:
|[[concurrent programming|concurrent]], [[imperative programming|imperative]]
|{{yes|Yes, [http://vak.ru/lib/exe/fetch.php/book/gost/pdf/gost-27974-88.pdf GOST 27974-88]}}
|strong
|safe
|explicit
Line 103 ⟶ 105:
|Mobile ad hoc networks
|
|-
! {{anchor|Arturo|[[Arturo]]}}
|[[generic programming|generic]], [[imperative programming|imperative]], [[functional programming|functional]], [[reflective programming|reflective]], [[stack|stack]]-based
|{{no|No, see [https://arturo-lang.io/documentation/ official documentation]}}
|strong
|
|implicit
|
|dynamic
|by value, by reference (literals)
|{{yes}}
|General, Scripting, DSLs, Templating, Portable apps, GUI applications
|Simplicity, Expressiveness, Portability
|-
! {{anchor|AutoHotkey|[[AutoHotkey]]}}
|[[imperative programming|imperative]], [[classless-objects|classless]]
|{{no}}
|untyped
Line 148 ⟶ 165:
|Education
|Simplicity
|-
! {{anchor|Blade|[[Blade]]}}
|[[imperative programming|imperative]], [[object-oriented]], [[functional programming|functional]]
|{{no}}
|strong
|safe
|implicit
|nominative
|dynamic
|by value, by reference (through pointers)
|{{yes}}
|Scripting, Application
|Simple, Lightweight, CLI, Web, Desktop, Mobile
|-
Line 243 ⟶ 275:
! {{anchor|COBOL|[[COBOL]]}}
|[[imperative programming|imperative]], [[object-oriented]]
|{{yes|Yes, [[ANSI]] 68, 74, 85 (and subsequent revisions); ECMA; [[ISO]] 1989:2023 (and previous version in 1978, 1985, 2002, 2014)}}
|strong
|safe
Line 328 ⟶ 360:
|Portable dynamic scripting language with consistent design and modern syntax
|-
! {{anchor|Dylan|[[Dylan]]}}
Line 371 ⟶ 404:
|Applications, GUIs, System, Games
|Elegance, Performance, Simplicity, Lightness, 99.9% [[C]] compatibility
|-
! {{anchor|Ecstasy|[[Ecstasy]]}}
|[[object-oriented]], [[generic programming|generic]], [[reflective programming|reflective]], [[functional programming|functional]], [[imperative programming|imperative]]
|{{no|No}}
|strong
|safe
|explicit, optionally inferred
|nominative; duck for interface types
|static; dynamic for generic edge conditions
|by value; by reference
|{{yes}}
|Application
|Predictable, Secure, Composable
|-
Line 518 ⟶ 566:
|{{no|No}}
|strong
|
|
|nominative
|static
|by value, by reference (through pointers)
|{{
|Educational, Scientific, Prototyping,
|Mac Freeware, Readability, Simplicity,
|-
Line 545 ⟶ 593:
! {{anchor|Go|[[Go]]}}
|[[concurrent programming|concurrent]], [[classless-objects|classless]]
|<!-- Std -->{{no}}, [http://golang.org/ref/spec language specification] available
|<!-- Strength -->strong
Line 631 ⟶ 679:
|-
! {{anchor|Insitux|[[Insitux]]}}
|[[functional programming|functional]], [[imperative programming|imperative]]
|{{no}}
|strong
|safe
|implicit
|
|dynamic
|by value
|{{yes}}
|Host-driven scripting
|Host-extensibility; provide "safe" modding e.g. timeout infinite loops, memory limits; concise code
|-
! {{anchor|Io|[[Io]]}}
|[[object-oriented]], [[classless-objects|classless]], prototype
|{{no}}
|strong
Line 678 ⟶ 739:
! {{anchor|JavaScript|[[JavaScript]]}}
|[[imperative programming|imperative]], [[object-oriented]], [[classless-objects|classless]], [[functional programming|functional]], [[reflective programming|reflective]]
|{{yes|Yes, [[ECMAScript standard]]}}
|weak
Line 704 ⟶ 765:
|[[functional programming|functional]] research
|[[concatenative programming|concatenative]]
|-
! {{anchor|jq|[[jq]]}}
|[[functional programming|functional]], [[tacit programming|tacit (point-free)]], [[dataflow programming|dataflow]]
|<!-- Std -->{{no|No, but a de facto standard exists in the agreement between the C and Go-based versions}}
|<!-- Strength -->weak
|<!-- Safety -->safe
|<!-- Expr -->implicit
|<!-- Compat -->n.a.
|<!-- Check -->dynamic
|<!-- Passing -->by value, with limited support for closures
|<!-- GC -->{{yes}}
|<!-- Uses -->Processing streams of JSON documents or strings; gojq also supports YAML
|<!-- Design goals -->Turing-completeness; ease of use and economy of expression within functional/dataflow programming frameworks
|-
Line 719 ⟶ 794:
|User scripting, general
|Safe sandboxed, easy to learn, easier to implement. Use to avoid eval() & reflection
|-
! {{anchor|Keg|[[Keg]]}}
|[[imperative programming|imperative]], [[Concatenative programming|concatenative]]
|{{no}}
|untyped
|unsafe
|implicit
|nominative
|dynamic
|by reference
|{{no}}
|Code Golf, general
|Be simple, readable, and concise
|-
Line 737 ⟶ 827:
|Pragmatic language for modern multi-platform applications with compilers for JVM, JS and Native code
|-
! {{anchor|LDPL|[[LDPL]]}}
Line 799 ⟶ 890:
! {{anchor|Lua|[[Lua]]}}
|[[procedural programming|procedural]], [[imperative programming|imperative]], [[classless-objects|classless]], [[reflective programming|reflective]]
|{{no}}
|strong
Line 905 ⟶ 996:
! {{anchor|MUMPS|[[MUMPS]]}}
|[[procedural programming|procedural]]
|{{yes|Yes, [https://www.iso.org/standard/29268.html ISO/IEC 11756:1999]}}
|untyped
|not applicable
Line 949 ⟶ 1,040:
! {{anchor|Oberon-2|[[Oberon-2]]}}
|[[procedural programming|procedural]], [[imperative programming|imperative]], [[object-oriented]], [[classless-objects|classless]]
|{{no}}
|strong
Line 1,055 ⟶ 1,146:
! {{anchor|Pascal|[[Pascal]]}}
|[[imperative programming|imperative]], [[procedural programming|procedural]]
|{{yes| [https://www.iso.org/standard/13802.html ISO 7185:1990] and [https://www.iso.org/standard/18237.html ISO 10206:1991]}}
|strong
|safe
Line 1,080 ⟶ 1,171:
|Text processing, Scripting
|Terseness, Expressiveness
|-
! {{anchor|Phix|[[Phix]]}}
|[[imperative programming|imperative]], [[procedural programming|procedural]], [[object-oriented]]
|<!-- Std -->{{no}}
|<!-- Strength -->strong
Line 1,107 ⟶ 1,183:
|<!-- Check -->dynamic, static
|<!-- Passing -->copy on write, immutable reference, multiple returns
|<!-- GC -->{{optional|Reference counting or JavaScript compatible}}
|<!-- Uses -->Application, Educational, General, High-level scripting, Text processing
|<!-- Design goals -->Simplicity, Readability,
|-
Line 1,140 ⟶ 1,216:
|Application, scripting
|optimized execution, efficient networking
|-
! {{anchor|Plain English|[[Plain English]]}}
|[[imperative programming|imperative]], [[procedural programming|procedural]]
|{{no}}
|strong
|safe
|explicit
|nominative
|static
|by reference
|{{no}}
|Application, Education, General
|Ease of use, Expressiveness, Readability, Simplicity
|-
Line 1,200 ⟶ 1,291:
|Application, Education, Scripting
|Simplicity, Readability, Expressiveness, Modularity
|-
! {{anchor|R|[[R]]}}
|[[functional programming|functional]], [[imperative programming|imperative]], [[reflective programming|reflective]], [[array]]
|{{no}}
|strong
|safe
|implicit
|Duck, structural
|dynamic
|value by need, by name (programmer chosen)
|{{yes}}
|Statistics, Numerical computation, Visualization, Education
|Expressiveness, interactive manipulation and analysis of datasets
|-
Line 1,247 ⟶ 1,353:
|-
! {{anchor|Raku|[[Raku]]}} ({{anchor|Raku|[[formerly Perl 6]]}})
|[[imperative programming|imperative]], [[procedural programming|procedural]], [[reflective programming|reflective]], [[functional programming|functional]], [[object-oriented]], [[generic programming|generic]], [[lazy evaluation]], multiple dispatch, metaprogramming
|{{no|No. The [https://github.com/perl6/roast Repository Of All Spec Tests (aka 'roast') defines the language]}}
|strong
|safe, unsafe
|optional explicit
|nominal (duck and structural available via constraints, patterns, generics, and gradual typing)
|dynamic, static
|
|{{yes}}
|Application, text processing, scripting
|Expressiveness,
|-
! {{anchor|REXX|[[REXX]]}} ({{anchor|REXX|[[Classic REXX]]}})
<br><br> <small><tt> REXX (<u>Re</u>structured E<u>x</u>tended E<u>x</u>xecutor) is an interpreted computer programming language developed at IBM by Mike Cowlishaw circa 1979</tt></small> <br><br>
| [[dynamic programming|dynamic]], [[procedural programming|procedural]], [[functional programming|functional]]
|<!-- Standardized --> {{yes|Yes.
|<!-- Type strength --> strong
|<!-- Type safety --> safe
|<!-- Expression of types --> inferred
|<!-- Type compatibility --> nominal
|<!-- Type checking -->dynamic (but only when both comparands are numeric ''and''
|<!--
|<!-- Garbage collection -->{{optional| garbage collection is allowed (and in most cases, automatic), but not mandated}}
|<!-- Intended use -->general, application, algorithms, calculations with extended precision (big numbers support), scripting, host/
|<!-- Design goals -->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; follows the principle of least astonishment [https://en.wikipedia.org/wiki/Principle_of_least_astonishment (POLA)].
|-
Line 1,291 ⟶ 1,397:
|Expressiveness, Readability
|-
! {{anchor|Rust|[[Rust]]}}
|[[concurrent programming|concurrent]], [[functional programming|functional]], [[imperative programming|imperative]], [[structured]], [[classless-objects|classless]], [[generic programming|generic]]
|{{no}}
|strong
Line 1,471 ⟶ 1,578:
|-
! {{anchor|TMG|[[TMG]]}}
| [[declarative programming|declarative]], data-driven, [[functional programming|functional]], unstructured
|{{no}}
|weak
|safe
|implicit
|
|
|by reference
|
|Compiler-compiler
|Creating compilers or translators (particularly, from a programming language to assembly)
|-
! {{anchor|Transd|[[Transd]]}}
|[[imperative programming|imperative]], [[object-oriented]], [[functional programming|functional]]
|{{no}}
|strong
|safe
|explicit
|nominative
|static
|by reference
|{{yes}}
|Embedded, Application, Scripting, Education
|Simplicity; compact implementation.
|-
! {{anchor|Trith|[[Trith]]}}
Line 1,516 ⟶ 1,651:
|-
! {{anchor|V_(Vlang)|[[V (Vlang)]]}}
|[[concurrent programming|concurrent]], [[imperative programming|imperative]], [[procedural programming|procedural]], [[structured]], [[classless-objects|classless]], [[functional programming|functional]], [[generic programming| generic]]
|{{no}}
|strong
|safe
|explicit, optionally inferred
|duck, structural
|<!-- Check -->static
|by value or by reference
|<!-- GC -->{{optional}}
|General, Application, Systems, GUI, Web, CLI, IT
|Simplicity, Readability, Usability, Portability, Modularity
|-
! {{anchor|Visual Basic|[[Visual Basic]]}}
Line 1,559 ⟶ 1,707:
|Scripting
|
|-
! {{anchor|Wren|[[Wren]]}}
|[[imperative programming|imperative]], [[object-oriented]], [[functional programming|functional]], [[concurrent programming|concurrent]]
|{{no}}
|strong
|safe
|implicit
|nominative
|dynamic
|by value
|{{yes}}
|Host-driven Scripting
|Lightweight, class-based, concurrent, easily embeddable
|-
|-class="sortbottom"
![[Programming Language|Language]]
Line 1,575 ⟶ 1,741:
|}
==External resources==
|