Language Comparison Table: Difference between revisions
Content added Content deleted
m (Messed up Clean's anchor) |
(Anchors away!) |
||
Line 131: | Line 131: | ||
| Correctness, Modularity |
| Correctness, Modularity |
||
|- |
|- |
||
! [[COBOL]] |
! {{anchor|COBOL|[[COBOL]]}} |
||
| [[imperative programming]], [[object-oriented]] |
| [[imperative programming]], [[object-oriented]] |
||
| {{yes}} |
| {{yes}} |
||
Line 144: | Line 144: | ||
| Readability |
| Readability |
||
|- |
|- |
||
! [[ColdFusion]] |
! {{anchor|ColdFusion|[[ColdFusion]]}} |
||
| [[procedural programming]], [[object-oriented]] |
| [[procedural programming]], [[object-oriented]] |
||
| {{no}} |
| {{no}} |
||
Line 157: | Line 157: | ||
| Rapid Application Development, Ease of use |
| Rapid Application Development, Ease of use |
||
|- |
|- |
||
! [[Common Lisp]] |
! {{anchor|Common Lisp|[[Common Lisp]]}} |
||
| [[imperative programming]], [[functional programming]], [[object-oriented]] |
| [[imperative programming]], [[functional programming]], [[object-oriented]] |
||
| {{yes}} |
| {{yes}} |
||
Line 170: | Line 170: | ||
| Standardize [[Lisp]] |
| Standardize [[Lisp]] |
||
|- |
|- |
||
! [[D]] |
! {{anchor|D|[[D]]}} |
||
| [[imperative programming]], [[object-oriented]], [[generic programming]] |
| [[imperative programming]], [[object-oriented]], [[generic programming]] |
||
| {{no}} |
| {{no}} |
||
Line 183: | Line 183: | ||
| Compilability, Correctness, Efficiency |
| Compilability, Correctness, Efficiency |
||
|- |
|- |
||
! [[E]] |
! {{anchor|E|[[E]]}} |
||
| [[imperative programming|imperative]], [[object-oriented]], [[object-capability]], [[communicating event loops]] |
| [[imperative programming|imperative]], [[object-oriented]], [[object-capability]], [[communicating event loops]] |
||
| <!-- Std -->{{no}}, still in development |
| <!-- Std -->{{no}}, still in development |
||
Line 196: | Line 196: | ||
| <!-- 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 |
||
|- |
|- |
||
! [[eC]] |
! {{anchor|eC|[[eC]]}} |
||
| [[imperative programming]], [[object-oriented]], [[generic programming]], [[reflective programming]] |
| [[imperative programming]], [[object-oriented]], [[generic programming]], [[reflective programming]] |
||
| {{no}} |
| {{no}} |
||
Line 209: | Line 209: | ||
| Elegance, Performance, Simplicity, Lightness, 99.9% [[C]] compatibility |
| Elegance, Performance, Simplicity, Lightness, 99.9% [[C]] compatibility |
||
|- |
|- |
||
! [[Eiffel]] |
! {{anchor|Eiffel|[[Eiffel]]}} |
||
| [[imperative programming]], [[object-oriented]], [[generic programming]] |
| [[imperative programming]], [[object-oriented]], [[generic programming]] |
||
| {{yes}}, [http://www.ecma-international.org/publications/standards/Ecma-367.htm ECMA-367], [http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=42924 ISO/IEC 25436:2006] |
| {{yes}}, [http://www.ecma-international.org/publications/standards/Ecma-367.htm ECMA-367], [http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=42924 ISO/IEC 25436:2006] |
||
Line 222: | Line 222: | ||
| Correctness, Efficiency, Design by contract |
| Correctness, Efficiency, Design by contract |
||
|- |
|- |
||
! [[Erlang]] |
! {{anchor|Erlang|[[Erlang]]}} |
||
| [[functional programming]], [[concurrent programming|concurrent]], [[distributed programming]] |
| [[functional programming]], [[concurrent programming|concurrent]], [[distributed programming]] |
||
| {{no}} |
| {{no}} |
||
Line 235: | Line 235: | ||
| Fault tolerance, Scalability |
| Fault tolerance, Scalability |
||
|- |
|- |
||
! [[Forth]] |
! {{anchor|Forth|[[Forth]]}} |
||
| [[imperative programming]], [[stack]]-oriented |
| [[imperative programming]], [[stack]]-oriented |
||
| {{yes}}, [[ANSI]] |
| {{yes}}, [[ANSI]] |
||
Line 248: | Line 248: | ||
| Compact implementations, Low level access, Interactive programming |
| Compact implementations, Low level access, Interactive programming |
||
|- |
|- |
||
! [[Fortran]] |
! {{anchor|Fortran|[[Fortran]]}} |
||
| [[imperative programming]], [[procedural programming]], [[object-oriented]] |
| [[imperative programming]], [[procedural programming]], [[object-oriented]] |
||
| {{yes}}, [[ISO]], [http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=39691 ISO/IEC 1539-1:2004] |
| {{yes}}, [[ISO]], [http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=39691 ISO/IEC 1539-1:2004] |
||
Line 261: | Line 261: | ||
| Runtime efficiency, Simple syntax |
| Runtime efficiency, Simple syntax |
||
|- |
|- |
||
! [[Groovy]] |
! {{anchor|Groovy|[[Groovy]]}} |
||
| [[imperative programming]], [[object-oriented]], [[aspect-oriented programming]] |
| [[imperative programming]], [[object-oriented]], [[aspect-oriented programming]] |
||
| {{no}} |
| {{no}} |
||
Line 274: | Line 274: | ||
| [[JVM]] compatibility |
| [[JVM]] compatibility |
||
|- |
|- |
||
! [[Haskell]] |
! {{anchor|Haskell|[[Haskell]]}} |
||
| [[functional programming]], [[generic programming]], [[lazy evaluation]] |
| [[functional programming]], [[generic programming]], [[lazy evaluation]] |
||
| {{yes}}, [http://www.haskell.org/haskellwiki/Language_and_library_specification Haskell 98 Report] |
| {{yes}}, [http://www.haskell.org/haskellwiki/Language_and_library_specification Haskell 98 Report] |
||
Line 287: | Line 287: | ||
| [[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] |
||
|- |
|- |
||
! [[Io]] |
! {{anchor|Io|[[Io]]}} |
||
| [[object-oriented]], prototype |
| [[object-oriented]], prototype |
||
| {{no}} |
| {{no}} |
||
Line 300: | Line 300: | ||
| |
| |
||
|- |
|- |
||
! [[J]] |
! {{anchor|J|[[J]]}} |
||
| [[array]] programming, function-level programming, [[tacit programming]] |
| [[array]] programming, function-level programming, [[tacit programming]] |
||
| {{no}} |
| {{no}} |
||
Line 326: | Line 326: | ||
| Write once run anywhere |
| Write once run anywhere |
||
|- |
|- |
||
! [[JavaScript]] |
! {{anchor|JavaScript|[[JavaScript]]}} |
||
| [[imperative programming]], [[object-oriented]], [[functional programming]], [[reflective programming]] |
| [[imperative programming]], [[object-oriented]], [[functional programming]], [[reflective programming]] |
||
| {{yes}} |
| {{yes}} |
||
Line 339: | Line 339: | ||
| |
| |
||
|- |
|- |
||
! [[Joy]] |
! {{anchor|Joy|[[Joy]]}} |
||
| [[functional programming]], [[stack]]-oriented |
| [[functional programming]], [[stack]]-oriented |
||
| {{no}} |
| {{no}} |
||
Line 352: | Line 352: | ||
| [[concatenative]] |
| [[concatenative]] |
||
|- |
|- |
||
! [[Lisp]] |
! {{anchor|Lisp|[[Lisp]]}} |
||
| [[functional programming]], [[reflective programming]]; others vary by dialect |
| [[functional programming]], [[reflective programming]]; others vary by dialect |
||
| {{no}} |
| {{no}} |
||
Line 365: | Line 365: | ||
| Simple notation for Lambda calculus, Homoiconicity |
| Simple notation for Lambda calculus, Homoiconicity |
||
|- |
|- |
||
! [[Logo]] |
! {{anchor|Logo|[[Logo]]}} |
||
| [[procedural programming]], [[functional programming]] |
| [[procedural programming]], [[functional programming]] |
||
| {{no}} |
| {{no}} |
||
Line 378: | Line 378: | ||
| Simple syntax, Turtle graphics, Interactive programming |
| Simple syntax, Turtle graphics, Interactive programming |
||
|- |
|- |
||
! [[Lua]] |
! {{anchor|Lua|[[Lua]]}} |
||
| [[procedural programming]], [[imperative programming]], [[reflective programming|reflective]] |
| [[procedural programming]], [[imperative programming]], [[reflective programming|reflective]] |
||
| {{no}} |
| {{no}} |
||
Line 391: | Line 391: | ||
| Small, embedded, configuration. |
| Small, embedded, configuration. |
||
|- |
|- |
||
! [[Lucid]] |
! {{anchor|Lucid|[[Lucid]]}} |
||
| [[dataflow programming]], [[functional programming]] |
| [[dataflow programming]], [[functional programming]] |
||
| {{no}} |
| {{no}} |
||
Line 404: | Line 404: | ||
| dataflow |
| dataflow |
||
|- |
|- |
||
! [[Mathematica]] |
! {{anchor|Mathematica|[[Mathematica]]}} |
||
| [[functional programming]], [[procedural programming]] |
| [[functional programming]], [[procedural programming]] |
||
| {{no}} |
| {{no}} |
||
Line 417: | Line 417: | ||
| |
| |
||
|- |
|- |
||
! [[MAXScript]] |
! {{anchor|MAXScript|[[MAXScript]]}} |
||
| [[imperative programming]], [[object-oriented]], [[procedural programming]] |
| [[imperative programming]], [[object-oriented]], [[procedural programming]] |
||
| {{no}} |
| {{no}} |
||
Line 430: | Line 430: | ||
| Simplicity, Accessibilty |
| Simplicity, Accessibilty |
||
|- |
|- |
||
! [[Modula-3]] |
! {{anchor|Modula-3|[[Modula-3]]}} |
||
| [[imperative programming]], [[object-oriented]], [[procedural programming]], [[generic programming]] |
| [[imperative programming]], [[object-oriented]], [[procedural programming]], [[generic programming]] |
||
| {{no}} |
| {{no}} |
||
Line 443: | Line 443: | ||
| Simple, Object oriented |
| Simple, Object oriented |
||
|- |
|- |
||
! [[Nial]] |
! {{anchor|Nial|[[Nial]]}} |
||
| [[functional programming]], [[array]] programming |
| [[functional programming]], [[array]] programming |
||
| {{no}} |
| {{no}} |
||
Line 456: | Line 456: | ||
| |
| |
||
|- |
|- |
||
! [[Oberon-2]] |
! {{anchor|Oberon-2|[[Oberon-2]]}} |
||
| [[procedural programming]], [[imperative programming]], [[object-oriented]] |
| [[procedural programming]], [[imperative programming]], [[object-oriented]] |
||
| {{no}} |
| {{no}} |
||
Line 469: | Line 469: | ||
| Simplicity |
| Simplicity |
||
|- |
|- |
||
! [[Object Pascal]] ([[Delphi]]) |
! {{anchor|Object Pascal|[[Object Pascal]]}} ({{anchor|Delphi|[[Delphi]]}}) |
||
| [[imperative programming]], [[object-oriented]], [[generic programming]] |
| [[imperative programming]], [[object-oriented]], [[generic programming]] |
||
| {{no}} |
| {{no}} |
||
Line 482: | Line 482: | ||
| Readability, Rapid application development, Modularity |
| Readability, Rapid application development, Modularity |
||
|- |
|- |
||
! [[Objective-C]] |
! {{anchor|Objective-C|[[Objective-C]]}} |
||
| [[imperative programming]], [[object-oriented]], [[reflective programming]] |
| [[imperative programming]], [[object-oriented]], [[reflective programming]] |
||
| {{yes}} |
| {{yes}} |
||
Line 495: | Line 495: | ||
| [[Smalltalk]] like, Component based code reuse, [[C]] compatibility |
| [[Smalltalk]] like, Component based code reuse, [[C]] compatibility |
||
|- |
|- |
||
! [[Ocaml]] |
! {{anchor|Ocaml|[[Ocaml]]}} |
||
| [[object-oriented]], [[functional programming]], [[imperative programming]], [[generic programming]] |
| [[object-oriented]], [[functional programming]], [[imperative programming]], [[generic programming]] |
||
| {{no}} |
| {{no}} |
||
Line 508: | Line 508: | ||
| Efficiency, Robustness, Correctness |
| Efficiency, Robustness, Correctness |
||
|- |
|- |
||
! [[Oz]] |
! {{anchor|Oz|[[Oz]]}} |
||
| logic programming, [[functional programming]], [[imperative programming]], [[object-oriented]], [[concurrent programming]] |
| logic programming, [[functional programming]], [[imperative programming]], [[object-oriented]], [[concurrent programming]] |
||
| {{no}} |
| {{no}} |
||
Line 521: | Line 521: | ||
| |
| |
||
|- |
|- |
||
! [[Pascal]] |
! {{anchor|Pascal|[[Pascal]]}} |
||
| [[imperative programming]], [[procedural programming]] |
| [[imperative programming]], [[procedural programming]] |
||
| {{yes}} (Extended Pascal standardized under [[ISO]]) |
| {{yes}} (Extended Pascal standardized under [[ISO]]) |
||
Line 534: | Line 534: | ||
| Readability, Discipline, Modularity |
| Readability, Discipline, Modularity |
||
|- |
|- |
||
! [[Perl]] |
! {{anchor|Perl|[[Perl]]}} |
||
| [[imperative programming]], [[procedural programming]], [[reflective programming]], [[functional programming]], [[object-oriented]], [[generic programming]] |
| [[imperative programming]], [[procedural programming]], [[reflective programming]], [[functional programming]], [[object-oriented]], [[generic programming]] |
||
| {{no}} |
| {{no}} |
||
Line 547: | Line 547: | ||
| Terseness, Expressiveness |
| Terseness, Expressiveness |
||
|- |
|- |
||
! [[PHP]] |
! {{anchor|PHP|[[PHP]]}} |
||
| [[imperative programming]], [[object-oriented]], [[reflective programming]] |
| [[imperative programming]], [[object-oriented]], [[reflective programming]] |
||
| {{no}} |
| {{no}} |
||
Line 560: | Line 560: | ||
| Robustness and Simplicity |
| Robustness and Simplicity |
||
|- |
|- |
||
! [[Pop11]] |
! {{anchor|Pop11|[[Pop11]]}} |
||
| [[imperative programming]], [[object-oriented]], [[functional programming]] |
| [[imperative programming]], [[object-oriented]], [[functional programming]] |
||
| {{no}} |
| {{no}} |
||
Line 573: | Line 573: | ||
| |
| |
||
|- |
|- |
||
! [[Prolog]] |
! {{anchor|Prolog|[[Prolog]]}} |
||
| logic programming |
| logic programming |
||
| {{yes}}, [[ISO]] |
| {{yes}}, [[ISO]] |
||
Line 586: | Line 586: | ||
| [[declarative programming]] |
| [[declarative programming]] |
||
|- |
|- |
||
! [[Python]] |
! {{anchor|Python|[[Python]]}} |
||
| [[imperative programming]], [[object-oriented]], [[functional programming]], [[aspect-oriented programming]], [[reflective programming]] |
| [[imperative programming]], [[object-oriented]], [[functional programming]], [[aspect-oriented programming]], [[reflective programming]] |
||
| {{no}} |
| {{no}} |
||
Line 599: | Line 599: | ||
| Simplicity, Readability, Expressiveness, Modularity |
| Simplicity, Readability, Expressiveness, Modularity |
||
|- |
|- |
||
! [[RapidQ]] |
! {{anchor|RapidQ|[[RapidQ]]}} |
||
| [[imperative programming]], component-oriented programming, [[event-driven programming]] |
| [[imperative programming]], component-oriented programming, [[event-driven programming]] |
||
| {{no}} |
| {{no}} |
||
Line 612: | Line 612: | ||
| Rapid application development, Simplicity, [[BASIC]] compatibility |
| Rapid application development, Simplicity, [[BASIC]] compatibility |
||
|- |
|- |
||
! [[Ruby]] |
! {{anchor|Ruby|[[Ruby]]}} |
||
| [[imperative programming]], [[object-oriented]], [[aspect-oriented programming]], [[reflective programming]] |
| [[imperative programming]], [[object-oriented]], [[aspect-oriented programming]], [[reflective programming]] |
||
| {{no}} |
| {{no}} |
||
Line 625: | Line 625: | ||
| Expressiveness, Readability |
| Expressiveness, Readability |
||
|- |
|- |
||
! [[Scala]] |
! {{anchor|Scala|[[Scala]]}} |
||
| [[object-oriented]], [[functional programming]], [[generic programming]] |
| [[object-oriented]], [[functional programming]], [[generic programming]] |
||
| {{no}} |
| {{no}} |
||
Line 638: | Line 638: | ||
| |
| |
||
|- |
|- |
||
! [[Scheme]] |
! {{anchor|Scheme|[[Scheme]]}} |
||
| [[functional programming]] |
| [[functional programming]] |
||
| {{yes}}, R<sup>5</sup>RS, R<sup>6</sup>RS |
| {{yes}}, R<sup>5</sup>RS, R<sup>6</sup>RS |
||
Line 651: | Line 651: | ||
| Minimalistic, Lexical Scoping |
| Minimalistic, Lexical Scoping |
||
|- |
|- |
||
! [[Slate]] |
! {{anchor|Slate|[[Slate]]}} |
||
| [[object-oriented]], [[imperative programming]], [[functional programming]], [[reflective programming]], prototype, multi-dispatch |
| [[object-oriented]], [[imperative programming]], [[functional programming]], [[reflective programming]], prototype, multi-dispatch |
||
| {{no}} |
| {{no}} |
||
Line 664: | Line 664: | ||
| Uniformity, Pure object-oriented, expressiveness, readability |
| Uniformity, Pure object-oriented, expressiveness, readability |
||
|- |
|- |
||
! [[Smalltalk]] |
! {{anchor|Smalltalk|[[Smalltalk]]}} |
||
| [[object-oriented]], [[concurrent programming]], [[event-driven programming]], [[imperative programming]], [[declarative programming]] |
| [[object-oriented]], [[concurrent programming]], [[event-driven programming]], [[imperative programming]], [[declarative programming]] |
||
| {{yes}}, [[ANSI]] |
| {{yes}}, [[ANSI]] |
||
Line 677: | Line 677: | ||
| Uniformity, Pure object oriented |
| Uniformity, Pure object oriented |
||
|- |
|- |
||
! [[Tcl]] |
! {{anchor|Tcl|[[Tcl]]}} |
||
| [[imperative programming]], [[procedural programming]], [[event-driven programming]], [[object-oriented]] (via [http://wiki.tcl.tk/970 extensions]) |
| [[imperative programming]], [[procedural programming]], [[event-driven programming]], [[object-oriented]] (via [http://wiki.tcl.tk/970 extensions]) |
||
| {{no}} |
| {{no}} |
||
Line 690: | Line 690: | ||
| [http://www.tcl.tk/about/history.html Extend, Embed and Integrate] |
| [http://www.tcl.tk/about/history.html Extend, Embed and Integrate] |
||
|- |
|- |
||
! [[V]] |
! {{anchor|V|[[V]]}} |
||
| [[functional programming]], [[stack]]-oriented, [[concatenative]] |
| [[functional programming]], [[stack]]-oriented, [[concatenative]] |
||
| {{no}} |
| {{no}} |
||
Line 703: | Line 703: | ||
| [[concatenative]] |
| [[concatenative]] |
||
|- |
|- |
||
! [[Visual Basic]] |
! {{anchor|Visual Basic|[[Visual Basic]]}} |
||
| component-oriented programming, [[event-driven programming]] |
| component-oriented programming, [[event-driven programming]] |
||
| {{no}} |
| {{no}} |
||
Line 716: | Line 716: | ||
| Rapid application development, Simplicity |
| Rapid application development, Simplicity |
||
|- |
|- |
||
! [[Visual Basic .NET]] |
! {{anchor|Visual Basic .NET|[[Visual Basic .NET]]}} |
||
| [[object-oriented]], [[event-driven programming]] |
| [[object-oriented]], [[event-driven programming]] |
||
| {{no}} |
| {{no}} |
||
Line 729: | Line 729: | ||
| Rapid application development, Simplicity |
| Rapid application development, Simplicity |
||
|- |
|- |
||
! [[Windows PowerShell]] |
! {{anchor|Windows PowerShell|[[Windows PowerShell]]}} |
||
| [[imperative programming]], [[object-oriented]], [[functional programming]], [[pipeline programming]], [[reflective programming]] |
| [[imperative programming]], [[object-oriented]], [[functional programming]], [[pipeline programming]], [[reflective programming]] |
||
| {{no}} |
| {{no}} |
Revision as of 21:23, 7 July 2009
Language | Paradigm(s) | Standardized | Type strength | Type safety | Expression of types | Type compatibility | Type checking | Parameter Passing Methods Available | Garbage Collected | Intended use | Design goals |
---|---|---|---|---|---|---|---|---|---|---|---|
ActionScript | imperative programming, object-oriented, event-driven programming | Yes
, ECMA |
strong | safe | static | Yes | Web design | ||||
Ada | concurrent, distributed programming, generic programming, imperative programming, object-oriented | Yes
, ANSI, ISO, ANSI/MIL-STD-1815A-1983, ISO/IEC 8652, ISO/IEC TR 24718, GOST 27831-88 |
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 | Program reliability and maintenance, Programming as a human activity, Efficiency Language Reference Manual |
ALGOL 68 | concurrent, imperative programming | Yes | strong | 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) |
AutoHotkey | imperative programming | No | untyped | by value or by reference | No | End User Programming | simplicity, speed, stability | ||||
BASIC | procedural programming | Yes | varies by dialect | varies by dialect | Education | Simplicity | |||||
C | imperative programming | Yes | weak | unsafe | explicit | nominative | static | by value, by reference (through pointers) | No | System, Embedded | Low level access, Minimal constraint |
C# | imperative programming, object-oriented, generic programming, reflective programming | Yes | strong | safe (unsafe allowed) | implicit | nominative | static | Yes | Application | Rapid application development | |
C++ | imperative programming, object-oriented, generic programming | Yes
, ISO |
strong | safe (unsafe allowed) | explicit, partially implicit | nominative, structural | static, dynamic | by value, by reference (through reference types) | No | Application, System | Abstraction, Efficiency, Compatibility |
Clean | functional programming, generic programming | No | strong | implicit | static | Yes | General | Correctness, Modularity | |||
COBOL | imperative programming, object-oriented | Yes | strong | static | No | Business and Financial Applications | Readability | ||||
ColdFusion | procedural programming, object-oriented | No | weak | implicit | dynamic | Web Development | Rapid Application Development, Ease of use | ||||
Common Lisp | imperative programming, functional programming, object-oriented | Yes | strong | safe | dynamic, static | Yes | General | Standardize Lisp | |||
D | imperative programming, object-oriented, generic programming | No | strong | safe, unsafe allowed | explicit, optional inferred | nominative, structural | static, dynamic | by value, by reference (through reference types) | Yes | Application, System | Compilability, Correctness, Efficiency |
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 programming, object-oriented, generic programming, reflective programming | 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 programming, object-oriented, generic programming | Yes | strong | safe | nominative | static | Yes | Application | Correctness, Efficiency, Design by contract | ||
Erlang | functional programming, concurrent, distributed programming | No | strong | dynamic | Yes | Telecom and distributed applications | Fault tolerance, Scalability | ||||
Forth | imperative programming, stack-oriented | Yes
, ANSI |
none | n/a | n/a | n/a | n/a | No | Application, Embedded systems | Compact implementations, Low level access, Interactive programming | |
Fortran | imperative programming, procedural programming, object-oriented | Yes | strong | safe | nominative | static | No | Scientific and numeric applications | Runtime efficiency, Simple syntax | ||
Groovy | imperative programming, object-oriented, aspect-oriented programming | No | strong | safe | implicit | dynamic | Yes | Application | JVM compatibility | ||
Haskell | functional programming, generic programming, lazy evaluation | Yes | strong | safe | inferred, optional explicit annotations | polymorphic structural | static | Yes | Application, Research | lazy evaluation, Teaching and research, completely formally described Report Preface | |
Io | object-oriented, prototype | No | strong | dynamic | Yes | ||||||
J | array programming, function-level programming, tacit programming | No | strong | safe | dynamic | Data processing | Terseness, Expressiveness, Powerful Data Manipulation | ||||
Java | imperative programming, object-oriented, generic programming, reflective programming | No | strong | safe | explicit | nominative | static | by value | Yes | Application | Write once run anywhere |
JavaScript | imperative programming, object-oriented, functional programming, reflective programming | Yes | weak | implicit | dynamic | Yes | Client side web scripting | ||||
Joy | functional programming, stack-oriented | No | strong | safe | dynamic | functional programming research | concatenative | ||||
Lisp | functional programming, reflective programming; others vary by dialect | No | strong | dynamic | Yes | General | Simple notation for Lambda calculus, Homoiconicity | ||||
Logo | procedural programming, functional programming | No | strong | safe | implicit | structural | dynamic | Yes | Education | Simple syntax, Turtle graphics, Interactive programming | |
Lua | procedural programming, imperative programming, reflective | No | strong | safe | implicit | dynamic | Yes | Host-driven Scripting | Small, embedded, configuration. | ||
Lucid | dataflow programming, functional programming | No | strong | safe | dynamic | stream processing | dataflow | ||||
Mathematica | functional programming, procedural programming | No | strong | dynamic | Yes | Numeric computation and visualization | |||||
MAXScript | imperative programming, object-oriented, procedural programming | No | strong | safe | implicit | dynamic | by value, by reference | 3D Art Tools, Scripting | Simplicity, Accessibilty | ||
Modula-3 | imperative programming, object-oriented, procedural programming, generic programming | No | strong | safe (unsafe allowed) | explicit | structural | static | by value, by reference | Yes | Application, Systems | Simple, Object oriented |
Nial | functional programming, array programming | No | strong | dynamic | Data processing | ||||||
Oberon-2 | procedural programming, imperative programming, object-oriented | No | strong | safe | explicit | structural | static | by value, by reference | Yes | Teaching, System | Simplicity |
Object Pascal (Delphi) | imperative programming, object-oriented, generic programming | No | strong | safe (unsafe allowed) | explicit | nominative | static | Yes | Application, System | Readability, Rapid application development, Modularity | |
Objective-C | imperative programming, object-oriented, reflective programming | Yes | weak | explicit | static | Yes
(as of 2.0) |
Application | Smalltalk like, Component based code reuse, C compatibility | |||
Ocaml | object-oriented, functional programming, imperative programming, generic programming | No | strong | safe | inferred, optional explicit annotations | polymorphic structural | static | by value | Yes | Application | Efficiency, Robustness, Correctness |
Oz | logic programming, functional programming, imperative programming, object-oriented, concurrent programming | No | dynamic | Yes | Education | ||||||
Pascal | imperative programming, procedural programming | Yes
(Extended Pascal standardized under ISO) |
strong | safe | explicit | static | by value, by reference | No | Education | Readability, Discipline, Modularity | |
Perl | imperative programming, procedural programming, reflective programming, functional programming, object-oriented, generic programming | No | weak | implicit | dynamic | by reference | Reference counting | Text processing, Scripting | Terseness, Expressiveness | ||
PHP | imperative programming, object-oriented, reflective programming | No | weak | dynamic | Yes | Web Application, CLI | Robustness and Simplicity | ||||
Pop11 | imperative programming, object-oriented, functional programming | No | strong | safe | implicit | dynamic | Yes | Application, Education | |||
Prolog | logic programming | Yes
, ISO |
strong | dynamic | Yes | Problem solving, Artificial intelligence | declarative programming | ||||
Python | imperative programming, object-oriented, functional programming, aspect-oriented programming, reflective programming | No | strong | safe | implicit | dynamic | Call by object reference | Yes | Application, Education, Scripting | Simplicity, Readability, Expressiveness, Modularity | |
RapidQ | imperative programming, component-oriented programming, event-driven programming | No | strong (none for Variant type) | safe | static | by reference, by value | Application | Rapid application development, Simplicity, BASIC compatibility | |||
Ruby | imperative programming, object-oriented, aspect-oriented programming, reflective programming | No | strong | implicit | dynamic | by reference | Yes | Application, Scripting | Expressiveness, Readability | ||
Scala | object-oriented, functional programming, generic programming | No | strong | partially implicit | static | Yes | Education | ||||
Scheme | functional programming | Yes
, R5RS, R6RS |
strong | safe | implicit | dynamic (latent) | by value | Yes | General, Education | Minimalistic, Lexical Scoping | |
Slate | object-oriented, imperative programming, functional programming, reflective programming, 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 programming, event-driven programming, imperative programming, declarative programming | Yes
, ANSI |
strong | safe | implicit | dynamic | by reference | Yes | Application, Education | Uniformity, Pure object oriented | |
Tcl | imperative programming, procedural programming, event-driven programming, object-oriented (via extensions) | 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 |
V | functional programming, stack-oriented, concatenative | No | strong | safe | dynamic | functional programming research | concatenative | ||||
Visual Basic | component-oriented programming, event-driven programming | No | strong | safe | nominative | static | by reference, by value (explicit) | Yes | Application | Rapid application development, Simplicity | |
Visual Basic .NET | object-oriented, event-driven programming | No | strong | static | by reference, by value (both explicit) | Yes | Application | Rapid application development, Simplicity | |||
Windows PowerShell | imperative programming, object-oriented, functional programming, pipeline programming, reflective programming | 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 Collected | Intended use | Design goals |