Programming languages are used for controlling the behavior of a machine (often a computer). Like human languages, programming languages have syntactic and semantic rules used to define meaning.
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.
General comparison
The following table compares general and technical information for a selection of commonly used programming languages. See the individual languages’ articles for further information.
| Language | General model of execution | Influences | Paradigm(s) | Typing discipline | Introduced |
|---|---|---|---|---|---|
| Ada | Compilation | Algol, Pascal, C++ (Ada 95), Smalltalk (Ada 95) | concurrent, distributed, generic, imperative, object-oriented | static, strong, safe, nominative | 1983 |
| C | Compilation | Algol, B | imperative, flow-driven | static, weak, unsafe | 1973 |
| C++ | Compilation | C, Simula, Algol 68 | imperative, object-oriented, generic | static, strong, unsafe, nominative | 1980 |
| C# | JIT compilation | Delphi, Java, C++ | imperative, object-oriented, generic, multi-platform | static, strong, both safe and unsafe | 2000 |
| COBOL | Compilation | FLOW-MATIC, COMTRAN | imperative, object-oriented | weak/strong | 1959 |
| ColdFusion | JIT compilation | HTML | procedural, functional, object-oriented | dynamic (duck), weak | 1995 |
| Common Lisp | Compilation | Lisp, Smalltalk | imperative, functional, object-oriented | dynamic, strong, safe | 1984 |
| D | Compilation | C , C++, Java, C# | imperative, object-oriented, generic | strong | 2000 |
| Eiffel | Compilation | Ada, Pascal | object-oriented, generic | static, strong, safe, nominative, contracts | 1985 |
| Erlang | Compilation | Prolog, Ericsson Pascal, CSP | functional, concurrent, distributed, multi-platform | dynamic, weak | late 1980s |
| Forth | Interpretation / Compilation | none | imperative, stack-oriented | typeless | 1977 |
| Fortran | Compilation | none | imperative | static, strong, safe, nominative | 1957 |
| Java | Interpretation / JIT compilation | C++, Objective-C | object-oriented, multi-platform, generic | static, strong | 1994 |
| JavaScript | Interpretation | C, Self, awk, Perl | imperative, object-oriented, functional | dynamic | 1995 |
| Haskell | Interpretation / Compilation | Miranda, ML | functional, generic | static, strong, type inference | 1998 |
| Mathematica | Interpretation | Lisp | functional, procedural | dynamic, strong | 1986 |
| Objective-C | Compilation | C, Smalltalk | object-oriented | static/dynamic hybrid, strong | 1986 |
| Objective Caml | Interpretation / Compilation | ML, Lisp | object-oriented, functional | static, safe, structural, type inference | 1996 |
| Object Pascal | Compilation | Pascal | imperative, object-oriented | static, strong, safe (but unsafe allowed), nominative | 1995 |
| Perl | Interpretation | C, shell, awk, sed, Lisp | functional, object-oriented, procedural | dynamic | 1987 |
| PHP | Interpretation | Perl, C | imperative, object-oriented | dynamic, weak | 1995 |
| Python | Interpretation | ABC, Perl, Modula-3 | imperative, object-oriented, functional | dynamic (duck), strong | 1991 |
| Ruby | Interpretation | Smalltalk, Perl | imperative, object-oriented, functional | dynamic (duck), |