| 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
|
| ActionScript
| imperative, object-oriented,distributed
| Yes, ECMA
| strong
| safe
|
|
| static
|
| Yes
| Web design
|
|
| Ada
| concurrent, distributed, generic, imperative, 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
| 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)
|
| AutoHotkey
| imperative
| No
| untyped
|
|
|
|
| by value or by reference
| No
| End User Programming
| simplicity, speed, stability
|
| 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
| 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
|
| Clean
| functional, generic
| No
| strong
|
| implicit
|
| static
|
| Yes
| General
| Correctness, Modularity
|
| Clojure
| functional, concurrent
|
| strong
| safe
|
|
| dynamic, static
|
| Yes
|
|
|
| COBOL
| imperative, object-oriented
| Yes
| strong
|
|
|
| static
|
| 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, ECMA-367, ISO/IEC 25436:2006
| strong
| safe
|
| nominative
| static
|
| Yes
| Application
| Correctness, Efficiency, Design by contract
|
| 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 distributed applications
| Fault tolerance, Reliability - Nonstop Running, Hot Code Change, Safety, Concurrency, Distribution, Scalability
|
| Factor
| stack-oriented
|
|
| safe
| implicit
| duck
| dynamic
| by reference
| Yes
|
|
|
| Forth
| imperative, 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, procedural, object-oriented
| Yes, ISO, ISO/IEC 1539-1:2004
| strong
| safe
|
| nominative
| static
|
| No
| Scientific and numeric applications
| Runtime efficiency, Simple syntax
|
| Gambas
| object-oriented
| No
| strong
| safe
| explicit
|
| dynamic
| by value, by reference
|
| Application, Scripting
| Rapid application development, Visual Basic alternative
|
| Go
| concurrent
|
| strong
| safe
| explicit
|
| static
|
| Yes
|
|
|
| Groovy
| imperative, object-oriented, aspect-oriented
| No
| strong
| safe
| implicit
|
| dynamic
|
| Yes
| Application
| JVM compatibility
|
| Haskell
| functional, generic, lazy evaluation
| Yes, 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
| huh?
| structural
| dynamic
| by value, by name, by reference 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
| No
| strong
| safe
| explicit
| nominative
| static
| by value
| Yes
| Application
| Write once run anywhere
|
| JavaScript
| imperative, object-oriented, functional, reflective
| Yes
| weak
|
| implicit
|
| dynamic
|
| Yes
| Client side web scripting
|
|
| Joy
| functional, stack-oriented
| No
| strong
| safe
|
|
| dynamic
|
|
| functional research
| concatenative
|
| Lisp
| functional, reflective; others vary by dialect
| No
| strong
|
|
|
| dynamic
|
| Yes
| General
| Simple notation for Lambda calculus, Homoiconicity
|
| Logo
| 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
|
| Mathematica
| functional, procedural
| No
| strong
|
|
|
| dynamic
|
| Yes
| Numeric computation 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
|
| Nial
| functional, array programming
| No
| strong
|
|
|
| dynamic
|
|
| Data processing
|
|
| Oberon-2
| procedural, imperative, object-oriented
| No
| strong
| safe
| explicit
| structural
| static
| by value, by reference
| Yes
| Teaching, System
| Simplicity
|
| Objeck
| object-oriented
|
| strong
| safe
| explicit
|
| static
| by value
| Yes
|
|
|
| Object Pascal (Delphi)
| imperative, object-oriented, generic
| No
| strong
| safe (unsafe allowed)
| explicit
| nominative
| static
|
| some types
| Application, System
| Readability, Rapid application development, Modularity
|
| Objective-C
| imperative, object-oriented, reflective
| Yes
| weak
|
| explicit
|
| static
|
| Yes(as of 2.0)
| Application
| Smalltalk like, Component based code reuse, C compatibility
|
| Ocaml
| object-oriented, functional, imperative, generic
| No
| 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
|
|
| Pascal
| imperative, procedural
| Yes (Extended Pascal standardized under ISO)
| strong
| safe
| explicit
|
| static
| by value, by reference
| No
| Education
| Readability, Discipline, Modularity
|
| Perl
| imperative, procedural, reflective, functional, object-oriented, generic
| No
| weak
|
| implicit
|
| dynamic, static
| by value, 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
| weak
| safe, unsafe
| optional explicit
| nominative
| dynamic, static
| by value, by reference
| Yes
| Application, text processing, scripting
| Expressiveness, generality
|
| PHP
| imperative, object-oriented, reflective
| No
| weak
|
|
|
| dynamic
|
| Yes
| Web Application, CLI
| Robustness and Simplicity
|
| 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
| strong
| safe
| implicit
|
| dynamic
| Call by object reference
| Yes
| Application, Education, Scripting
| Simplicity, Readability, Expressiveness, 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
|
| Ruby
| imperative, object-oriented, aspect-oriented, reflective
| No
| strong
|
| implicit
|
| dynamic
| by reference
| Yes
| Application, Scripting
| Expressiveness, Readability
|
| Scala
| object-oriented, functional, generic
| No
| strong
| safe
| partially implicit
| nominative, structural
| static
| by value, by name
| Yes
| General, Education
| concise, type-safe, integrate object-oriented and functional paradigms, extensible
|
| Scheme
| functional
| Yes, R5RS, R6RS
| strong
| safe
| implicit
|
| dynamic (latent)
| by value
| Yes
| General, Education
| Minimalistic, Lexical Scoping
|
| 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
|
| dynamic
| by reference
| Yes
| Application, Education
| Uniformity, Pure object oriented
|
| SPARK
| concurrent, imperative, object-oriented
| No, Language definition is proprietary - main copyright is held by [Altran-Praxis].
| 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.
|
| 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
|