Comparison of programming languages


s are used for controlling the behavior of a machine. Like natural languages, 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 programmers may use dozens of languages in a career.
Most programming languages are not standardized by an international standard, even widely used ones, such as Perl or Standard ML. Notable standardized programming languages include ALGOL, C, C++, JavaScript, Smalltalk, Prolog, Common Lisp, Scheme, Ada, Fortran, COBOL, SQL and XQuery.

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. Please note that the following table may be missing some information.
LanguageIntended useImperativeObject-orientedFunctionalProceduralGenericReflectiveEvent-drivenOther paradigmStandardized?
Application, RAD, business, general, web, mobileObject-based,
Prototype-based programming
ActionScript 3.0Application, client-side, web, ECMA
AdaApplication, embedded, realtime, systemconcurrent, distributed,, 2005, 2012, ANSI, ISO, GOST 27831-88
AldorHighly domain-specific, symbolic computing
ALGOL 58Application
ALGOL 60Application, IFIP WG 2.1, ISO
ALGOL 68Applicationconcurrent, IFIP WG 2.1, GOST 27974-88,
Ateji PXParallel applicationpi calculus
APLApplication, data processingarray-oriented, tacit, ISO
Assembly languageGeneralany, syntax is usually highly specific, related to the target processor
AutoHotkeyGUI automation, highly domain-specific
AutoItGUI automation, highly domain-specific
BallerinaIntegration, agile, server-side, generalconcurrent, transactional, statically and strongly typed programming, diagrammatic / visual programming De facto standard via Ballerina Language Specification
BashShell, scripting, but optionally POSIX.2
BASICApplication, education, ANSI, ISO, ECMA
BeanShellApplication, scripting, JCP
BLISSSystem
BlitzMaxApplication, game
BooApplication, game scripting
Brodomain-specific, application
CApplication, system, general purpose, low-level operations, ANSI C89, ISO C90, ISO C99, ISO C11, ISO C18
C++Application, system. ISO/IEC 2003, ISO/IEC 2011,ISO/IEC 2014,ISO/IEC 2017
C#Application, RAD, business, client-side, general, server-side, webstructured, concurrent, ECMA, ISO
ClarionGeneral, business, web
CleanGeneral
ClojureGeneralconcurrent
CLUGeneral
COBOLApplication, business
CobraApplication, business, general, web
ColdFusion Web
Common LispGeneralextensible syntax, , syntactic macros, multiple dispatch, concurrent, ANSI
COMAL 80Education
CrystalGeneral purposealpha stage
CurryApplicationlazy evaluation, non-determinism via Curry Language Report
CythonApplication, general, numerical computingaspect-oriented
DApplication, systemgenerative, concurrent
DartApplication, web, server-side, mobile, IoTstructured
DylanApplication
EiffelGeneral, application, business, client-side, server-side, web distributed , , ECMA, ISO
ElixirApplication, distributedconcurrent, distributed
ErlangApplication, distributedconcurrent, distributed
EuphoriaApplication
FactorGeneralcan be viewed asstack-oriented
FP
F#Application
ForthGeneralcan be viewed asstack-oriented, ANSI
FortranApplication, numerical computingarray-based, vectorized, concurrent, native distributed/shared-memory parallelism, ANSI 66, ANSI 77, MIL-STD-1753, ISO 90, ISO 95, ISO 2003, ISO/IEC 1539-1:2010, ISO/IEC JTC1/SC22/WG5 N2145
FreeBASICApplication, numerical computing
GambasApplication
Game Maker LanguageApplication, games
GLBasicApplication, gamessimple object-oriented
GoApplication, web, server-sideconcurrent via Go Language Specification
GosuApplication, general, scripting, web
GraphTalkApplicationlogic
GroovyApplication, general, scripting, webmeta-programming, JCP
HarbourApplication, business, data processing, general, webdeclarative
HaskellApplicationlazy evaluation, Haskell 2010
HaxeApplication, general, web
HyperNextApplication, educationweakly typed
HyperTalkApplication, RAD, generalweakly typed
IoApplication, host-driven scripting
IPLGeneral
ISLISPGeneral, ISO
JData processingarray-oriented, function-level, tacit
JADEApplication, distributed
JavaApplication, business, client-side, general, mobile development, server-side, webconcurrent via Java Language Specification
JavaScriptClient-side, server-side, webprototype-based, ECMA
JoyResearchstack-oriented
JuliaGeneral, technical computingmultiple dispatch, meta, scalar and array-oriented, parallel, concurrent, distributed
KData processing, businessarray-oriented, tacit
KotlinApplication, mobile development, server-side, client-side, web
KshShell, scriptingseveral variants, custom programmable, dynamic loadable modules, POSIX.2
LabVIEW Application, industrial instrumentation-automationdataflow, visual
LispGeneral
LiveCodeApplication, RAD, generalweakly typed
LogtalkArtificial intelligence, applicationlogic
LSLVirtual worlds content scripting and animationScripts exist in in-world objects
LuaApplication, embedded scriptingaspect-oriented
MapleSymbolic computation, numerical computingdistributed
MathematicaSymbolic languagelogic, distributed
MATLABHighly domain-specific, numerical computing
Modula-2Application, system, ISO
Modula-3Application
MUMPS Application, databasesconcurrent, multi-user, NoSQL, transaction processing, ANSI
NimApplication, general, web, scripting, systemmultiple dispatch, Concurrent, meta
OberonApplication, system
Object PascalApplication, general, mobile app, webstructured
Objective-CApplication, generalconcurrent
OCamlApplication, general
OccamGeneralconcurrent, process-oriented
OpaWeb applicationsdistributed
OpenLispGeneral, Embedded Lisp Engine, ISO
OxygeneApplication
Oz-MozartApplication, distribution, educationconcurrent, logic
PascalApplication, education, ISO
PerlApplication, scripting, text processing, Web
PHPServer-side, web application, web via language specification and Requests for Comments
PL/IApplication, ECMA-50
PlusApplication, system development
PostScriptGraphics, page description
concatenative, stack-oriented
, as the PostScript Reference Manual
PowerShellAdministration, application, general, scriptingpipeline
PrologApplication, artificial intelligencelogic, declarative, ISO/IEC 13211-1:1995, TC1 2007, TC2 2012, TC3 2017
PureBasicApplication
PythonApplication, general, web, scripting, artificial intelligence, scientific computingaspect-oriented via Python Enhancement Proposals
RApplication, statistics
RacketEducation, general, scriptingmodular, logic, meta
RakuScripting, text processing, glueaspect-oriented, array, lazy evaluation, multiple dispatch, metaprogramming
REALbasicApplication
RebolDistributeddialected
REXXScripting
RPGApplication, system
RubyApplication, scripting, webaspect-oriented
RustApplication, systemconcurrent
SApplication, statistics
S-LangApplication, numerical, scripting
ScalaApplication, distributed, web via Scala Language Specification
SchemeEducation, generalextensible syntax, R6RS
Seed7Application, general, scripting, webmulti-paradigm, extensible, structured
SimulaEducation, generaldiscrete event simulation, multi-threaded program execution
Small BasicApplication, education, gamescomponent-oriented
SmalltalkApplication, general, business, artificial intelligence, education, webconcurrent, declarative, SwiftApplication, generalconcurrent, declarative, protocol-oriented
TclApplication, scripting, web
Visual BasicApplication, RAD, education, business, general,, [office automation">Swift (programming language)">SwiftApplication, generalconcurrent, declarative, protocol-oriented
TclApplication, scripting, web
Visual BasicApplication, RAD, education, business, general,, [office automationcomponent-oriented
Application, RAD, education, web, business, generalstructured, concurrent
Visual FoxProApplicationdata-centric, logic
Visual PrologApplicationdeclarative, logic
Wolfram LanguageSymbolic languagelogic, distributed
XLconcept programming
XojoApplication, RAD, general, web
XPath/XQueryDatabases, data processing, scriptingtree-oriented 1999 XPath 1, 2010 XQuery 1, 2014 XPath/XQuery 3.0
ZshShell, scriptingloadable modules

Type systems

Failsafe I/O and system calls

Most programming languages will print an error message or throw an exception if an input/output operation or other system call fails, unless the programmer has explicitly arranged for different handling of these events. Thus, these languages fail safely in this regard.
Some languages require that the programmer explicitly add checks for these kinds of errors. Psychologically, different cognitive biases may affect novice and experts alike and these omissions can lead to erroneous behavior.
LanguageFailsafe I/O
Ada
ALGOL
AutoHotkey
Bash
Ballerina
Bro
C
C++
C#
COBOL
Common Lisp
Curry
D
Eiffel – It actually depends on the library and it is not defined by the language
Erlang
Fortran
GLBasic – Will generally cause program to crash
Go
Gosu
Harbour
Haskell
ISLISP
Java
Julia
Kotlin
LabVIEW
Lua
Mathematica
Object Pascal
Objective-C
OCaml
OpenLisp
Perl
PHP
Python
Raku
Rebol
Rexx
RPG
Ruby
Rust
S
Smalltalk
Scala
Standard ML
Swift ≥ 2.0
Tcl
Visual Basic
Visual Basic.NET
Visual Prolog
Wolfram Language
Xojo
XPath/XQuery
LanguageFailsafe I/O

Expressiveness

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

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. The Computer Language Benchmarks Game site warns against over-generalizing from benchmark data, but 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.

Timeline of specific language comparisons