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
|soft, weak, meek, firm and strong - depending on context.
|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
|safe
|
|
|
|nominative
|static
|by value, by reference (through pointers)
|{{noyes|NoYes}}
|Educational, Scientific, Prototyping, CommericalCommercial Level Applications
|Mac Freeware, Readability, Simplicity, CompliabilityEfficiency, FreewareC/Objective-C Compatibility, EfficiencyObjective-C Alternative, Builds Xcode Projects
|-
 
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]}}
|{{yes|Yes, Extended Pascal standardized under [[ISO]]}}
|strong
|safe
Line 1,080 ⟶ 1,171:
|Text processing, Scripting
|Terseness, Expressiveness
|-
 
 
! {{anchor|Perl 6|[[Perl 6]]}}
|[[imperative programming|imperative]], [[procedural programming|procedural]], [[reflective programming|reflective]], [[functional programming|functional]], [[object-oriented]], [[generic programming|generic]], [[lazy evaluation]], multiple dispatch, metaprogramming
|{{yes|Yes, [http://perlcabal.org/syn/#doctable Perl 6 Synopses]}}
|strong
|safe, unsafe
|optional explicit
|nominal (duck and structural available via constraints, patterns, generics, and gradual typing)
|dynamic, static
|by value, by reference
|{{yes}}
|Application, text processing, scripting
|Expressiveness, generality
|-
 
 
! {{anchor|Phix|[[Phix]]}}
|[[imperative programming|imperative]], [[procedural programming|procedural]], [[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, Facilitate easeEase of programming and maintenanceuse
|-
 
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&nbsp;Perl&nbsp;6]]}})
 
|[[imperative programming|imperative]], [[procedural programming|procedural]], [[reflective programming|reflective]], [[functional programming|functional]], [[object-oriented]], [[generic programming|generic]], [[lazy evaluation]], multiple dispatch, metaprogramming
! {{anchor|R|[[R]]}}
|{{no|No. The [https://github.com/perl6/roast Repository Of All Spec Tests (aka 'roast') defines the language]}}
|[[functional programming|functional]], [[imperative programming|imperative]], [[reflective programming|reflective]], [[array]]
|{{no}}
|strong
|safe, unsafe
|optional explicit
|implicit
|nominal (duck and structural available via constraints, patterns, generics, and gradual typing)
|Duck, structural
|dynamic, static
|value by needvalue, by name (programmer chosen)reference
|{{yes}}
|Application, text processing, scripting
|Statistics, Numerical computation, Visualization, Education
|Expressiveness, interactive manipulation and analysis of datasetsgenerality
|-
 
 
! {{anchor|REXX|[[REXX]]}} ({{anchor|REXX|[[Classic&nbsp;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. &nbsp; <br><br>There is a ANSI standard (X3.274-1996), &nbsp; but some REXX implementations don't adhere to it.}}
|<!-- Type strength -->&nbsp; strong
|<!-- Type safety -->&nbsp; safe
|<!-- Expression of types -->&nbsp; inferred
|<!-- Type compatibility -->&nbsp; nominal
|<!-- Type checking -->dynamic &nbsp; (but only when both comparands are numeric &nbsp;''and''&nbsp; non-strictnon─strict comparisons are used)
|<!-- ParmameterParameter Passing -->by&nbsp; by&nbsp;value
|<!-- 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/sub-systemsub─system scripting/interfacing, data/text processing, programming as a human activity
|<!-- Design goals -->designed to make programming easier;&nbsp; to foster high quality programs by making writing them as simple and enjoyable as possible;&nbsp; designing each part of the language for people to use is more important than providing easy implementation;&nbsp; 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==
18

edits