![](http://image.absoluteastronomy.com/images//topicimages/noimage.gif)
Comparison of programming languages
Encyclopedia
Programming language
s are used for controlling the behavior of a machine (often a computer
). Like natural language
s, programming languages conform to rules for syntax
and semantics
.
There are thousands of programming languages and new ones are created every year. Few languages ever become sufficiently popular that they are used by more than a few people, but professional programmer
s can easily use dozens of different languages during their career.
s. See the individual languages' articles for further information. Please note that the following table may be missing some information.
and/or throw an
exception
if an input/output
operation or other
system call
(e.g., chmod
, kill
) fails, unless the
programmer has explicitly arranged for different handling of these events.
Thus, these languages fail safely in this regard.
Some (mostly older) languages require that the programmer explicitly add
checks for these kinds of errors. It is common for novice programmers to
forget to add these checks, and even experts occasionally do so—these
omissions can lead to erroneous behavior
.
The literature on programming languages contains an abundance of informal claims about their relative expressive power, but there is no framework for formalizing such statements nor for deriving interesting consequences. This table provides two measures of expressiveness from two different sources. An additional measure of expressiveness, in GZip bytes, can be found on the Computer Language Benchmarks Game.
are designed to mimic a particular type of workload on a component or system. The computer programs used for compiling some of the benchmark data in this section may not have been fully optimized, and the relevance of the data is disputed. The most accurate benchmarks are those that are customized to your particular situation. Other people's benchmark data may have some value to others, but proper interpretation brings many challenges. See this page about flawed benchmarks and comparisons. The Computer Language Benchmarks Game site contains a large number of micro-benchmarks of reader-contributed code snippets, with an interface that generates various charts and tables comparing specific programming languages and types of tests.
Programming language
A programming language is an artificial language designed to communicate instructions to a machine, particularly a computer. Programming languages can be used to create programs that control the behavior of a machine and/or to express algorithms precisely....
s are used for controlling the behavior of a machine (often a computer
Computer
A computer is a programmable machine designed to sequentially and automatically carry out a sequence of arithmetic or logical operations. The particular sequence of operations can be changed readily, allowing the computer to solve more than one kind of problem...
). Like natural language
Natural language
In the philosophy of language, a natural language is any language which arises in an unpremeditated fashion as the result of the innate facility for language possessed by the human intellect. A natural language is typically used for communication, and may be spoken, signed, or written...
s, programming languages conform to rules for syntax
Syntax
In linguistics, syntax is the study of the principles and rules for constructing phrases and sentences in natural languages....
and semantics
Semantics
Semantics is the study of meaning. It focuses on the relation between signifiers, such as words, phrases, signs and symbols, and what they stand for, their denotata....
.
There are thousands of programming languages and new ones are created every year. Few languages ever become sufficiently popular that they are used by more than a few people, but professional programmer
Programmer
A programmer, computer programmer or coder is someone who writes computer software. The term computer programmer can refer to a specialist in one area of computer programming or to a generalist who writes code for many kinds of software. One who practices or professes a formal approach to...
s can easily use dozens of different languages during their career.
General comparison
The following table compares general and technical information for a selection of commonly used programming languageProgramming language
A programming language is an artificial language designed to communicate instructions to a machine, particularly a computer. Programming languages can be used to create programs that control the behavior of a machine and/or to express algorithms precisely....
s. See the individual languages' articles for further information. Please note that the following table may be missing some information.
Language | Intended use | Paradigm Programming paradigm A programming paradigm is a fundamental style of computer programming. Paradigms differ in the concepts and abstractions used to represent the elements of a program and the steps that compose a computation A programming paradigm is a fundamental style of computer programming. (Compare with a... (s) |
Standardized Standardization Standardization is the process of developing and implementing technical standards.The goals of standardization can be to help with independence of single suppliers , compatibility, interoperability, safety, repeatability, or quality.... ? |
---|---|---|---|
ActionScript 3.0 ActionScript ActionScript is an object-oriented language originally developed by Macromedia Inc. . It is a dialect of ECMAScript , and is used primarily for the development of websites and software targeting the Adobe Flash Player platform, used on Web pages in the form of... |
Application, Client-side, Web | event-driven Event-driven programming In computer programming, event-driven programming or event-based programming is a programming paradigm in which the flow of the program is determined by events—i.e., sensor outputs or user actions or messages from other programs or threads.Event-driven programming can also be defined as an... , imperative Imperative programming In computer science, imperative programming is a programming paradigm that describes computation in terms of statements that change a program state... , object-oriented Object-oriented programming Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,... |
, ECMA |
Ada Ada (programming language) Ada is a structured, statically typed, imperative, wide-spectrum, and object-oriented high-level computer programming language, extended from Pascal and other languages... |
Application, Embedded, Realtime, System | concurrent, distributed, generic Generic programming In a broad definition, generic programming is a style of computer programming in which algorithms are written in terms of to-be-specified-later types that are then instantiated when needed for specific types provided as parameters... , imperative Imperative programming In computer science, imperative programming is a programming paradigm that describes computation in terms of statements that change a program state... object-oriented Object-oriented programming Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,... , procedural Procedural programming Procedural programming can sometimes be used as a synonym for imperative programming , but can also refer to a programming paradigm, derived from structured programming, based upon the concept of the procedure call... , |
, ANSI, ISO, GOST GOST GOST refers to a set of technical standards maintained by the Euro-Asian Council for Standardization, Metrology and Certification , a regional standards organization operating under the auspices of the Commonwealth of Independent States .All sorts of regulated standards are included, with examples... 27831-88 |
Aldor Aldor Aldor is a programming language. It is the successor of A# as the extension language of the Axiom computer algebra system.The Aldor language combines imperative, functional, and object-oriented features. It has an elaborate type system, allowing types to be used as first-class values... |
Highly domain-specific, Symbolic Computing | imperative Imperative programming In computer science, imperative programming is a programming paradigm that describes computation in terms of statements that change a program state... , functional Functional programming In computer science, functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids state and mutable data. It emphasizes the application of functions, in contrast to the imperative programming style, which emphasizes changes in state... , object-oriented Object-oriented programming Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,... |
|
ALGOL 58 ALGOL 58 ALGOL 58, originally known as IAL, is one of the family of ALGOL computer programming languages. It was an early compromise design soon superseded by ALGOL 60... |
Application | imperative Imperative programming In computer science, imperative programming is a programming paradigm that describes computation in terms of statements that change a program state... |
|
ALGOL 60 ALGOL 60 ALGOL 60 is a member of the ALGOL family of computer programming languages. It gave rise to many other programming languages, including BCPL, B, Pascal, Simula, C, and many others. ALGOL 58 introduced code blocks and the begin and end pairs for delimiting them... |
Application | imperative Imperative programming In computer science, imperative programming is a programming paradigm that describes computation in terms of statements that change a program state... |
, IFIP WG 2.1, ISO |
ALGOL 68 ALGOL 68 ALGOL 68 isan imperative computerprogramming language that was conceived as a successor to theALGOL 60 programming language, designed with the goal of a... |
Application | concurrent, imperative Imperative programming In computer science, imperative programming is a programming paradigm that describes computation in terms of statements that change a program state... |
, IFIP WG 2.1, GOST 27974-88, |
Ateji PX Ateji PX Ateji PX is an object-oriented programming language extension for Java. It is intended to facilliate parallel computing on multi-core processors, GPU, Grid and Cloud.... |
Parallel Application | object-oriented Object-oriented programming Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,... , pi calculus |
|
APL | Application, Data processing | array-oriented Array programming In computer science, array programming languages generalize operations on scalars to apply transparently to vectors, matrices, and higher dimensional arrays.... , tacit Tacit programming Tacit programming is a programming paradigm in which a function definition does not include information regarding its arguments, using combinators and function composition instead of variables... |
, ISO |
Assembly language Assembly language An assembly language is a low-level programming language for computers, microprocessors, microcontrollers, and other programmable devices. It implements a symbolic representation of the machine codes and other constants needed to program a given CPU architecture... |
General | any, imperative Imperative programming In computer science, imperative programming is a programming paradigm that describes computation in terms of statements that change a program state... |
|
AutoHotkey AutoHotkey AutoHotkey is a free, open source macro-creation and automation software utility which allows users to automate repetitive tasks. Any application user interface can be modified by AutoHotkey... |
GUI automation(macros), Highly domain-specific | imperative Imperative programming In computer science, imperative programming is a programming paradigm that describes computation in terms of statements that change a program state... |
|
AutoIt AutoIt AutoIt is a freeware automation language for Microsoft Windows. In its earliest release, the software was primarily intended to create automation scripts for Microsoft Windows programs but has since grown to include enhancements in both programming language design and overall functionality.With... |
GUI automation(macros), Highly domain-specific | event-driven Event-driven programming In computer programming, event-driven programming or event-based programming is a programming paradigm in which the flow of the program is determined by events—i.e., sensor outputs or user actions or messages from other programs or threads.Event-driven programming can also be defined as an... , imperative Imperative programming In computer science, imperative programming is a programming paradigm that describes computation in terms of statements that change a program state... , procedural Procedural programming Procedural programming can sometimes be used as a synonym for imperative programming , but can also refer to a programming paradigm, derived from structured programming, based upon the concept of the procedure call... |
|
BASIC BASIC BASIC is a family of general-purpose, high-level programming languages whose design philosophy emphasizes ease of use - the name is an acronym from Beginner's All-purpose Symbolic Instruction Code.... |
Application, Education | imperative Imperative programming In computer science, imperative programming is a programming paradigm that describes computation in terms of statements that change a program state... , procedural Procedural programming Procedural programming can sometimes be used as a synonym for imperative programming , but can also refer to a programming paradigm, derived from structured programming, based upon the concept of the procedure call... |
, ANSI, ISO |
BBj BBj BBj is a software development framework which consists of a dynamic programming language by the same name, an integrated development environment, a GUI forms designer, a Rapid Application Development tool called for generating database-driven graphical applications.BBj is Java-integrated and... |
Application, Business, Web | object-oriented Object-oriented programming Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,... , procedural Procedural programming Procedural programming can sometimes be used as a synonym for imperative programming , but can also refer to a programming paradigm, derived from structured programming, based upon the concept of the procedure call... |
|
BeanShell BeanShell BeanShell is a Java scripting language, invented by Patrick Niemeyer. It runs in the Java Runtime Environment and uses Java syntax, in addition to scripting commands and syntax.- Features :... |
Application, Scripting | functional Functional programming In computer science, functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids state and mutable data. It emphasizes the application of functions, in contrast to the imperative programming style, which emphasizes changes in state... , imperative Imperative programming In computer science, imperative programming is a programming paradigm that describes computation in terms of statements that change a program state... , object-oriented Object-oriented programming Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,... , reflective |
, JCP Java Community Process The Java Community Process or JCP, established in 1998, is a formalized process that allows interested parties to get involved in the definition of future versions and features of the Java platform.... |
BLISS | System | procedural Procedural programming Procedural programming can sometimes be used as a synonym for imperative programming , but can also refer to a programming paradigm, derived from structured programming, based upon the concept of the procedure call... |
|
BlitzMax | Application, Game | imperative Imperative programming In computer science, imperative programming is a programming paradigm that describes computation in terms of statements that change a program state... , object-oriented Object-oriented programming Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,... , procedural Procedural programming Procedural programming can sometimes be used as a synonym for imperative programming , but can also refer to a programming paradigm, derived from structured programming, based upon the concept of the procedure call... |
|
Boo | Application | ||
C C (programming language) C is a general-purpose computer programming language developed between 1969 and 1973 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system.... |
System | imperative Imperative programming In computer science, imperative programming is a programming paradigm that describes computation in terms of statements that change a program state... , procedural Procedural programming Procedural programming can sometimes be used as a synonym for imperative programming , but can also refer to a programming paradigm, derived from structured programming, based upon the concept of the procedure call... |
, ANSI C89, ISO C90/C99 ANSI C ANSI C refers to the family of successive standards published by the American National Standards Institute for the C programming language. Software developers writing in C are encouraged to conform to the standards, as doing so aids portability between compilers.-History and outlook:The first... |
C++ C++ C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell... |
Application; System | generic Generic programming In a broad definition, generic programming is a style of computer programming in which algorithms are written in terms of to-be-specified-later types that are then instantiated when needed for specific types provided as parameters... , imperative Imperative programming In computer science, imperative programming is a programming paradigm that describes computation in terms of statements that change a program state... , object-oriented Object-oriented programming Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,... , procedural Procedural programming Procedural programming can sometimes be used as a synonym for imperative programming , but can also refer to a programming paradigm, derived from structured programming, based upon the concept of the procedure call... |
, ISO |
C# | Application, Business, Client-side, General, Server-Side, Web | functional Functional programming In computer science, functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids state and mutable data. It emphasizes the application of functions, in contrast to the imperative programming style, which emphasizes changes in state... , generic Generic programming In a broad definition, generic programming is a style of computer programming in which algorithms are written in terms of to-be-specified-later types that are then instantiated when needed for specific types provided as parameters... , imperative Imperative programming In computer science, imperative programming is a programming paradigm that describes computation in terms of statements that change a program state... , object-oriented Object-oriented programming Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,... , reflective |
, ECMA, ISO |
Clarion | General, Business, Web | functional Functional programming In computer science, functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids state and mutable data. It emphasizes the application of functions, in contrast to the imperative programming style, which emphasizes changes in state... , imperative Imperative programming In computer science, imperative programming is a programming paradigm that describes computation in terms of statements that change a program state... , object-oriented Object-oriented programming Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,... |
|
Clean | General | functional Functional programming In computer science, functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids state and mutable data. It emphasizes the application of functions, in contrast to the imperative programming style, which emphasizes changes in state... , generic Generic programming In a broad definition, generic programming is a style of computer programming in which algorithms are written in terms of to-be-specified-later types that are then instantiated when needed for specific types provided as parameters... |
|
Clojure Clojure Clojure |closure]]") is a recent dialect of the Lisp programming language created by Rich Hickey. It is a general-purpose language supporting interactive development that encourages a functional programming style, and simplifies multithreaded programming.... |
General | concurrent, functional Functional programming In computer science, functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids state and mutable data. It emphasizes the application of functions, in contrast to the imperative programming style, which emphasizes changes in state... |
|
CLU | General | generic Generic programming In a broad definition, generic programming is a style of computer programming in which algorithms are written in terms of to-be-specified-later types that are then instantiated when needed for specific types provided as parameters... , imperative Imperative programming In computer science, imperative programming is a programming paradigm that describes computation in terms of statements that change a program state... , object-oriented Object-oriented programming Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,... , procedural Procedural programming Procedural programming can sometimes be used as a synonym for imperative programming , but can also refer to a programming paradigm, derived from structured programming, based upon the concept of the procedure call... |
|
COBOL COBOL COBOL is one of the oldest programming languages. Its name is an acronym for COmmon Business-Oriented Language, defining its primary domain in business, finance, and administrative systems for companies and governments.... |
Application, Business | imperative Imperative programming In computer science, imperative programming is a programming paradigm that describes computation in terms of statements that change a program state... , object-oriented Object-oriented programming Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,... |
|
Cobra Cobra (programming language from Cobra Language LLC) Cobra is an object-oriented programming language produced by Cobra Language LLC. Cobra is designed by Chuck Esterbrook, and runs on the Microsoft .NET and Mono platforms. It is strongly influenced by Python, C#, Eiffel, Objective-C, and other programming languages. It supports both static and... |
Application, Business, General, Web | functional Functional programming In computer science, functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids state and mutable data. It emphasizes the application of functions, in contrast to the imperative programming style, which emphasizes changes in state... , generic Generic programming In a broad definition, generic programming is a style of computer programming in which algorithms are written in terms of to-be-specified-later types that are then instantiated when needed for specific types provided as parameters... , imperative Imperative programming In computer science, imperative programming is a programming paradigm that describes computation in terms of statements that change a program state... , object-oriented Object-oriented programming Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,... , reflective |
|
ColdFusion (CFML) ColdFusion Markup Language ColdFusion Markup Language, more commonly known as CFML, is a scripting language for web development that runs on the JVM, the .NET framework, and Google App Engine... |
Web Development | object-oriented Object-oriented programming Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,... , procedural Procedural programming Procedural programming can sometimes be used as a synonym for imperative programming , but can also refer to a programming paradigm, derived from structured programming, based upon the concept of the procedure call... |
|
Common Lisp Common Lisp Common Lisp, commonly abbreviated CL, is a dialect of the Lisp programming language, published in ANSI standard document ANSI INCITS 226-1994 , . From the ANSI Common Lisp standard the Common Lisp HyperSpec has been derived for use with web browsers... |
General | functional Functional programming In computer science, functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids state and mutable data. It emphasizes the application of functions, in contrast to the imperative programming style, which emphasizes changes in state... , generic Generic programming In a broad definition, generic programming is a style of computer programming in which algorithms are written in terms of to-be-specified-later types that are then instantiated when needed for specific types provided as parameters... , imperative Imperative programming In computer science, imperative programming is a programming paradigm that describes computation in terms of statements that change a program state... , object-oriented Object-oriented programming Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,... , reflective |
, ANSI |
Comal 80 COMAL COMAL is a computer programming language developed in Denmark by Benedict Løfstedt and Børge R. Christensen in 1973.The "COMAL 80 PROGRAMMING LANGUAGE REPORT" contains the formal definition of the language.- Design :... |
Education | imperative Imperative programming In computer science, imperative programming is a programming paradigm that describes computation in terms of statements that change a program state... , procedural Procedural programming Procedural programming can sometimes be used as a synonym for imperative programming , but can also refer to a programming paradigm, derived from structured programming, based upon the concept of the procedure call... |
|
Crystal 1.0.0 | Education | functional Functional programming In computer science, functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids state and mutable data. It emphasizes the application of functions, in contrast to the imperative programming style, which emphasizes changes in state... , imperative Imperative programming In computer science, imperative programming is a programming paradigm that describes computation in terms of statements that change a program state... , procedural Procedural programming Procedural programming can sometimes be used as a synonym for imperative programming , but can also refer to a programming paradigm, derived from structured programming, based upon the concept of the procedure call... |
|
Cython Cython Cython is a programming language to simplify writing C and C++ extension modules for the CPython Python runtime. Strictly speaking, Cython syntax is a superset of Python syntax additionally supporting:... |
Application, General, Numerical Computing | aspect-oriented Aspect-oriented programming In computing, aspect-oriented programming is a programming paradigm which aims to increase modularity by allowing the separation of cross-cutting concerns... , functional Functional programming In computer science, functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids state and mutable data. It emphasizes the application of functions, in contrast to the imperative programming style, which emphasizes changes in state... , imperative Imperative programming In computer science, imperative programming is a programming paradigm that describes computation in terms of statements that change a program state... , object-oriented Object-oriented programming Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,... , reflective |
|
D D (programming language) The D programming language is an object-oriented, imperative, multi-paradigm, system programming language created by Walter Bright of Digital Mars. It originated as a re-engineering of C++, but even though it is mainly influenced by that language, it is not a variant of C++... |
Application; System | generic Generic programming In a broad definition, generic programming is a style of computer programming in which algorithms are written in terms of to-be-specified-later types that are then instantiated when needed for specific types provided as parameters... , imperative Imperative programming In computer science, imperative programming is a programming paradigm that describes computation in terms of statements that change a program state... , object-oriented Object-oriented programming Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,... |
|
Dylan | Application | functional Functional programming In computer science, functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids state and mutable data. It emphasizes the application of functions, in contrast to the imperative programming style, which emphasizes changes in state... , object-oriented Object-oriented programming Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,... |
|
Eiffel Eiffel (programming language) Eiffel is an ISO-standardized, object-oriented programming language designed by Bertrand Meyer and Eiffel Software. The design of the language is closely connected with the Eiffel programming method... |
Application | generic Generic programming In a broad definition, generic programming is a style of computer programming in which algorithms are written in terms of to-be-specified-later types that are then instantiated when needed for specific types provided as parameters... , imperative Imperative programming In computer science, imperative programming is a programming paradigm that describes computation in terms of statements that change a program state... , object-oriented Object-oriented programming Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,... |
, ECMA, ISO |
Erlang | Application, Distributed, Telecom | concurrent, distributed, functional Functional programming In computer science, functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids state and mutable data. It emphasizes the application of functions, in contrast to the imperative programming style, which emphasizes changes in state... |
|
Euphoria | Application | procedural Procedural programming Procedural programming can sometimes be used as a synonym for imperative programming , but can also refer to a programming paradigm, derived from structured programming, based upon the concept of the procedure call... |
|
Factor Factor (programming language) Factor is a stack-oriented programming language created by Slava Pestov. Factor is dynamically typed and has automatic memory management, as well as powerful metaprogramming features. The language has a single implementation featuring a self-hosted optimizing compiler and an interactive development... |
stack-oriented Stack-oriented programming language A stack-oriented programming language is one that relies on a stack machine model for passing parameters. Several programming languages fit this description, notably Forth, RPL, PostScript, and also many Assembly languages .... |
||
FP FP (programming language) FP is a programming language created by John Backus to support the function-level programming paradigm... |
functional Functional programming In computer science, functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids state and mutable data. It emphasizes the application of functions, in contrast to the imperative programming style, which emphasizes changes in state... |
||
F# | Application | functional Functional programming In computer science, functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids state and mutable data. It emphasizes the application of functions, in contrast to the imperative programming style, which emphasizes changes in state... , generic Generic programming In a broad definition, generic programming is a style of computer programming in which algorithms are written in terms of to-be-specified-later types that are then instantiated when needed for specific types provided as parameters... , imperative Imperative programming In computer science, imperative programming is a programming paradigm that describes computation in terms of statements that change a program state... , object-oriented Object-oriented programming Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,... |
|
Forth | General | imperative Imperative programming In computer science, imperative programming is a programming paradigm that describes computation in terms of statements that change a program state... , stack-oriented Stack-oriented programming language A stack-oriented programming language is one that relies on a stack machine model for passing parameters. Several programming languages fit this description, notably Forth, RPL, PostScript, and also many Assembly languages .... |
, ANSI |
Fortran Fortran Fortran is a general-purpose, procedural, imperative programming language that is especially suited to numeric computation and scientific computing... |
Application, Numerical Computing | generic Generic programming In a broad definition, generic programming is a style of computer programming in which algorithms are written in terms of to-be-specified-later types that are then instantiated when needed for specific types provided as parameters... , imperative Imperative programming In computer science, imperative programming is a programming paradigm that describes computation in terms of statements that change a program state... , object-oriented Object-oriented programming Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,... , procedural Procedural programming Procedural programming can sometimes be used as a synonym for imperative programming , but can also refer to a programming paradigm, derived from structured programming, based upon the concept of the procedure call... |
, ANSI 66, ANSI 77, MIL-STD-1753, ISO 90, ISO 95, ISO 2003 |
G2 | Application, Inference, Expert System | common graphical development and runtime environment, event-driven Event-driven programming In computer programming, event-driven programming or event-based programming is a programming paradigm in which the flow of the program is determined by events—i.e., sensor outputs or user actions or messages from other programs or threads.Event-driven programming can also be defined as an... , imperative, object-oriented Object-oriented programming Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,... |
|
Gambas Gambas Gambas is the name of an object-oriented dialect of the BASIC programming language as well as the integrated development environment that accompanies it. Designed to run on Linux and other Unix-like computer operating systems, its name is a recursive acronym for Gambas Almost Means Basic... |
Application | event-driven Event-driven programming In computer programming, event-driven programming or event-based programming is a programming paradigm in which the flow of the program is determined by events—i.e., sensor outputs or user actions or messages from other programs or threads.Event-driven programming can also be defined as an... , imperative Imperative programming In computer science, imperative programming is a programming paradigm that describes computation in terms of statements that change a program state... , object-oriented Object-oriented programming Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,... |
|
Game Maker Language Game Maker Language Game Maker Language is a scripting language developed for use with a computer game creation application called Game Maker. It was originally created by Mark Overmars to supplement the drag-and-drop action system used in Game Maker... |
Application, Games | event-driven Event-driven programming In computer programming, event-driven programming or event-based programming is a programming paradigm in which the flow of the program is determined by events—i.e., sensor outputs or user actions or messages from other programs or threads.Event-driven programming can also be defined as an... , imperative Imperative programming In computer science, imperative programming is a programming paradigm that describes computation in terms of statements that change a program state... , object-oriented Object-oriented programming Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,... |
|
Go Go (programming language) Go is a compiled, garbage-collected, concurrent programming language developed by Google Inc.The initial design of Go was started in September 2007 by Robert Griesemer, Rob Pike, and Ken Thompson. Go was officially announced in November 2009. In May 2010, Rob Pike publicly stated that Go was being... |
Application; System | concurrent, imperative Imperative programming In computer science, imperative programming is a programming paradigm that describes computation in terms of statements that change a program state... |
|
Gosu Gosu (programming language) Gosu is a general-purpose Java Virtual Machine-based programming language released under the Apache License 2.0. This general-purpose programming language is used in some open-source software projects, including the web application framework and the build-tool , as well as in Guidewire Software... |
Application, General, Scripting, System, Web | generic Generic programming In a broad definition, generic programming is a style of computer programming in which algorithms are written in terms of to-be-specified-later types that are then instantiated when needed for specific types provided as parameters... , imperative Imperative programming In computer science, imperative programming is a programming paradigm that describes computation in terms of statements that change a program state... , object-oriented Object-oriented programming Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,... , reflective |
|
GraphTalk | Application | logic-oriented Logic programming Logic programming is, in its broadest sense, the use of mathematical logic for computer programming. In this view of logic programming, which can be traced at least as far back as John McCarthy's [1958] advice-taker proposal, logic is used as a purely declarative representation language, and a... , object-oriented Object-oriented programming Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,... |
|
Groovy | Application, Web | aspect-oriented Aspect-oriented programming In computing, aspect-oriented programming is a programming paradigm which aims to increase modularity by allowing the separation of cross-cutting concerns... , imperative Imperative programming In computer science, imperative programming is a programming paradigm that describes computation in terms of statements that change a program state... , object-oriented Object-oriented programming Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,... |
, JCP Java Community Process The Java Community Process or JCP, established in 1998, is a formalized process that allows interested parties to get involved in the definition of future versions and features of the Java platform.... |
Harbour | Application, Business, Data processing, General, Web | declarative Declarative programming In computer science, declarative programming is a programming paradigm that expresses the logic of a computation without describing its control flow. Many languages applying this style attempt to minimize or eliminate side effects by describing what the program should accomplish, rather than... , functional Functional programming In computer science, functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids state and mutable data. It emphasizes the application of functions, in contrast to the imperative programming style, which emphasizes changes in state... , generic Generic programming In a broad definition, generic programming is a style of computer programming in which algorithms are written in terms of to-be-specified-later types that are then instantiated when needed for specific types provided as parameters... , imperative Imperative programming In computer science, imperative programming is a programming paradigm that describes computation in terms of statements that change a program state... , object-oriented Object-oriented programming Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,... , procedural Procedural programming Procedural programming can sometimes be used as a synonym for imperative programming , but can also refer to a programming paradigm, derived from structured programming, based upon the concept of the procedure call... , reflective |
|
Haskell Haskell (programming language) Haskell is a standardized, general-purpose purely functional programming language, with non-strict semantics and strong static typing. It is named after logician Haskell Curry. In Haskell, "a function is a first-class citizen" of the programming language. As a functional programming language, the... |
Application | functional Functional programming In computer science, functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids state and mutable data. It emphasizes the application of functions, in contrast to the imperative programming style, which emphasizes changes in state... , generic Generic programming In a broad definition, generic programming is a style of computer programming in which algorithms are written in terms of to-be-specified-later types that are then instantiated when needed for specific types provided as parameters... , lazy evaluation Lazy evaluation In programming language theory, lazy evaluation or call-by-need is an evaluation strategy which delays the evaluation of an expression until the value of this is actually required and which also avoids repeated evaluations... |
, Haskell 98 |
HyperNext HyperNext HyperNext is a freeware visual software development system aimed at beginner programmers that runs on Macintosh and Windows computers. It was inspired by HyperCard and includes a GUI having controls such as buttons and listboxes, and an interpreted English-like programming language. HyperNext also... |
Application, Education | event-driven Event-driven programming In computer programming, event-driven programming or event-based programming is a programming paradigm in which the flow of the program is determined by events—i.e., sensor outputs or user actions or messages from other programs or threads.Event-driven programming can also be defined as an... , procedural Procedural programming Procedural programming can sometimes be used as a synonym for imperative programming , but can also refer to a programming paradigm, derived from structured programming, based upon the concept of the procedure call... , weakly typed Weak typing In computer science, weak typing is a property attributed to the type systems of some programming languages. It is the opposite of strong typing, and consequently the term weak typing has as many different meanings as strong typing does.One of the more common definitions states that weakly typed... |
|
IBM RPG | Application, System | imperative Imperative programming In computer science, imperative programming is a programming paradigm that describes computation in terms of statements that change a program state... , procedural Procedural programming Procedural programming can sometimes be used as a synonym for imperative programming , but can also refer to a programming paradigm, derived from structured programming, based upon the concept of the procedure call... |
|
Io Io (programming language) Io is a pure object-oriented programming language inspired by Smalltalk, Self, Lua, Lisp, Act1, and NewtonScript. Io has a prototype-based object model similar to the ones in Self and NewtonScript, eliminating the distinction between instance and class. Like Smalltalk, everything is an object and... |
Application, Host-driven Scripting | imperative Imperative programming In computer science, imperative programming is a programming paradigm that describes computation in terms of statements that change a program state... , object-oriented Object-oriented programming Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,... |
|
J J (programming language) The J programming language, developed in the early 1990s by Kenneth E. Iverson and Roger Hui, is a synthesis of APL and the FP and FL function-level languages created by John Backus.... |
Data processing | array-oriented Array programming In computer science, array programming languages generalize operations on scalars to apply transparently to vectors, matrices, and higher dimensional arrays.... , function-level Function-level programming In computer science, function-level programming refers to one of the two contrasting programming paradigms identified by John Backus in his work on programs as mathematical objects, the other being value-level programming.... , tacit Tacit programming Tacit programming is a programming paradigm in which a function definition does not include information regarding its arguments, using combinators and function composition instead of variables... |
|
JADE | Application, Distributed | imperative Imperative programming In computer science, imperative programming is a programming paradigm that describes computation in terms of statements that change a program state... , object-oriented Object-oriented programming Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,... |
|
Java Java (programming language) Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java platform. The language derives much of its syntax from C and C++ but has a simpler object model and fewer low-level facilities... |
Application, Business, Client-side, General, Server-Side, Web | generic Generic programming In a broad definition, generic programming is a style of computer programming in which algorithms are written in terms of to-be-specified-later types that are then instantiated when needed for specific types provided as parameters... , imperative Imperative programming In computer science, imperative programming is a programming paradigm that describes computation in terms of statements that change a program state... , object-oriented Object-oriented programming Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,... , reflective |
, De-facto standard through the Java Language Specification |
JavaScript JavaScript JavaScript is a prototype-based scripting language that is dynamic, weakly typed and has first-class functions. It is a multi-paradigm language, supporting object-oriented, imperative, and functional programming styles.... |
Client-side, Web | functional Functional programming In computer science, functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids state and mutable data. It emphasizes the application of functions, in contrast to the imperative programming style, which emphasizes changes in state... , imperative Imperative programming In computer science, imperative programming is a programming paradigm that describes computation in terms of statements that change a program state... , prototype-based, reflective |
, ECMA |
Joy | Research | functional Functional programming In computer science, functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids state and mutable data. It emphasizes the application of functions, in contrast to the imperative programming style, which emphasizes changes in state... , stack-oriented Stack-oriented programming language A stack-oriented programming language is one that relies on a stack machine model for passing parameters. Several programming languages fit this description, notably Forth, RPL, PostScript, and also many Assembly languages .... |
|
LabVIEW ("G") LabVIEW LabVIEW is a system design platform and development environment for a visual programming language from National Instruments. LabVIEW provides engineers and scientists with the tools needed to create and deploy measurement and control systems.The graphical language is named "G"... |
Application, Industrial instrumentation and automation | dataflow, visual Visual programming language In computing, a visual programming language is any programming language that lets users create programs by manipulating program elements graphically rather than by specifying them textually. A VPL allows programming with visual expressions, spatial arrangements of text and graphic symbols, used... |
|
Lisp | General | functional Functional programming In computer science, functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids state and mutable data. It emphasizes the application of functions, in contrast to the imperative programming style, which emphasizes changes in state... |
|
Logtalk Logtalk Logtalk is an object-oriented logic programming language that extends the Prolog language with a feature set suitable for programming in the large. It provides support for encapsulation and data hiding, separation of concerns and enhanced code reuse... |
Artificial intelligence, Application | event-driven Event-driven programming In computer programming, event-driven programming or event-based programming is a programming paradigm in which the flow of the program is determined by events—i.e., sensor outputs or user actions or messages from other programs or threads.Event-driven programming can also be defined as an... , logic Logic programming Logic programming is, in its broadest sense, the use of mathematical logic for computer programming. In this view of logic programming, which can be traced at least as far back as John McCarthy's [1958] advice-taker proposal, logic is used as a purely declarative representation language, and a... , object-oriented Object-oriented programming Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,... , reflective |
|
Lua | Application, Embedded scripting | aspect-oriented Aspect-oriented programming In computing, aspect-oriented programming is a programming paradigm which aims to increase modularity by allowing the separation of cross-cutting concerns... , functional Functional programming In computer science, functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids state and mutable data. It emphasizes the application of functions, in contrast to the imperative programming style, which emphasizes changes in state... , imperative Imperative programming In computer science, imperative programming is a programming paradigm that describes computation in terms of statements that change a program state... , object-oriented Object-oriented programming Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,... , procedural Procedural programming Procedural programming can sometimes be used as a synonym for imperative programming , but can also refer to a programming paradigm, derived from structured programming, based upon the concept of the procedure call... , reflective |
|
Mathematica Mathematica Mathematica is a computational software program used in scientific, engineering, and mathematical fields and other areas of technical computing... |
Highly domain-specific, Symbolic Computing | functional Functional programming In computer science, functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids state and mutable data. It emphasizes the application of functions, in contrast to the imperative programming style, which emphasizes changes in state... , procedural Procedural programming Procedural programming can sometimes be used as a synonym for imperative programming , but can also refer to a programming paradigm, derived from structured programming, based upon the concept of the procedure call... |
|
MATLAB MATLAB MATLAB is a numerical computing environment and fourth-generation programming language. Developed by MathWorks, MATLAB allows matrix manipulations, plotting of functions and data, implementation of algorithms, creation of user interfaces, and interfacing with programs written in other languages,... |
Highly domain-specific, Numerical Computing | imperative Imperative programming In computer science, imperative programming is a programming paradigm that describes computation in terms of statements that change a program state... , object-oriented Object-oriented programming Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,... , procedural Procedural programming Procedural programming can sometimes be used as a synonym for imperative programming , but can also refer to a programming paradigm, derived from structured programming, based upon the concept of the procedure call... |
|
Modula-2 Modula-2 Modula-2 is a computer programming language designed and developed between 1977 and 1980 by Niklaus Wirth at ETH Zurich as a revision of Pascal to serve as the sole programming language for the operating system and application software for the personal workstation Lilith... |
Application; System | generic Generic programming In a broad definition, generic programming is a style of computer programming in which algorithms are written in terms of to-be-specified-later types that are then instantiated when needed for specific types provided as parameters... , imperative Imperative programming In computer science, imperative programming is a programming paradigm that describes computation in terms of statements that change a program state... |
, ISO |
Modula-3 Modula-3 In computer science, Modula-3 is a programming language conceived as a successor to an upgraded version of Modula-2 known as Modula-2+. While it has been influential in research circles it has not been adopted widely in industry... |
Application | generic Generic programming In a broad definition, generic programming is a style of computer programming in which algorithms are written in terms of to-be-specified-later types that are then instantiated when needed for specific types provided as parameters... , imperative Imperative programming In computer science, imperative programming is a programming paradigm that describes computation in terms of statements that change a program state... , object-oriented Object-oriented programming Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,... |
|
Oberon Oberon (programming language) Oberon is a programming language created in 1986 by Professor Niklaus Wirth and his associates at ETH Zurich in Switzerland. It was developed as part of the implementation of the Oberon operating system... |
Application; System | imperative Imperative programming In computer science, imperative programming is a programming paradigm that describes computation in terms of statements that change a program state... , object-oriented Object-oriented programming Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,... |
|
Objective-C Objective-C Objective-C is a reflective, object-oriented programming language that adds Smalltalk-style messaging to the C programming language.Today, it is used primarily on Apple's Mac OS X and iOS: two environments derived from the OpenStep standard, though not compliant with it... |
Application | imperative Imperative programming In computer science, imperative programming is a programming paradigm that describes computation in terms of statements that change a program state... , object-oriented Object-oriented programming Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,... , reflective |
|
OCaml | Application | functional Functional programming In computer science, functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids state and mutable data. It emphasizes the application of functions, in contrast to the imperative programming style, which emphasizes changes in state... , generic Generic programming In a broad definition, generic programming is a style of computer programming in which algorithms are written in terms of to-be-specified-later types that are then instantiated when needed for specific types provided as parameters... , imperative Imperative programming In computer science, imperative programming is a programming paradigm that describes computation in terms of statements that change a program state... , object-oriented Object-oriented programming Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,... |
|
Object Pascal Object Pascal Object Pascal refers to a branch of object-oriented derivatives of Pascal, mostly known as the primary programming language of Embarcadero Delphi.-Early history at Apple:... (Delphi Borland Delphi Embarcadero Delphi is an integrated development environment for console, desktop graphical, web, and mobile applications.Delphi's compilers use its own Object Pascal dialect of Pascal and generate native code for 32- and 64-bit Windows operating systems, as well as 32-bit Mac OS X and iOS... ) |
Application, Business, Client-side, General, Server-Side, Web | aspect-oriented Aspect-oriented programming In computing, aspect-oriented programming is a programming paradigm which aims to increase modularity by allowing the separation of cross-cutting concerns... , event-driven Event-driven programming In computer programming, event-driven programming or event-based programming is a programming paradigm in which the flow of the program is determined by events—i.e., sensor outputs or user actions or messages from other programs or threads.Event-driven programming can also be defined as an... , functional Functional programming In computer science, functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids state and mutable data. It emphasizes the application of functions, in contrast to the imperative programming style, which emphasizes changes in state... , generic Generic programming In a broad definition, generic programming is a style of computer programming in which algorithms are written in terms of to-be-specified-later types that are then instantiated when needed for specific types provided as parameters... , imperative Imperative programming In computer science, imperative programming is a programming paradigm that describes computation in terms of statements that change a program state... , object-oriented Object-oriented programming Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,... , procedural Procedural programming Procedural programming can sometimes be used as a synonym for imperative programming , but can also refer to a programming paradigm, derived from structured programming, based upon the concept of the procedure call... , reflective |
|
Occam Occam (programming language) occam is a concurrent programming language that builds on the Communicating Sequential Processes process algebra, and shares many of its features. It is named after William of Ockham of Occam's Razor fame.... |
General | concurrent, imperative Imperative programming In computer science, imperative programming is a programming paradigm that describes computation in terms of statements that change a program state... , procedural Procedural programming Procedural programming can sometimes be used as a synonym for imperative programming , but can also refer to a programming paradigm, derived from structured programming, based upon the concept of the procedure call... , process-oriented Process-oriented programming Process-oriented programming is a programming paradigm that separates the concerns of data structures and the concurrent processes that act upon them. The data structures in this case are typically persistent, complex, and large scale - the subject of general purpose applications, as opposed to... |
|
Oxygene | Application | generic Generic programming In a broad definition, generic programming is a style of computer programming in which algorithms are written in terms of to-be-specified-later types that are then instantiated when needed for specific types provided as parameters... , imperative Imperative programming In computer science, imperative programming is a programming paradigm that describes computation in terms of statements that change a program state... , object-oriented Object-oriented programming Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,... |
|
Oz Oz (programming language) Oz is a multiparadigm programming language, developed in the Programming Systems Lab at Université catholique de Louvain, for programming language education. It has a canonical textbook: Concepts, Techniques, and Models of Computer Programming.... |
Application, Distribution, Education | concurrent, functional Functional programming In computer science, functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids state and mutable data. It emphasizes the application of functions, in contrast to the imperative programming style, which emphasizes changes in state... , imperative Imperative programming In computer science, imperative programming is a programming paradigm that describes computation in terms of statements that change a program state... , logic Logic programming Logic programming is, in its broadest sense, the use of mathematical logic for computer programming. In this view of logic programming, which can be traced at least as far back as John McCarthy's [1958] advice-taker proposal, logic is used as a purely declarative representation language, and a... , object-oriented Object-oriented programming Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,... |
|
Pascal Pascal (programming language) Pascal is an influential imperative and procedural programming language, designed in 1968/9 and published in 1970 by Niklaus Wirth as a small and efficient language intended to encourage good programming practices using structured programming and data structuring.A derivative known as Object Pascal... |
Application, Education | imperative Imperative programming In computer science, imperative programming is a programming paradigm that describes computation in terms of statements that change a program state... , procedural Procedural programming Procedural programming can sometimes be used as a synonym for imperative programming , but can also refer to a programming paradigm, derived from structured programming, based upon the concept of the procedure call... |
, ISO |
Pawn | Embedded, Host-driven Scripting | imperative Imperative programming In computer science, imperative programming is a programming paradigm that describes computation in terms of statements that change a program state... |
|
Perl Perl Perl is a high-level, general-purpose, interpreted, dynamic programming language. Perl was originally developed by Larry Wall in 1987 as a general-purpose Unix scripting language to make report processing easier. Since then, it has undergone many changes and revisions and become widely popular... |
Application, Scripting, Text processing, Web | functional Functional programming In computer science, functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids state and mutable data. It emphasizes the application of functions, in contrast to the imperative programming style, which emphasizes changes in state... , generic Generic programming In a broad definition, generic programming is a style of computer programming in which algorithms are written in terms of to-be-specified-later types that are then instantiated when needed for specific types provided as parameters... , imperative Imperative programming In computer science, imperative programming is a programming paradigm that describes computation in terms of statements that change a program state... , object-oriented Object-oriented programming Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,... , procedural Procedural programming Procedural programming can sometimes be used as a synonym for imperative programming , but can also refer to a programming paradigm, derived from structured programming, based upon the concept of the procedure call... , reflective |
|
PHP PHP PHP is a general-purpose server-side scripting language originally designed for web development to produce dynamic web pages. For this purpose, PHP code is embedded into the HTML source document and interpreted by a web server with a PHP processor module, which generates the web page document... |
Server-side, Web | imperative Imperative programming In computer science, imperative programming is a programming paradigm that describes computation in terms of statements that change a program state... , object-oriented Object-oriented programming Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,... , procedural Procedural programming Procedural programming can sometimes be used as a synonym for imperative programming , but can also refer to a programming paradigm, derived from structured programming, based upon the concept of the procedure call... , reflective |
|
PL/I PL/I PL/I is a procedural, imperative computer programming language designed for scientific, engineering, business and systems programming applications... |
Application | imperative Imperative programming In computer science, imperative programming is a programming paradigm that describes computation in terms of statements that change a program state... , object-oriented Object-oriented programming Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,... , procedural Procedural programming Procedural programming can sometimes be used as a synonym for imperative programming , but can also refer to a programming paradigm, derived from structured programming, based upon the concept of the procedure call... |
|
Plus Plus (programming language) Plus is a "Pascal-like" system implementation language from the University of British Columbia , Canada, based on the SUE system language developed at the University of Toronto, circa 1971.- Description :... |
Application, System development | imperative Imperative programming In computer science, imperative programming is a programming paradigm that describes computation in terms of statements that change a program state... , procedural Procedural programming Procedural programming can sometimes be used as a synonym for imperative programming , but can also refer to a programming paradigm, derived from structured programming, based upon the concept of the procedure call... |
|
Prolog Prolog Prolog is a general purpose logic programming language associated with artificial intelligence and computational linguistics.Prolog has its roots in first-order logic, a formal logic, and unlike many other programming languages, Prolog is declarative: the program logic is expressed in terms of... |
Application, Artificial intelligence | logic Logic programming Logic programming is, in its broadest sense, the use of mathematical logic for computer programming. In this view of logic programming, which can be traced at least as far back as John McCarthy's [1958] advice-taker proposal, logic is used as a purely declarative representation language, and a... |
, ISO |
PureBasic PureBasic PureBasic is a commercially distributed procedural computer programming language and integrated development environment based on BASIC and developed by Fantaisie Software for Windows 32/64-bit, Linux 32/64-bit, and Mac OS X. An Amiga version is available, although it has been discontinued and... |
Application | procedural Procedural programming Procedural programming can sometimes be used as a synonym for imperative programming , but can also refer to a programming paradigm, derived from structured programming, based upon the concept of the procedure call... |
|
Python Python (programming language) Python is a general-purpose, high-level programming language whose design philosophy emphasizes code readability. Python claims to "[combine] remarkable power with very clear syntax", and its standard library is large and comprehensive... |
Application, General, Web, Scripting | aspect-oriented Aspect-oriented programming In computing, aspect-oriented programming is a programming paradigm which aims to increase modularity by allowing the separation of cross-cutting concerns... , functional Functional programming In computer science, functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids state and mutable data. It emphasizes the application of functions, in contrast to the imperative programming style, which emphasizes changes in state... , imperative Imperative programming In computer science, imperative programming is a programming paradigm that describes computation in terms of statements that change a program state... , object-oriented Object-oriented programming Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,... , reflective |
, De-facto standard via Python Enhancement Proposals (PEP)s. |
REALbasic REALbasic Realbasic is the object-oriented dialect of the BASIC programming language used in Real Studio, a programming environment, developed and commercially marketed by Real Software, Inc of Austin, Texas for Mac OS X, Microsoft Windows, 32-bit x86 Linux and the web.- Language features :RB is a strongly... |
Application | ||
REBOL REBOL REBOL is a cross-platform data exchange language and a multi-paradigm dynamic programming language originally designed by Carl Sassenrath for network communications and distributed computing. The language and its official implementation, which is a proprietary freely redistributable software are... |
Distributed | dialected Dialecting Dialects are domain specific sub-languages of a programming language or a data exchange language. A language supporting this paradigm encourages users to create new dialects for specific problematic domains.- Languages :* FORTH* LISP* REBOL* Ruby* XL- See also :* Domain-specific... , functional Functional programming In computer science, functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids state and mutable data. It emphasizes the application of functions, in contrast to the imperative programming style, which emphasizes changes in state... , imperative Imperative programming In computer science, imperative programming is a programming paradigm that describes computation in terms of statements that change a program state... , object-oriented Object-oriented programming Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,... |
|
Ruby Ruby (programming language) Ruby is a dynamic, reflective, general-purpose object-oriented programming language that combines syntax inspired by Perl with Smalltalk-like features. Ruby originated in Japan during the mid-1990s and was first developed and designed by Yukihiro "Matz" Matsumoto... |
Application, Scripting, Web | aspect-oriented Aspect-oriented programming In computing, aspect-oriented programming is a programming paradigm which aims to increase modularity by allowing the separation of cross-cutting concerns... , functional Functional programming In computer science, functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids state and mutable data. It emphasizes the application of functions, in contrast to the imperative programming style, which emphasizes changes in state... , imperative Imperative programming In computer science, imperative programming is a programming paradigm that describes computation in terms of statements that change a program state... , object-oriented Object-oriented programming Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,... , reflective |
|
Rust Rust (programming language) Rust is an experimental, concurrent, multi-paradigm, compiled programming language developed by Mozilla Labs. It is designed to be practical, supporting pure-functional, concurrent-actor, imperative-procedural, and object-oriented styles.... |
Application, System | concurrent, functional Functional programming In computer science, functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids state and mutable data. It emphasizes the application of functions, in contrast to the imperative programming style, which emphasizes changes in state... , generic Generic programming In a broad definition, generic programming is a style of computer programming in which algorithms are written in terms of to-be-specified-later types that are then instantiated when needed for specific types provided as parameters... , imperative Imperative programming In computer science, imperative programming is a programming paradigm that describes computation in terms of statements that change a program state... , object-oriented Object-oriented programming Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,... , reflective |
|
S | Application, Statistics | functional Functional programming In computer science, functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids state and mutable data. It emphasizes the application of functions, in contrast to the imperative programming style, which emphasizes changes in state... , imperative Imperative programming In computer science, imperative programming is a programming paradigm that describes computation in terms of statements that change a program state... , object-oriented Object-oriented programming Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,... , procedural Procedural programming Procedural programming can sometimes be used as a synonym for imperative programming , but can also refer to a programming paradigm, derived from structured programming, based upon the concept of the procedure call... |
|
S-Lang | Application, Numerical, Scripting | imperative Imperative programming In computer science, imperative programming is a programming paradigm that describes computation in terms of statements that change a program state... , procedural Procedural programming Procedural programming can sometimes be used as a synonym for imperative programming , but can also refer to a programming paradigm, derived from structured programming, based upon the concept of the procedure call... |
|
Scala | Application, Distributed, Web | functional Functional programming In computer science, functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids state and mutable data. It emphasizes the application of functions, in contrast to the imperative programming style, which emphasizes changes in state... , generic Generic programming In a broad definition, generic programming is a style of computer programming in which algorithms are written in terms of to-be-specified-later types that are then instantiated when needed for specific types provided as parameters... , imperative Imperative programming In computer science, imperative programming is a programming paradigm that describes computation in terms of statements that change a program state... , object-functional, object-oriented Object-oriented programming Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,... |
|
Scheme | Education, General | functional Functional programming In computer science, functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids state and mutable data. It emphasizes the application of functions, in contrast to the imperative programming style, which emphasizes changes in state... |
, R6RS |
Simula Simula Simula is a name for two programming languages, Simula I and Simula 67, developed in the 1960s at the Norwegian Computing Center in Oslo, by Ole-Johan Dahl and Kristen Nygaard... |
Education, General | discrete event simulation Discrete Event Simulation In discrete-event simulation, the operation of a system is represented as a chronological sequence of events. Each event occurs at an instant in time and marks a change of state in the system... , event-driven Event-driven programming In computer programming, event-driven programming or event-based programming is a programming paradigm in which the flow of the program is determined by events—i.e., sensor outputs or user actions or messages from other programs or threads.Event-driven programming can also be defined as an... , imperative Imperative programming In computer science, imperative programming is a programming paradigm that describes computation in terms of statements that change a program state... , multi-threaded (quasi-parallel) program execution, object-oriented Object-oriented programming Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,... |
|
Smalltalk Smalltalk Smalltalk is an object-oriented, dynamically typed, reflective programming language. Smalltalk was created as the language to underpin the "new world" of computing exemplified by "human–computer symbiosis." It was designed and created in part for educational use, more so for constructionist... |
Application, Education | concurrent, declarative Declarative programming In computer science, declarative programming is a programming paradigm that expresses the logic of a computation without describing its control flow. Many languages applying this style attempt to minimize or eliminate side effects by describing what the program should accomplish, rather than... , event-driven Event-driven programming In computer programming, event-driven programming or event-based programming is a programming paradigm in which the flow of the program is determined by events—i.e., sensor outputs or user actions or messages from other programs or threads.Event-driven programming can also be defined as an... , object-oriented Object-oriented programming Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,... , reflective |
, ANSI |
SNOBOL SNOBOL SNOBOL is a generic name for the computer programming languages developed between 1962 and 1967 at AT&T Bell Laboratories by David J. Farber, Ralph E. Griswold and Ivan P. Polonsky, culminating in SNOBOL4... |
Text processing | ||
Standard ML Standard ML Standard ML is a general-purpose, modular, functional programming language with compile-time type checking and type inference. It is popular among compiler writers and programming language researchers, as well as in the development of theorem provers.SML is a modern descendant of the ML... |
Application | functional Functional programming In computer science, functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids state and mutable data. It emphasizes the application of functions, in contrast to the imperative programming style, which emphasizes changes in state... , generic Generic programming In a broad definition, generic programming is a style of computer programming in which algorithms are written in terms of to-be-specified-later types that are then instantiated when needed for specific types provided as parameters... , imperative Imperative programming In computer science, imperative programming is a programming paradigm that describes computation in terms of statements that change a program state... |
, SML '97 |
Tcl Tcl Tcl is a scripting language created by John Ousterhout. Originally "born out of frustration", according to the author, with programmers devising their own languages intended to be embedded into applications, Tcl gained acceptance on its own... |
Application, Scripting, Web | event-driven Event-driven programming In computer programming, event-driven programming or event-based programming is a programming paradigm in which the flow of the program is determined by events—i.e., sensor outputs or user actions or messages from other programs or threads.Event-driven programming can also be defined as an... , imperative Imperative programming In computer science, imperative programming is a programming paradigm that describes computation in terms of statements that change a program state... , procedural Procedural programming Procedural programming can sometimes be used as a synonym for imperative programming , but can also refer to a programming paradigm, derived from structured programming, based upon the concept of the procedure call... , reflective |
|
Visual Basic Visual Basic Visual Basic is the third-generation event-driven programming language and integrated development environment from Microsoft for its COM programming model... |
Application, Education | component-oriented, event-driven Event-driven programming In computer programming, event-driven programming or event-based programming is a programming paradigm in which the flow of the program is determined by events—i.e., sensor outputs or user actions or messages from other programs or threads.Event-driven programming can also be defined as an... , imperative Imperative programming In computer science, imperative programming is a programming paradigm that describes computation in terms of statements that change a program state... |
|
Visual Basic .NET Visual Basic .NET Visual Basic .NET , is an object-oriented computer programming language that can be viewed as an evolution of the classic Visual Basic , which is implemented on the .NET Framework... |
Application, Education, Web | event-driven Event-driven programming In computer programming, event-driven programming or event-based programming is a programming paradigm in which the flow of the program is determined by events—i.e., sensor outputs or user actions or messages from other programs or threads.Event-driven programming can also be defined as an... , imperative Imperative programming In computer science, imperative programming is a programming paradigm that describes computation in terms of statements that change a program state... , object-oriented Object-oriented programming Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,... |
|
Visual Prolog Visual Prolog Visual Prolog, also formerly known as PDC Prolog and Turbo Prolog, is a strongly typed object-oriented extension of Prolog. As Turbo Prolog it was marketed by Borland, but it is now developed and marketed by the Danish firm Prolog Development Center that originally developed it... |
Application | declarative Declarative programming In computer science, declarative programming is a programming paradigm that expresses the logic of a computation without describing its control flow. Many languages applying this style attempt to minimize or eliminate side effects by describing what the program should accomplish, rather than... , event-driven Event-driven programming In computer programming, event-driven programming or event-based programming is a programming paradigm in which the flow of the program is determined by events—i.e., sensor outputs or user actions or messages from other programs or threads.Event-driven programming can also be defined as an... , functional Functional programming In computer science, functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids state and mutable data. It emphasizes the application of functions, in contrast to the imperative programming style, which emphasizes changes in state... , imperative Imperative programming In computer science, imperative programming is a programming paradigm that describes computation in terms of statements that change a program state... , logical, object-oriented Object-oriented programming Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,... |
|
Windows PowerShell Windows PowerShell Windows PowerShell is Microsoft's task automation framework, consisting of a command-line shell and associated scripting language built on top of, and integrated with the .NET Framework... |
Administration | functional Functional programming In computer science, functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids state and mutable data. It emphasizes the application of functions, in contrast to the imperative programming style, which emphasizes changes in state... , imperative Imperative programming In computer science, imperative programming is a programming paradigm that describes computation in terms of statements that change a program state... , object-oriented Object-oriented programming Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,... , pipeline Pipeline programming When a programming language is originally designed without any syntax to nest function calls, pipeline programming is a simple syntax change to add it. The programmer connects notional program modules into a flow structure, by analogy to a physical pipeline carrying reaction products through a... , reflective |
|
XL | concept programming Concept programming Concept programming is a programming paradigm focusing on how concepts, that live in the programmer's head, translate into representations that are found in the code space. This approach was introduced in 2001 by Christophe de Dinechin with the XL Programming Language.- Pseudo-metrics :Concept... , imperative Imperative programming In computer science, imperative programming is a programming paradigm that describes computation in terms of statements that change a program state... , object-oriented Object-oriented programming Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,... |
||
Language | Intended use | Paradigm Programming paradigm A programming paradigm is a fundamental style of computer programming. Paradigms differ in the concepts and abstractions used to represent the elements of a program and the steps that compose a computation A programming paradigm is a fundamental style of computer programming. (Compare with a... (s) |
Standardized Standardization Standardization is the process of developing and implementing technical standards.The goals of standardization can be to help with independence of single suppliers , compatibility, interoperability, safety, repeatability, or quality.... ? |
Type systems
Brief Definitions- Compatibility among composite types is how functions are applied to data typed similarly to its intended type. Name-based compatibility means that functions work only on data of its intended type and declared subtypes. Property-based compatibility means that functions work on any data that has the same properties as its intended type.
- Type checking is how type errors are checked. Static checking occurs at compile-time. Dynamic checking occurs at run-time.
Language Type strength Type safety Type safetyIn computer science, type safety is the extent to which a programming language discourages or prevents type errors. A type error is erroneous or undesirable program behaviour caused by a discrepancy between differing data types...Expression of types Compatibility among composite types Type checking ActionScript 3.0 ActionScriptActionScript is an object-oriented language originally developed by Macromedia Inc. . It is a dialect of ECMAScript , and is used primarily for the development of websites and software targeting the Adobe Flash Player platform, used on Web pages in the form of...strong safe implicit with optional explicit typing static Ada Ada (programming language)Ada is a structured, statically typed, imperative, wide-spectrum, and object-oriented high-level computer programming language, extended from Pascal and other languages...strong safeUnsafe operations are well isolated by a "Unchecked_" prefix. explicit name-based partially dynamicDynamic type checking is used when type safety can not be determined staticly i.e. for tagged types (type extension / inheritance), numeric ranges and array bounds. Aldor AldorAldor is a programming language. It is the successor of A# as the extension language of the Axiom computer algebra system.The Aldor language combines imperative, functional, and object-oriented features. It has an elaborate type system, allowing types to be used as first-class values...strong unsafe implicit static ALGOL 58 ALGOL 58ALGOL 58, originally known as IAL, is one of the family of ALGOL computer programming languages. It was an early compromise design soon superseded by ALGOL 60...strong safe explicit static ALGOL 60 ALGOL 60ALGOL 60 is a member of the ALGOL family of computer programming languages. It gave rise to many other programming languages, including BCPL, B, Pascal, Simula, C, and many others. ALGOL 58 introduced code blocks and the begin and end pairs for delimiting them...strong safe explicit static ALGOL 68 ALGOL 68ALGOL 68 isan imperative computerprogramming language that was conceived as a successor to theALGOL 60 programming language, designed with the goal of a...strong safe explicit property-based static APL strong safe dynamic AutoHotkey AutoHotkeyAutoHotkey is a free, open source macro-creation and automation software utility which allows users to automate repetitive tasks. Any application user interface can be modified by AutoHotkey...none Ateji PX Ateji PXAteji PX is an object-oriented programming language extension for Java. It is intended to facilliate parallel computing on multi-core processors, GPU, Grid and Cloud....strong safe explicit name-based static BASIC BASICBASIC is a family of general-purpose, high-level programming languages whose design philosophy emphasizes ease of use - the name is an acronym from Beginner's All-purpose Symbolic Instruction Code....varies by dialect BLISS none n/a n/a n/a n/a BeanShell BeanShellBeanShell is a Java scripting language, invented by Patrick Niemeyer. It runs in the Java Runtime Environment and uses Java syntax, in addition to scripting commands and syntax.- Features :...strong safe name-based dynamic Boo strong safe implicit with optional explicit typing static with optional dynamic typing C C (programming language)C is a general-purpose computer programming language developed between 1969 and 1973 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system....strong unsafe explicit name-based static C++ C++C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell...
(ISO/IEC 14882)strong unsafe explicit name-based staticwith optional dynamic type casting (see dynamic cast Dynamic castIn the C++ programming language, the dynamic_cast operator is a part of the run-time type information system that performs a typecast. Unlike an ordinary C-style typecast, a type safety check is performed at runtime, and if the types are not compatible, an exception will be thrown or a null...
)C# strong safeSafe, but supports unsafe code through an explicit declaration explicit name-based staticwith optional dynamic type (see dynamic member lookup) Clean strong safe implicit static Clojure ClojureClojure |closure]]") is a recent dialect of the Lisp programming language created by Rich Hickey. It is a general-purpose language supporting interactive development that encourages a functional programming style, and simplifies multithreaded programming....strong safe implicit with optional explicit typing dynamic COBOL COBOLCOBOL is one of the oldest programming languages. Its name is an acronym for COmmon Business-Oriented Language, defining its primary domain in business, finance, and administrative systems for companies and governments....strong static ColdFusion ColdFusion Markup LanguageColdFusion Markup Language, more commonly known as CFML, is a scripting language for web development that runs on the JVM, the .NET framework, and Google App Engine...
(CFML)strong safe implicit dynamic Common Lisp Common LispCommon Lisp, commonly abbreviated CL, is a dialect of the Lisp programming language, published in ANSI standard document ANSI INCITS 226-1994 , . From the ANSI Common Lisp standard the Common Lisp HyperSpec has been derived for use with web browsers...strong safe implicit with optional explicit typing dynamic Curl strong safe name-based Cython CythonCython is a programming language to simplify writing C and C++ extension modules for the CPython Python runtime. Strictly speaking, Cython syntax is a superset of Python syntax additionally supporting:...strong safe implicit with optional explicit typing name-based (extension types) and property-based (Python) dynamic with optional static typing D D (programming language)The D programming language is an object-oriented, imperative, multi-paradigm, system programming language created by Walter Bright of Digital Mars. It originated as a re-engineering of C++, but even though it is mainly influenced by that language, it is not a variant of C++...strong unsafeIt is almost safe, unsafe features are not commonly used. explicit name-based static Dylan strong safe dynamic Eiffel Eiffel (programming language)Eiffel is an ISO-standardized, object-oriented programming language designed by Bertrand Meyer and Eiffel Software. The design of the language is closely connected with the Eiffel programming method...strong safe name-based static Erlang strong safe implicit dynamic F# strong safe implicit name-based static Forth none n/a n/a n/a n/a Fortran FortranFortran is a general-purpose, procedural, imperative programming language that is especially suited to numeric computation and scientific computing...strong safe explicit name-based static Gambas GambasGambas is the name of an object-oriented dialect of the BASIC programming language as well as the integrated development environment that accompanies it. Designed to run on Linux and other Unix-like computer operating systems, its name is a recursive acronym for Gambas Almost Means Basic...strong safe explicit name-based Go Go (programming language)Go is a compiled, garbage-collected, concurrent programming language developed by Google Inc.The initial design of Go was started in September 2007 by Robert Griesemer, Rob Pike, and Ken Thompson. Go was officially announced in November 2009. In May 2010, Rob Pike publicly stated that Go was being...strong safe implicit with optional explicit typing property-based static Gosu Gosu (programming language)Gosu is a general-purpose Java Virtual Machine-based programming language released under the Apache License 2.0. This general-purpose programming language is used in some open-source software projects, including the web application framework and the build-tool , as well as in Guidewire Software...strong safe partially implicit (local type inference) name-based (subclassing) and property-based (structural) static GraphTalk weak Groovy strong safe implicit with optional explicit typing dynamic Harbour strong safe implicit with optional explicit typing dynamic Haskell Haskell (programming language)Haskell is a standardized, general-purpose purely functional programming language, with non-strict semantics and strong static typing. It is named after logician Haskell Curry. In Haskell, "a function is a first-class citizen" of the programming language. As a functional programming language, the...strong safe implicit with optional explicit typing property-based static Io Io (programming language)Io is a pure object-oriented programming language inspired by Smalltalk, Self, Lua, Lisp, Act1, and NewtonScript. Io has a prototype-based object model similar to the ones in Self and NewtonScript, eliminating the distinction between instance and class. Like Smalltalk, everything is an object and...strong dynamic J J (programming language)The J programming language, developed in the early 1990s by Kenneth E. Iverson and Roger Hui, is a synthesis of APL and the FP and FL function-level languages created by John Backus....strong safe dynamic Java Java (programming language)Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java platform. The language derives much of its syntax from C and C++ but has a simpler object model and fewer low-level facilities...strong safe explicit name-based static JavaScript JavaScriptJavaScript is a prototype-based scripting language that is dynamic, weakly typed and has first-class functions. It is a multi-paradigm language, supporting object-oriented, imperative, and functional programming styles....weak implicit dynamic Joy strong safe dynamic Lua weak safe implicit dynamic Mathematica MathematicaMathematica is a computational software program used in scientific, engineering, and mathematical fields and other areas of technical computing...strong dynamic MATLAB M-code MATLABMATLAB is a numerical computing environment and fourth-generation programming language. Developed by MathWorks, MATLAB allows matrix manipulations, plotting of functions and data, implementation of algorithms, creation of user interfaces, and interfacing with programs written in other languages,...dynamic Modula-2 Modula-2Modula-2 is a computer programming language designed and developed between 1977 and 1980 by Niklaus Wirth at ETH Zurich as a revision of Pascal to serve as the sole programming language for the operating system and application software for the personal workstation Lilith...strong unsafe explicit name-based static Modula-3 Modula-3In computer science, Modula-3 is a programming language conceived as a successor to an upgraded version of Modula-2 known as Modula-2+. While it has been influential in research circles it has not been adopted widely in industry...strong unsafe explicit property-based static Oberon Oberon (programming language)Oberon is a programming language created in 1986 by Professor Niklaus Wirth and his associates at ETH Zurich in Switzerland. It was developed as part of the implementation of the Oberon operating system...strong safe explicit name-based static and partially dynamicdynamic checking of type extensions i.e. inherited types Objective-C Objective-CObjective-C is a reflective, object-oriented programming language that adds Smalltalk-style messaging to the C programming language.Today, it is used primarily on Apple's Mac OS X and iOS: two environments derived from the OpenStep standard, though not compliant with it...weak safe explicit name-based (subclassing) and property-based (protocols) dynamic with optional static typing OCaml strong safe implicit with optional explicit typing property-based static Object Pascal Object PascalObject Pascal refers to a branch of object-oriented derivatives of Pascal, mostly known as the primary programming language of Embarcadero Delphi.-Early history at Apple:...
(DelphiBorland DelphiEmbarcadero Delphi is an integrated development environment for console, desktop graphical, web, and mobile applications.Delphi's compilers use its own Object Pascal dialect of Pascal and generate native code for 32- and 64-bit Windows operating systems, as well as 32-bit Mac OS X and iOS...
)strong safe explicit name-based static Oxygene strong unsafe implicit static Oz Oz (programming language)Oz is a multiparadigm programming language, developed in the Programming Systems Lab at Université catholique de Louvain, for programming language education. It has a canonical textbook: Concepts, Techniques, and Models of Computer Programming....strong safe implicit property-based dynamic Pascal Pascal (programming language)Pascal is an influential imperative and procedural programming language, designed in 1968/9 and published in 1970 by Niklaus Wirth as a small and efficient language intended to encourage good programming practices using structured programming and data structuring.A derivative known as Object Pascal...strong unsafe explicit name-based static Perl 5 weak implicit dynamic Perl 6 Perl 6Perl 6 is a major revision to the Perl programming language. It is still in development, as a specification from which several interpreter and compiler implementations are being written. It is introducing elements of many modern and historical languages. Perl 6 is intended to have many...partially implicitexplicit for static types dynamic with optional static typing PHP PHPPHP is a general-purpose server-side scripting language originally designed for web development to produce dynamic web pages. For this purpose, PHP code is embedded into the HTML source document and interpreted by a web server with a PHP processor module, which generates the web page document...weak implicit dynamic Plus Plus (programming language)Plus is a "Pascal-like" system implementation language from the University of British Columbia , Canada, based on the SUE system language developed at the University of Toronto, circa 1971.- Description :...strong safe explicit property-based static, dynamic (optional) Prolog PrologProlog is a general purpose logic programming language associated with artificial intelligence and computational linguistics.Prolog has its roots in first-order logic, a formal logic, and unlike many other programming languages, Prolog is declarative: the program logic is expressed in terms of...strong dynamic Pure Pure (programming language)Pure is a dynamically typed, functional programming language based on term rewriting. It has facilities for user-defined operator syntax, macros, multiple-precision numbers, and compilation to native code through the LLVM...dynamic Python Python (programming language)Python is a general-purpose, high-level programming language whose design philosophy emphasizes code readability. Python claims to "[combine] remarkable power with very clear syntax", and its standard library is large and comprehensive...strong safe implicit property-based dynamic REBOL REBOLREBOL is a cross-platform data exchange language and a multi-paradigm dynamic programming language originally designed by Carl Sassenrath for network communications and distributed computing. The language and its official implementation, which is a proprietary freely redistributable software are...strong safe implicit dynamic Ruby Ruby (programming language)Ruby is a dynamic, reflective, general-purpose object-oriented programming language that combines syntax inspired by Perl with Smalltalk-like features. Ruby originated in Japan during the mid-1990s and was first developed and designed by Yukihiro "Matz" Matsumoto...strong safe implicit property-based dynamic Rust Rust (programming language)Rust is an experimental, concurrent, multi-paradigm, compiled programming language developed by Mozilla Labs. It is designed to be practical, supporting pure-functional, concurrent-actor, imperative-procedural, and object-oriented styles....strong safe implicit with optional explicit typing static with optional dynamic typing S strong dynamic S-Lang strong safe implicit dynamic Scala strong safe partially implicit (local type inference) name-based (subclassing) and property-based (structural) static Scheme strong implicit dynamic (latent) Simula SimulaSimula is a name for two programming languages, Simula I and Simula 67, developed in the 1960s at the Norwegian Computing Center in Oslo, by Ole-Johan Dahl and Kristen Nygaard...strong safe staticoptional for formal and virtual procedures Smalltalk SmalltalkSmalltalk is an object-oriented, dynamically typed, reflective programming language. Smalltalk was created as the language to underpin the "new world" of computing exemplified by "human–computer symbiosis." It was designed and created in part for educational use, more so for constructionist...strong safe implicit dynamic Standard ML Standard MLStandard ML is a general-purpose, modular, functional programming language with compile-time type checking and type inference. It is popular among compiler writers and programming language researchers, as well as in the development of theorem provers.SML is a modern descendant of the ML...strong safe implicit with optional explicit typing property-based static Tcl TclTcl is a scripting language created by John Ousterhout. Originally "born out of frustration", according to the author, with programmers devising their own languages intended to be embedded into applications, Tcl gained acceptance on its own...dynamic Visual Basic Visual BasicVisual Basic is the third-generation event-driven programming language and integrated development environment from Microsoft for its COM programming model...strong safe implicit with optional explicit typing name-based static Visual Basic .NET Visual Basic .NETVisual Basic .NET , is an object-oriented computer programming language that can be viewed as an evolution of the classic Visual Basic , which is implemented on the .NET Framework...strong unsafe explicit static Visual Prolog Visual PrologVisual Prolog, also formerly known as PDC Prolog and Turbo Prolog, is a strongly typed object-oriented extension of Prolog. As Turbo Prolog it was marketed by Borland, but it is now developed and marketed by the Danish firm Prolog Development Center that originally developed it...strong safe partially implicit name-based static Windows PowerShell Windows PowerShellWindows PowerShell is Microsoft's task automation framework, consisting of a command-line shell and associated scripting language built on top of, and integrated with the .NET Framework...strong safe implicit dynamic XL strong safe name-based static Language Type strength Type safety Expression of types Compatibility among composite types Type checking
Failsafe I/O and system calls
Most programming languages will print an error messageError message
An error message is information displayed when an unexpected condition occurs, usually on a computer or other device. On modern operating systems with graphical user interfaces, error messages are often displayed using dialog boxes...
and/or throw an
exception
Exception handling
Exception handling is a programming language construct or computer hardware mechanism designed to handle the occurrence of exceptions, special conditions that change the normal flow of program execution....
if an input/output
Input/output
In computing, input/output, or I/O, refers to the communication between an information processing system , and the outside world, possibly a human, or another information processing system. Inputs are the signals or data received by the system, and outputs are the signals or data sent from it...
operation or other
system call
System call
In computing, a system call is how a program requests a service from an operating system's kernel. This may include hardware related services , creating and executing new processes, and communicating with integral kernel services...
(e.g., chmod
Chmod
The chmod command is a Unix command that lets a user tell the system how much access it should permit to a file. It changes the file system modes of files and directories. The modes include permissions and special modes...
, kill
Kill (Unix)
In computing, kill is a command that is used in several popular operating systems to send signals to running processes, for example to request the termination of this process.-Unix and Unix-like:...
) fails, unless the
programmer has explicitly arranged for different handling of these events.
Thus, these languages fail safely in this regard.
Some (mostly older) languages require that the programmer explicitly add
checks for these kinds of errors. It is common for novice programmers to
forget to add these checks, and even experts occasionally do so—these
omissions can lead to erroneous behavior
Software bug
A software bug is the common term used to describe an error, flaw, mistake, failure, or fault in a computer program or system that produces an incorrect or unexpected result, or causes it to behave in unintended ways. Most bugs arise from mistakes and errors made by people in either a program's...
.
Language | Failsafe I/O |
---|---|
Ada Ada (programming language) Ada is a structured, statically typed, imperative, wide-spectrum, and object-oriented high-level computer programming language, extended from Pascal and other languages... |
(exceptions) |
AutoHotkey AutoHotkey AutoHotkey is a free, open source macro-creation and automation software utility which allows users to automate repetitive tasks. Any application user interface can be modified by AutoHotkey... |
(global ErrorLevel must be explicitly checked) |
C C (programming language) C is a general-purpose computer programming language developed between 1969 and 1973 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system.... |
gcc GNU Compiler Collection The GNU Compiler Collection is a compiler system produced by the GNU Project supporting various programming languages. GCC is a key component of the GNU toolchain... can warn on unchecked error status. Newer versions of Visual Studio usually throw exceptions on failed I/O when using stdio. |
C++ C++ C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell... |
|
C# | |
Common Lisp Common Lisp Common Lisp, commonly abbreviated CL, is a dialect of the Lisp programming language, published in ANSI standard document ANSI INCITS 226-1994 , . From the ANSI Common Lisp standard the Common Lisp HyperSpec has been derived for use with web browsers... |
|
D D (programming language) The D programming language is an object-oriented, imperative, multi-paradigm, system programming language created by Walter Bright of Digital Mars. It originated as a re-engineering of C++, but even though it is mainly influenced by that language, it is not a variant of C++... |
|
Erlang | |
Gosu Gosu (programming language) Gosu is a general-purpose Java Virtual Machine-based programming language released under the Apache License 2.0. This general-purpose programming language is used in some open-source software projects, including the web application framework and the build-tool , as well as in Guidewire Software... |
|
Harbour | |
Haskell Haskell (programming language) Haskell is a standardized, general-purpose purely functional programming language, with non-strict semantics and strong static typing. It is named after logician Haskell Curry. In Haskell, "a function is a first-class citizen" of the programming language. As a functional programming language, the... |
|
Java Java (programming language) Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java platform. The language derives much of its syntax from C and C++ but has a simpler object model and fewer low-level facilities... |
|
Lua | (some functions do not warn or throw exceptions) |
Mathematica Mathematica Mathematica is a computational software program used in scientific, engineering, and mathematical fields and other areas of technical computing... |
|
Object Pascal Object Pascal Object Pascal refers to a branch of object-oriented derivatives of Pascal, mostly known as the primary programming language of Embarcadero Delphi.-Early history at Apple:... (Delphi Borland Delphi Embarcadero Delphi is an integrated development environment for console, desktop graphical, web, and mobile applications.Delphi's compilers use its own Object Pascal dialect of Pascal and generate native code for 32- and 64-bit Windows operating systems, as well as 32-bit Mac OS X and iOS... ) |
|
Objective-C Objective-C Objective-C is a reflective, object-oriented programming language that adds Smalltalk-style messaging to the C programming language.Today, it is used primarily on Apple's Mac OS X and iOS: two environments derived from the OpenStep standard, though not compliant with it... |
(exceptions) |
OCaml | (exceptions) |
Perl Perl Perl is a high-level, general-purpose, interpreted, dynamic programming language. Perl was originally developed by Larry Wall in 1987 as a general-purpose Unix scripting language to make report processing easier. Since then, it has undergone many changes and revisions and become widely popular... |
Considerable error checking can be enabled optionally, but by default Perl is not failsafe. |
PHP PHP PHP is a general-purpose server-side scripting language originally designed for web development to produce dynamic web pages. For this purpose, PHP code is embedded into the HTML source document and interpreted by a web server with a PHP processor module, which generates the web page document... |
|
Python Python (programming language) Python is a general-purpose, high-level programming language whose design philosophy emphasizes code readability. Python claims to "[combine] remarkable power with very clear syntax", and its standard library is large and comprehensive... |
|
REBOL REBOL REBOL is a cross-platform data exchange language and a multi-paradigm dynamic programming language originally designed by Carl Sassenrath for network communications and distributed computing. The language and its official implementation, which is a proprietary freely redistributable software are... |
|
Ruby Ruby (programming language) Ruby is a dynamic, reflective, general-purpose object-oriented programming language that combines syntax inspired by Perl with Smalltalk-like features. Ruby originated in Japan during the mid-1990s and was first developed and designed by Yukihiro "Matz" Matsumoto... |
|
Rust Rust (programming language) Rust is an experimental, concurrent, multi-paradigm, compiled programming language developed by Mozilla Labs. It is designed to be practical, supporting pure-functional, concurrent-actor, imperative-procedural, and object-oriented styles.... |
|
S | |
Scala | |
Standard ML Standard ML Standard ML is a general-purpose, modular, functional programming language with compile-time type checking and type inference. It is popular among compiler writers and programming language researchers, as well as in the development of theorem provers.SML is a modern descendant of the ML... |
|
Tcl Tcl Tcl is a scripting language created by John Ousterhout. Originally "born out of frustration", according to the author, with programmers devising their own languages intended to be embedded into applications, Tcl gained acceptance on its own... |
|
Visual Basic Visual Basic Visual Basic is the third-generation event-driven programming language and integrated development environment from Microsoft for its COM programming model... |
|
Visual Prolog Visual Prolog Visual Prolog, also formerly known as PDC Prolog and Turbo Prolog, is a strongly typed object-oriented extension of Prolog. As Turbo Prolog it was marketed by Borland, but it is now developed and marketed by the Danish firm Prolog Development Center that originally developed it... |
|
Language | Failsafe I/O |
Expressiveness
Language | Statements ratio | Lines ratio |
---|---|---|
C | 1 | 1 |
C++ | 2.5 | 1 |
Fortran | 2 | 0.8 |
Java | 2.5 | 1.5 |
Perl | 6 | 6 |
Smalltalk | 6 | 6.25 |
Python | 6.5 |
The literature on programming languages contains an abundance of informal claims about their relative expressive power, but there is no framework for formalizing such statements nor for deriving interesting consequences. This table provides two measures of expressiveness from two different sources. An additional measure of expressiveness, in GZip bytes, can be found on the Computer Language Benchmarks Game.
Benchmarks
BenchmarksBenchmark (computing)
In computing, a benchmark is the act of running a computer program, a set of programs, or other operations, in order to assess the relative performance of an object, normally by running a number of standard tests and trials against it...
are designed to mimic a particular type of workload on a component or system. The computer programs used for compiling some of the benchmark data in this section may not have been fully optimized, and the relevance of the data is disputed. The most accurate benchmarks are those that are customized to your particular situation. Other people's benchmark data may have some value to others, but proper interpretation brings many challenges. See this page about flawed benchmarks and comparisons. The Computer Language Benchmarks Game site contains a large number of micro-benchmarks of reader-contributed code snippets, with an interface that generates various charts and tables comparing specific programming languages and types of tests.
Time line of specific language comparisons
- 1973 - Comparative Notes on Algol 68 and PL/I - S. H. Valentine - February 1973
- 1976 - Evaluation of ALGOL 68ALGOL 68ALGOL 68 isan imperative computerprogramming language that was conceived as a successor to theALGOL 60 programming language, designed with the goal of a...
, JOVIALJOVIALJOVIAL is a high-order computer programming language similar to ALGOL, but specialized for the development of embedded systems .JOVIAL is an acronym for "Jules Own Version of the International...
J3B, PascalPascal (programming language)Pascal is an influential imperative and procedural programming language, designed in 1968/9 and published in 1970 by Niklaus Wirth as a small and efficient language intended to encourage good programming practices using structured programming and data structuring.A derivative known as Object Pascal...
, SimulaSimulaSimula is a name for two programming languages, Simula I and Simula 67, developed in the 1960s at the Norwegian Computing Center in Oslo, by Ole-Johan Dahl and Kristen Nygaard...
67, and TACPOL Versus TINMAN - Requirements for a Common High Order Programming Language. - 1977 - A comparison of PASCAL and ALGOL 68http://dare.ubvu.vu.nl/bitstream/1871/2609/1/11054.pdf - Andrew S. TanenbaumAndrew S. TanenbaumAndrew Stuart "Andy" Tanenbaum is a professor of computer science at the Vrije Universiteit, Amsterdam in the Netherlands. He is best known as the author of MINIX, a free Unix-like operating system for teaching purposes, and for his computer science textbooks, regarded as standard texts in the...
- June 1977. - 1993 - Five Little Languages and How They Grew - BLISSBLISSBLISS is a system programming language developed at Carnegie Mellon University by W. A. Wulf, D. B. Russell, and A. N. Habermann around 1970. It was perhaps the best known systems programming language right up until C made its debut a few years later. Since then, C took off and BLISS faded into...
, PascalPascal (programming language)Pascal is an influential imperative and procedural programming language, designed in 1968/9 and published in 1970 by Niklaus Wirth as a small and efficient language intended to encourage good programming practices using structured programming and data structuring.A derivative known as Object Pascal...
, ALGOL 68ALGOL 68ALGOL 68 isan imperative computerprogramming language that was conceived as a successor to theALGOL 60 programming language, designed with the goal of a...
, BCPLBCPLBCPL is a procedural, imperative, and structured computer programming language designed by Martin Richards of the University of Cambridge in 1966.- Design :...
& CC (programming language)C is a general-purpose computer programming language developed between 1969 and 1973 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system....
- Dennis M. Ritchie - April 1993. - 2009 - On Go - oh, go on - How well will Google's GoGo (programming language)Go is a compiled, garbage-collected, concurrent programming language developed by Google Inc.The initial design of Go was started in September 2007 by Robert Griesemer, Rob Pike, and Ken Thompson. Go was officially announced in November 2009. In May 2010, Rob Pike publicly stated that Go was being...
stand up against Brand X programming language? - David Given - November 2009
See also
- Alphabetical list of programming languagesAlphabetical list of programming languagesThe aim of this list of programming languages is to include all notable programming languages in existence, both those in current use and historical ones, in alphabetical order, except for dialects of BASIC and esoteric programming languages.- A :...
- Comparison of basic instructions of programming languages
- Comparison of programming paradigmsComparison of programming paradigmsThis article attempts to set out the various similarities and differences between the various programming paradigms as a summary in both graphical and tabular format with links to the separate discussions concerning these similarities and differences in existing Wikipedia articles- Main paradigm...
- Educational programming languageEducational programming languageAn educational programming language is a programming language that is designed primarily as a learning instrument and not so much as a tool for writing programs for real-world work.-Learning paths:...
- Hello world program examplesHello world program examplesThe Hello world program is a simple computer program that prints the string "Hello World". It is typically one of the simplest programs possible in almost all computer languages, and often used as first program to demonstrate a programming language. As such it can be used to quickly compare syntax...
- Measuring programming language popularityMeasuring programming language popularityIt is difficult to determine which programming languages are most widely used, and what usage means varies by context. One language may occupy the greater number of programmer hours, a different one have more lines of code, and a third utilize the most CPU time. Some languages are very popular for...
- Programming languageProgramming languageA programming language is an artificial language designed to communicate instructions to a machine, particularly a computer. Programming languages can be used to create programs that control the behavior of a machine and/or to express algorithms precisely....
External links
- 99-bottles-of-beer.net — one program in over a thousand variations and multiple languages.
- The speed, size and dependability of programming languages — charts and narrative based on The Computer Language Benchmarks Game data.
- Shapes: Source Code Size and Run Time - charts based on current Benchmarks Game data.
- Comparison of syntaxes with sample codes.
- Syntax Across Languages
- Programming Language Comparison — a comparison of nine programming languages and related information.
- Scriptometer scores — multiple comparisons of 26 programming languages. — research to fulfill Kristofer J. Carlson's master's degree requirements.
- PLEAC — Programming Language Examples Alike Cookbook.
- OHLOH Language Statistics — gives an indication of the popularity of programming languages in open-source projects.
- History of Programming Language Statements — history and comparison of programming languages.