Language Comparison Table: Difference between revisions

From Rosetta Code
Content added Content deleted
m (Trying to concisify some rows)
(Added "Parameter Passing Methods Available" column, filled in a few languages)
Line 7: Line 7:
! Expression of types
! Expression of types
! [[Type compatibility]]
! [[Type compatibility]]
! Type checking
! Type checking
! [[Parameter Passing]] Methods Available
! Intended use
! Intended use
! Design goals
! Design goals
Line 19: Line 20:
|
|
| static
| static
|
| Web design
| Web design
|
|
Line 30: Line 32:
| nominative
| nominative
| static
| static
|
| Embedded, real-time, mission-critical, long-lived, and large scale systems
| Embedded, real-time, mission-critical, long-lived, and large scale systems
| Program reliability and maintenance, Programming as a human activity, Efficiency [http://www.adaic.com/standards/05rm/html/RM-0-3.html Language Reference Manual]
| Program reliability and maintenance, Programming as a human activity, Efficiency [http://www.adaic.com/standards/05rm/html/RM-0-3.html Language Reference Manual]
Line 41: Line 44:
| structural
| structural
| static or dynamic
| static or dynamic
|
| Application
| Application
| Readability, Structure
| Readability, Structure
Line 52: Line 56:
|
|
|
|
|
| Education
| Education
| Simplicity
| Simplicity
Line 63: Line 68:
| nominative
| nominative
| static
| static
| by value, by reference
| System
| System
| Low level access, Minimal constraint
| Low level access, Minimal constraint
Line 74: Line 80:
| nominative
| nominative
| static
| static
|
| Application
| Application
| Rapid application development
| Rapid application development
Line 85: Line 92:
| nominative, structural
| nominative, structural
| static, dynamic
| static, dynamic
| by value, by reference
| Application, System
| Application, System
| Abstraction, Efficiency, Compatibility
| Abstraction, Efficiency, Compatibility
Line 96: Line 104:
|
|
| static
| static
|
| General
| General
| Correctness, Modularity
| Correctness, Modularity
Line 107: Line 116:
|
|
| static
| static
|
| Business and Financial Applications
| Business and Financial Applications
| Readability
| Readability
Line 118: Line 128:
|
|
| dynamic
| dynamic
|
| Web Development
| Web Development
| Rapid Application Development, Ease of use
| Rapid Application Development, Ease of use
Line 129: Line 140:
|
|
| dynamic
| dynamic
|
| General
| General
| Standardize [[Lisp]]
| Standardize [[Lisp]]
Line 140: Line 152:
|
|
| static
| static
|
| Application, System
| Application, System
| Compilability, Correctness, Efficiency
| Compilability, Correctness, Efficiency
Line 151: Line 164:
| nominative
| nominative
| static
| static
|
| Application
| Application
| Correctness, Efficiency, Design by contract
| Correctness, Efficiency, Design by contract
Line 162: Line 176:
|
|
| dynamic
| dynamic
|
| Telecom and distributed applications
| Telecom and distributed applications
| Fault tolerance, Scalability
| Fault tolerance, Scalability
Line 173: Line 188:
| n/a
| n/a
| n/a
| n/a
|
| Application, Embedded systems
| Application, Embedded systems
| Compact implementations, Low level access, Interactive programming
| Compact implementations, Low level access, Interactive programming
Line 184: Line 200:
| nominative
| nominative
| static
| static
|
| Scientific and numeric applications
| Scientific and numeric applications
| Runtime efficiency, Simple syntax
| Runtime efficiency, Simple syntax
Line 195: Line 212:
|
|
| dynamic
| dynamic
|
| Application
| Application
| [[JVM]] compatibility
| [[JVM]] compatibility
Line 206: Line 224:
| polymorphic structural
| polymorphic structural
| static
| static
|
| Application
| Application
| [[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]
Line 217: Line 236:
|
|
| dynamic
| dynamic
|
| Data processing
| Data processing
| Terseness, Expressiveness, Powerful Data Manipulation
| Terseness, Expressiveness, Powerful Data Manipulation
Line 228: Line 248:
| nominative
| nominative
| static
| static
| by value
| Application
| Application
| Write once run anywhere
| Write once run anywhere
Line 239: Line 260:
|
|
| dynamic
| dynamic
|
| Client side web scripting
| Client side web scripting
|
|
Line 250: Line 272:
|
|
| dynamic
| dynamic
|
| [[functional programming]] research
| [[functional programming]] research
| [[concatenative]]
| [[concatenative]]
Line 261: Line 284:
|
|
| dynamic
| dynamic
|
| General
| General
| Simple notation for Lambda calculus, Homoiconicity
| Simple notation for Lambda calculus, Homoiconicity
Line 272: Line 296:
| structural
| structural
| dynamic
| dynamic
|
| Education
| Education
| Simple syntax, Turtle graphics, Interactive programming
| Simple syntax, Turtle graphics, Interactive programming
Line 283: Line 308:
|
|
| dynamic
| dynamic
|
| Host-driven Scripting
| Host-driven Scripting
| Small, embedded, configuration.
| Small, embedded, configuration.
Line 294: Line 320:
|
|
| dynamic
| dynamic
|
| Numeric computation and visualization
| Numeric computation and visualization
|
|
Line 305: Line 332:
| nominative
| nominative
| static
| static
|
| Application, System
| Application, System
| Readability, Rapid application development, Modularity
| Readability, Rapid application development, Modularity
Line 316: Line 344:
|
|
| static
| static
|
| Application
| Application
| Smalltalk like, Component based code reuse, C compatibility
| Smalltalk like, Component based code reuse, C compatibility
Line 327: Line 356:
| structural
| structural
| static
| static
|
| Application
| Application
| Efficiency, Robustness, Correctness
| Efficiency, Robustness, Correctness
Line 338: Line 368:
|
|
| dynamic
| dynamic
|
| Education
| Education
|
|
Line 349: Line 380:
|
|
| static
| static
|
| Education
| Education
| Readability, Discipline, Modularity
| Readability, Discipline, Modularity
Line 359: Line 391:
| implicit
| implicit
|
|
| dynamic
| dynamic
|
| Text processing, Scripting
| Text processing, Scripting
| Terseness, Expressiveness
| Terseness, Expressiveness
Line 371: Line 404:
|
|
| dynamic
| dynamic
|
| Web Application, CLI
| Web Application, CLI
| Robustness and Simplicity
| Robustness and Simplicity
Line 382: Line 416:
|
|
| dynamic
| dynamic
|
| Problem solving, Artificial intelligence
| Problem solving, Artificial intelligence
| [[declarative programming]]
| [[declarative programming]]
Line 393: Line 428:
|
|
| dynamic
| dynamic
|
| Application, Education, Scripting
| Application, Education, Scripting
| Simplicity, Readability, Expressiveness, Modularity
| Simplicity, Readability, Expressiveness, Modularity
Line 404: Line 440:
|
|
| dynamic
| dynamic
|
| Application, Scripting
| Application, Scripting
| Expressiveness, Readability
| Expressiveness, Readability
Line 415: Line 452:
|
|
| static
| static
|
| Education
| Education
|
|
Line 426: Line 464:
|
|
| dynamic (latent)
| dynamic (latent)
|
| General, Education
| General, Education
| Minimalistic, Lexical Scoping
| Minimalistic, Lexical Scoping
Line 437: Line 476:
|
|
| dynamic
| dynamic
|
| Application, Education
| Application, Education
| Uniformity, Pure object oriented
| Uniformity, Pure object oriented
Line 448: Line 488:
|
|
| dynamic
| dynamic
|
| Application, Scripting
| Application, Scripting
|
|
Line 459: Line 500:
| nominative
| nominative
| static
| static
|
| Application
| Application
| Rapid application development, Simplicity
| Rapid application development, Simplicity
Line 470: Line 512:
|
|
| static
| static
|
| Application
| Application
| Rapid application development, Simplicity
| Rapid application development, Simplicity
Line 481: Line 524:
|
|
| dynamic
| dynamic
|
|
|
|
|
Line 491: Line 535:
! Expression of types
! Expression of types
! [[Type compatibility]]
! [[Type compatibility]]
! Type checking
! Type checking
! [[Parameter Passing]] Methods Available
! Intended use
! Intended use
! Design goals
! Design goals

Revision as of 20:47, 24 July 2008

Language Paradigm(s) Standardized Type strength Type safety Expression of types Type compatibility Type checking Parameter Passing Methods Available Intended use Design goals
ActionScript imperative programming, object-oriented, event-driven programming Yes

, ECMA

strong safe static 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

strong safe explicit nominative static 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 No strong safe structural static or dynamic Application Readability, Structure
BASIC procedural programming Yes

, ANSI, ISO

varies by dialect Education Simplicity
C imperative programming Yes

, ANSI C89, ISO C90/C99

weak unsafe explicit nominative static by value, by reference System Low level access, Minimal constraint
C# imperative programming, object-oriented, generic programming, reflective programming Yes

, ECMA, ISO

strong safe (but unsafe allowed) implicit nominative static Application Rapid application development
C++ imperative programming, object-oriented, generic programming Yes

, ISO

strong safe (but unsafe allowed) explicit, partially implicit nominative, structural static, dynamic by value, by reference Application, System Abstraction, Efficiency, Compatibility
Clean functional programming, generic programming No strong implicit static General Correctness, Modularity
COBOL imperative programming, object-oriented Yes strong static 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 General Standardize Lisp
D imperative programming, object-oriented, generic programming No strong safe explicit static Application, System Compilability, Correctness, Efficiency
Eiffel imperative programming, object-oriented, generic programming Yes

, ECMA-367, ISO/IEC 25436:2006

strong safe nominative static Application Correctness, Efficiency, Design by contract
Erlang functional programming, concurrent, distributed programming No strong dynamic Telecom and distributed applications Fault tolerance, Scalability
Forth imperative programming, stack-oriented Yes

, ANSI

none n/a n/a n/a n/a Application, Embedded systems Compact implementations, Low level access, Interactive programming
Fortran imperative programming, procedural programming, object-oriented Yes strong safe nominative static Scientific and numeric applications Runtime efficiency, Simple syntax
Groovy imperative programming, object-oriented, aspect-oriented programming No strong safe implicit dynamic Application JVM compatibility
Haskell functional programming, generic programming, lazy evaluation Yes

, Haskell 98 Report

strong safe inferred, optional explicit annotations polymorphic structural static Application lazy evaluation, Teaching and research, completely formally described Report Preface
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 Application Write once run anywhere
JavaScript imperative programming, object-oriented, functional programming, reflective programming Yes weak dynamic Client side web scripting
Joy functional programming, stack-oriented No strong safe dynamic functional programming research concatenative
Lisp functional programming, reflective; others vary by dialect No strong dynamic General Simple notation for Lambda calculus, Homoiconicity
Logo procedural programming, functional programming No strong safe implicit structural dynamic Education Simple syntax, Turtle graphics, Interactive programming
Lua procedural programming, imperative programming, reflective No strong safe implicit dynamic Host-driven Scripting Small, embedded, configuration.
Mathematica functional programming, procedural programming No strong dynamic Numeric computation and visualization
Object Pascal (Delphi) imperative programming, object-oriented, generic programming No strong safe (but unsafe allowed) explicit nominative static Application, System Readability, Rapid application development, Modularity
Objective-C imperative programming, object-oriented, reflective programming Yes weak explicit static Application Smalltalk like, Component based code reuse, C compatibility
Ocaml object-oriented, functional programming, imperative programming, generic programming No strong safe implicit structural static Application Efficiency, Robustness, Correctness
Oz logic programming, functional programming, imperative programming, object-oriented, concurrent programming - multi paradigm No dynamic Education
Pascal imperative programming, procedural programming Yes
(Extended Pascal standardized under ISO)
strong safe explicit static Education Readability, Discipline, Modularity
Perl imperative programming, procedural programming, reflective programming, functional programming, object-oriented, generic programming No weak implicit dynamic Text processing, Scripting Terseness, Expressiveness
PHP imperative programming, object-oriented, reflective programming No weak dynamic Web Application, CLI Robustness and Simplicity
Prolog logic programming Yes

, ISO

strong dynamic Problem solving, Artificial intelligence declarative programming
Python imperative programming, object-oriented, functional programming, aspect-oriented programming, reflective programming No strong safe implicit dynamic Application, Education, Scripting Simplicity, Readability, Expressiveness, Modularity
Ruby imperative programming, object-oriented, aspect-oriented programming, reflective programming No strong implicit dynamic Application, Scripting Expressiveness, Readability
Scala object-oriented, functional programming, generic programming No strong partially implicit static Education
Scheme functional programming Yes strong dynamic (latent) General, Education Minimalistic, Lexical Scoping
Smalltalk object-oriented, concurrent programming, event-driven programming, imperative programming, declarative programming Yes

, ANSI

strong safe implicit dynamic Application, Education Uniformity, Pure object oriented
Tcl imperative programming, procedural programming, event-driven programming No dynamic Application, Scripting
Visual Basic component-oriented programming, event-driven programming No strong safe nominative static Application Rapid application development, Simplicity
Visual Basic .NET object-oriented, event-driven programming No strong static Application Rapid application development, Simplicity
Windows PowerShell imperative programming, object-oriented, functional programming, pipeline programming, reflective programming No strong safe implicit dynamic
Language Paradigm(s) Standardized Type strength Type safety Expression of types Type compatibility Type checking Parameter Passing Methods Available Intended use Design goals