This article possibly contains original research .(August 2009) |
Programming languages can be grouped by the number and types of paradigms supported.
A concise reference for the programming paradigms listed in this article.
Language | Paradigm count | Concurrent | Constraints | Dataflow | Declarative | Distributed | Functional | Metaprogramming | Generic | Imperative | Logic | Reflection | Object-oriented | Pipelines | Visual | Rule-based | Other |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Ada | 5 | Yes | — | — | — | Yes | — | — | Yes | Yes | — | — | Yes | — | — | — | — |
ALF | 2 | — | — | — | — | — | Yes | — | — | — | Yes | — | — | — | — | — | — |
AmigaE [ citation needed ] | 2 | — | — | — | — | — | — | — | — | Yes | — | — | Yes | — | — | — | — |
APL | 3 | — | — | — | — | — | Yes | — | — | Yes | — | — | — | — | — | — | Array (multi-dimensional) |
BETA [ citation needed ] | 3 | — | — | — | — | — | Yes | — | — | Yes | — | — | Yes | — | — | — | — |
C++ | 7 (15) | Yes | Library | Library | Library | Library | Yes | Yes | Yes | Yes | Library | Library | Yes | Yes | — | Library | Array (multi-dimensional; using STL) |
C# | 6 (7) | Yes | — | Library | — | — | Yes | — | Yes | Yes | — | Yes | Yes | — | — | — | Reactive |
ChucK [ citation needed ] | 3 | Yes | — | — | — | — | — | — | — | Yes | — | — | Yes | — | — | — | — |
Claire | 2 | — | — | — | — | — | Yes | — | — | — | — | — | Yes | — | — | — | — |
Clojure | 5 | Yes | — | — | Yes | — | Yes | Yes | — | — | Library | — | — | Yes | Editor | — | Multiple dispatch, |
Common Lisp | 7 (14) | Library | Library | Library | Yes | Library | Yes | Yes | Yes | Yes | Library | Yes | Yes | Library | Library | Library | Multiple dispatch, meta-OOP system, |
Curl | 5 | — | — | — | — | — | Yes | — | Yes | Yes | — | Yes | Yes | — | — | — | — |
Curry | 4 | Yes | Yes | — | — | — | Yes | — | — | — | Yes | — | — | — | — | — | — |
D (version 2.0) | 7 | Yes | — | — | — | — | Yes | Yes | Yes | Yes | — | Yes | Yes | — | — | — | — |
Delphi | 3 | — | — | — | — | — | — | — | Yes | Yes | — | — | Yes | — | — | — | — |
Dylan [ citation needed ] | 3 | — | — | — | — | — | Yes | — | — | — | — | Yes | Yes | — | — | — | — |
E | 3 | Yes | — | — | — | Yes | — | — | — | — | — | — | Yes | — | — | — | — |
ECMAScript | 4 (5) | Partial | — | — | Library | — | Yes | — | — | Yes | — | Yes | Yes | Library | Editor | — | Reactive, |
Erlang | 3 | Yes | — | — | Yes | Yes | Yes | — | — | — | — | — | — | Yes | — | — | — |
Elixir | 4 | Yes | — | — | — | Yes | Yes | Yes | — | — | — | — | — | Yes | — | — | — |
Elm | 6 | Yes | — | Yes | Yes | — | Yes (pure) | — | Yes | — | — | — | — | Yes | — | — | Reactive |
F# | 7 (8) | Yes | — | Library | Yes | — | Yes | — | Yes | Yes | — | Yes | Yes | — | — | — | Reactive |
Fortran | 4 (5) | Yes | — | — | — | — | Yes | — | Yes | — | — | — | Yes | — | — | — | Array (multi-dimensional) |
Go | 4 | Yes | — | — | — | — | — | — | — | Yes | — | Yes | — | Yes | — | — | — |
Haskell | 8 (15) | Yes | Library | Library | Yes | Library | Yes (lazy) (pure) | Yes | Yes | Yes | Library | — | Partial | Yes | Yes | Library | Literate, reactive, dependent types (partial) |
Io | 4 | Yes | — | — | — | — | Yes | — | — | Yes | — | — | Yes | — | — | — | — |
J [ citation needed ] | 3 | — | — | — | — | — | Yes | — | — | Yes | — | — | Yes | — | — | — | — |
Java | 6 | Yes | Library | Library | — | — | Yes | — | Yes | Yes | — | Yes | Yes | — | — | — | — |
Julia | 9 (17) | Yes | Library | Library | Library | Yes | Yes (eager) | Yes | Yes | Yes | Library | Yes | Yes | Yes | — | Library | Multiple dispatch, Array (multi-dimensional); optionally lazy |
Kotlin | 8 | Yes | — | — | — | — | Yes | Yes | Yes | Yes | — | Yes | Yes | Yes | — | — | — |
LabVIEW | 4 | Yes | — | Yes | — | — | — | — | — | — | — | — | Yes | — | Yes | — | — |
Lava | 2 | — | — | — | — | — | — | — | — | — | — | — | Yes | — | Yes | — | — |
LispWorks (version 6.0 with support for symmetric multi-processing, rules, logic (Prolog), CORBA) | 9 | Yes | — | — | — | Yes | Yes | Yes | — | Yes | Yes | Yes | Yes | — | — | Yes | — |
Lua [ citation needed ] | 3 | — | — | — | — | — | Yes | — | — | Yes | — | — | Yes | — | — | — | — |
MATLAB | 6 (10) | Toolbox | Toolbox | Yes | — | Toolbox | — | Yes | Yes | — | — | Yes | Yes | — | Yes | — | Array (multi-dimensional) |
Nemerle | 7 | Yes | — | — | — | — | Yes | Yes | Yes | Yes | — | Yes | Yes | — | — | — | — |
Object Pascal | 4 | Yes | — | — | — | — | Yes | — | — | Yes | — | — | Yes | — | — | — | — |
OCaml | 4 | — | — | — | — | — | Yes | — | Yes | Yes | — | — | Yes | — | — | — | — |
Oz | 11 | Yes | Yes | Yes | Yes | Yes | Yes | — | — | Yes | Yes | — | Yes | Yes | — | Yes | — |
Perl [ citation needed ] | 8 (9) | Yes | — | Yes | — | — | Yes | Yes | — | Yes | — | Yes | Yes | Yes | — | — | — |
PHP | 4 | — | — | — | — | — | Yes | — | — | Yes | — | Yes | Yes | — | — | — | — |
Poplog | 3 | — | — | — | — | — | Yes | — | — | Yes | Yes | — | — | — | — | — | — |
Prograph | 3 | — | — | Yes | — | — | — | — | — | — | — | — | Yes | — | Yes | — | — |
Python | 5 (10) | Library | Library | — | — | Library | Yes | Yes | Yes | Yes | Library | Yes | Yes | — | Editor | — | Structured |
R | 4 (6) | Library | — | — | — | Library | Yes | — | — | Yes | — | Yes | Yes | Yes | — | — | Array (multi-dimensional) |
Racket | 10 | Yes | Yes | Yes | — | Yes | Yes | Yes | — | Yes | Yes | Yes | Yes | — | — | — | Lazy |
Raku | 10 | Yes | Library | Yes | — | Library | Yes | Yes | Yes | Yes | — | Yes | Yes | Yes | — | — | Multiple dispatch, lazy lists, reactive. |
ROOP | 3 | — | — | — | — | — | — | — | — | Yes | Yes | — | — | — | — | Yes | — |
Ruby | 5 | — | — | — | — | — | Yes | Yes | — | Yes | — | Yes | Yes | — | — | — | — |
Rust (version 1.0.0-alpha) | 6 | Yes | — | — | — | — | Yes | Yes | Yes | Yes | — | — | Yes | — | — | — | Linear, affline, and ownership types |
Sather [ citation needed ] | 2 | — | — | — | — | — | Yes | — | — | — | — | — | Yes | — | — | — | — |
Scala | 9 | Yes | — | Yes | Yes | — | Yes | Yes | Yes | Yes | — | Yes | Yes | — | — | — | — |
Simula [ citation needed ] | 2 | — | — | — | — | — | — | — | — | Yes | — | — | Yes | — | — | — | — |
SISAL | 3 | Yes | — | Yes | — | — | Yes | — | — | — | — | — | — | — | — | — | — |
Spreadsheets | 2 | — | — | — | — | — | Yes | — | — | — | — | — | — | — | Yes | — | — |
Swift | 7 | Yes | — | — | — | — | Yes | Yes | Yes | Yes | — | Yes | Yes | — | — | — | Block-structured |
Tcl with Snit extension [ citation needed ] | 3 | — | — | — | — | — | Yes | — | — | Yes | — | — | Yes | — | — | — | — |
Visual Basic .NET | 6 (7) | Yes | — | Library | — | — | Yes | — | Yes | Yes | — | Yes | Yes | — | — | — | Reactive |
Windows PowerShell | 6 | — | — | — | — | — | Yes | — | Yes | Yes | — | Yes | Yes | Yes | — | — | — |
Wolfram Language & Mathematica | 13 | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | — | Yes | Knowledge Based |
Lisp is a family of programming languages with a long history and a distinctive, fully parenthesized prefix notation. Originally specified in the late 1950s, it is the second-oldest high-level programming language still in common use, after Fortran. Lisp has changed since its early days, and many dialects have existed over its history. Today, the best-known general-purpose Lisp dialects are Common Lisp, Scheme, Racket, and Clojure.
In computing, serialization is the process of translating a data structure or object state into a format that can be stored or transmitted and reconstructed later. When the resulting series of bits is reread according to the serialization format, it can be used to create a semantically identical clone of the original object. For many complex objects, such as those that make extensive use of references, this process is not straightforward. Serialization of objects does not include any of their associated methods with which they were previously linked.
Metaprogramming is a computer programming technique in which computer programs have the ability to treat other programs as their data. It means that a program can be designed to read, generate, analyse, or transform other programs, and even modify itself, while running. In some cases, this allows programmers to minimize the number of lines of code to express a solution, in turn reducing development time. It also allows programs more flexibility to efficiently handle new situations with no recompiling.
The Glasgow Haskell Compiler (GHC) is a native or machine code compiler for the functional programming language Haskell. It provides a cross-platform software environment for writing and testing Haskell code and supports many extensions, libraries, and optimisations that streamline the process of generating and executing code. GHC is the most commonly used Haskell compiler. It is free and open-source software released under a BSD license. The lead developers are Simon Peyton Jones and Simon Marlow.
In computer science, future, promise, delay, and deferred refer to constructs used for synchronizing program execution in some concurrent programming languages. They describe an object that acts as a proxy for a result that is initially unknown, usually because the computation of its value is not yet complete.
Concurrent computing is a form of computing in which several computations are executed concurrently—during overlapping time periods—instead of sequentially—with one completing before the next starts.
Programming languages are used for controlling the behavior of a machine. Like natural languages, programming languages follow rules for syntax and semantics.
The following outline is provided as an overview of and topical guide to computer programming:
The following tables provide a comparison of numerical analysis software.
QuickCheck is a software library, specifically a combinator library, originally written in the programming language Haskell, designed to assist in software testing by generating test cases for test suites – an approach known as property testing.
Clojure is a dynamic and functional dialect of the Lisp programming language on the Java platform.
Tensor software is a class of mathematical software designed for manipulation and calculation with tensors.
Haskell is a general-purpose, statically-typed, purely functional programming language with type inference and lazy evaluation. Designed for teaching, research, and industrial applications, Haskell has pioneered a number of programming language features such as type classes, which enable type-safe operator overloading, and monadic input/output (IO). It is named after logician Haskell Curry. Haskell's main implementation is the Glasgow Haskell Compiler (GHC).
Qore is an interpreted, high-level, general-purpose, garbage collected dynamic programming language, featuring support for code embedding and sandboxing with optional strong typing and a focus on fundamental support for multithreading and SMP scalability.
Julia is a high-level, general-purpose dynamic programming language, most commonly used for numerical analysis and computational science. Distinctive aspects of Julia's design include a type system with parametric polymorphism and the use of multiple dispatch as a core programming paradigm, efficient garbage collection, and a just-in-time (JIT) compiler.
The table shows a comparison of functional programming languages which compares various features and designs of different functional programming languages.
Nim is a general-purpose, multi-paradigm, statically typed, compiled high-level systems programming language, designed and developed by a team around Andreas Rumpf. Nim is designed to be "efficient, expressive, and elegant", supporting metaprogramming, functional, message passing, procedural, and object-oriented programming styles by providing several features such as compile time code generation, algebraic data types, a foreign function interface (FFI) with C, C++, Objective-C, and JavaScript, and supporting compiling to those same languages as intermediate representations.