Comparison of programming languages

Short description: none

Programming language comparisons

* General comparison
* Assignment
* Basic syntax
* Basic instructions
* Comments
* Control flow
* Foreach loops
* While loops
* For loops
* Do-while
* Exception handling
* Enumerated types
* Generators
* Anonymous functions
* Conditional expressions
* Functional instructions
* Arrays
* Associative arrays
* Scope
* String operations
* String functions
* Higher-order functions
* Type systems
* List comprehension
* Object-oriented programming
* Object-oriented constructors
* Operators

* Evaluation strategy
* List of "Hello World" programs

* Languages with dependent types
* Comparison of type systems

* * *

Comparison of individual languages

* ALGOL 58's influence on ALGOL 60
* ALGOL 60: Comparisons with other languages
* Comparison of ALGOL 68 and C++
* ALGOL 68: Comparisons with other languages
* Compatibility of C and C++
* Comparison of Pascal and Borland Delphi
* Comparison of Object Pascal and C
* Comparison of Pascal and C
* Comparison of Java and C++
* Comparison of C# and Java
* Comparison of C# and Visual Basic .NET
* Comparison of Visual Basic and Visual Basic .NET

* v
* t
* e

Programming languages are used for controlling the behavior of a machine (often a computer). Like natural languages, programming languages follow rules for syntax and semantics.

There are thousands of programming languages[1] 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 (or national) standard, even widely used ones, such as Perl or Standard ML (despite the name). Notable standardized programming languages include ALGOL, C, C++, JavaScript (under the name ECMAScript), Smalltalk, Prolog, Common Lisp, Scheme (IEEE standard), ISLISP, Ada, Fortran, COBOL, SQL, and XQuery.

## Contents

* 1 General comparison
* 2 Type systems
* 3 Failsafe I/O and system calls
* 4 Expressiveness
* 5 Benchmarks
* 6 Timeline of specific language comparisons
* 7 See also
* 8 References
* 9 Further reading

## 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  | Original purpose  | Imperative | Object-oriented | Functional | Procedural | Generic | Reflective | Other paradigms | Standardized

|
|
|
|
|
|
|
|
|

1C:Enterprise programming language | Application, RAD, business, general, web, mobile | Yes  | No  | Yes  | Yes  | Yes  | Yes  | Object-based, Prototype-based programming  | No
ActionScript | Application, client-side, web  | Yes  | Yes  | Yes  | Yes  | No  | No  | prototype-based  | Yes
1999-2003, ActionScript 1.0 with ES3, ActionScript 2.0 with ES3 and partial ES4 draft, ActionScript 3.0 with ES4 draft, ActionScript 3.0 with E4X
Ada | Application, embedded, realtime, system | Yes  | Yes[2] | No  | Yes[3] | Yes[4] | No  | Concurrent,[5] distributed[6] | Yes
1983, 2005, 2012, ANSI, ISO, GOST 27831-88[7]
Aldor | Highly domain-specific, symbolic computing | Yes  | Yes  | Yes  | No  | No  | No  |  | No
ALGOL 58 | Application  | Yes  | No  | No  | No  | No  | No  |  | No
ALGOL 60 | Application  | Yes  | No  | No  | Yes  | Yes  | No  |  | Yes
1960, IFIP WG 2.1, ISO[8]
ALGOL 68 | Application  | Yes  | No  | Yes  | Yes  | Yes  | No  | Concurrent  | Yes
1968, IFIP WG 2.1, GOST 27974-88,[9]
Ateji PX | Parallel application  | No  | Yes  | No  | No  | No  | No  | pi calculus  | No
APL | Application, data processing | Yes  | Yes  | Yes  | Yes  | Yes  | Yes  | Array-oriented, tacit | Yes
1989, ISO
Assembly language | General  | Yes  | No  | No  | No  | No  | No  | Any, syntax is usually highly specific, related to the target processor  | Yes
1985 IEEE 694-1985[10]
AutoHotkey | GUI automation (macros), highly domain-specific  | Yes  | Yes
[11] | No  | Yes  | No  | No  |  | No
AutoIt | GUI automation (macros), highly domain-specific  | Yes  | No  | No  | Yes  | No  | No  |  | No
Ballerina | Integration, agile, server-side, general  | Yes  | Yes  | Yes  | Yes  | No  | No  | Concurrent, transactional, statically and strongly typed, diagrammatic–visual  | De facto
standard via Ballerina Language Specification[12]
Bash | Shell, scripting | Yes  | No  | No  | Yes  | No  | No  |  | Optionally
POSIX.2[13]
BASIC | Application, education  | Yes  | No  | No  | Yes  | No  | No  |  | Yes
1983, ANSI, ISO, ECMA
BeanShell | Application, scripting  | Yes  | Yes  | Yes  | No  | No  | Yes  |  | No
In progress, JCP[14]
BLISS | System  | No  | No  | No  | Yes  | No  | No  |  | No
BlitzMax  | Application, game  | Yes  | Yes  | No  | Yes  | No  | Yes  |  | No
Boo | Application, game scripting  | No  | Yes  | No  | No  | No  | No  |  | No
C | Application, system,[15] general purpose, low-level operations  | Yes  | No  | No  | Yes  | No  | No  |  | Yes
1989, ANSI C89, ISO/IEC C90, ISO/IEC C95, ISO/IEC C99, ISO/IEC C11, ISO/IEC C17, ISO/IEC C2x[16]
C++ | Application, system  | Yes  | Yes  | Yes  | Yes  | Yes  | Yes  | Concurrent  | Yes
1998, ISO/IEC C++98, ISO/IEC C++03, ISO/IEC C++11, ISO/IEC C++14, ISO/IEC C++17, ISO/IEC C++20, ISO/IEC C++23, ISO/IEC C++26[17]
C# | Application, RAD, business, client-side, general, server-side, web, game programming | Yes  | Yes  | Yes[18] | Yes  | Yes  | Yes  | Concurrent, structured  | Yes
2000, ECMA, ISO[19]
Carbon | Experimental successor language to C++, designed by Google for performance-critical software  | Yes  | Yes  | Yes  | Yes  | Yes  | No  | Multi-paradigm  | No
Clarion | General, business, web  | Yes  | Yes  | Yes[20] | No  | No  | No  |  | Unknown
Clean | General  | No  | No  | Yes  | No  | Yes  | No  |  | No
Clojure | General  | No  | No  | Yes  | No  | No  | No  | Concurrent  | No
CLU | General  | Yes  | Yes  | No  | Yes  | Yes  | No  |  | No
COBOL | Application, business  | Yes  | Yes  | No  | Yes  | No  | No  |  | Yes
1968 ANSI X3.23, 1974, 1985; ISO/IEC 1989:1985, 2002, 2014, 2023
Cobra | Application, business, general, web  | Yes  | Yes  | Yes  | No  | Yes  | Yes  |  | No
ColdFusion (CFML)  | Web  | No  | Yes  | No  | Yes  | No  | No  |  | No
Common Lisp | General  | Yes  | Yes  | Yes  | Yes  | Yes  | Yes  | Extensible syntax, Array-oriented, syntactic macros, multiple dispatch, concurrent  | Yes
1994, ANSI
COMAL 80  | Education  | Yes  | No  | No  | Yes  | No  | No  |  | No
Crystal | General purpose  | Yes  | Yes[21] | Yes  | Yes  | Yes[22] | No  | Concurrent[23] | No
Curry | Application  | No  | No  | Yes  | No  | Yes  | No  | lazy evaluation, non-determinism  | De facto
standard via Curry Language Report
Cython | Application, general, numerical computing  | Yes  | Yes  | Yes  | No  | No  | Yes  | Aspect-oriented | No
D | Application, system  | Yes  | Yes  | Yes  | Yes  | Yes  | Yes  | Generative, concurrent  | No
Dart | Application, web, server-side, mobile, IoT | Yes  | Yes  | Yes  | Yes  | Yes  | No  | Structured  | Yes
ECMA-408 standard
Delphi, Object Pascal | General purpose  | Yes  | Yes  | Yes  | Yes  | Yes  | Yes  |  | Unknown
Dylan | Application  | No  | Yes  | Yes  | No  | No  | No  |  | No
Eiffel | General, application, business, client-side, server-side, web (EWF)  | Yes  | Yes  | Yes[24][25] | No  | Yes  | Yes Erl-G | Distributed SCOOP, Void-safe | Yes
2005, ECMA, ISO[26]
ELAN | Education  | Yes  | No  | No  | Yes  | No  | No  | Structured, stepwise refinement | No
Elixir | Application, distributed | No  | No  | Yes  | No  | No  | Yes  | Concurrent, distributed  | No
Erlang | Application, distributed  | No  | No  | Yes  | No  | No  | Yes  | Concurrent, distributed  | No
Euphoria | Application  | No  | No  | No  | Yes  | No  | Yes  |  | No
Factor | General  | Yes  | No  | Can be viewed as  | No  | Yes  | Yes  | Stack-oriented | No
FP |  | No  | No  | Yes  | No  | No  | No  |  | No
F# | Application  | Yes  | Yes  | Yes  | Yes  | Yes  | Yes  |  | No
Forth | General  | Yes  | No  | No  | Yes  | No  | Yes  | Stack-oriented  | Yes
1994, ANSI
Fortran | Application, numerical computing  | Yes  | Yes  | Yes  | Yes  | Yes  | No  | Array-based, vectorized, concurrent, native distributed/shared-memory parallelism  | Yes
1966, ANSI 66, ANSI 77, MIL-STD-1753, ISO 90, ISO 95, ISO 2003, ISO/IEC 1539-1:2010 (2008), ISO/IEC JTC1/SC22/WG5 N2145 (2018)
FreeBASIC | Application, numerical computing  | Yes  | Yes  | No  | Yes  | Yes  | No  |  | No
Gambas | Application  | Yes  | Yes  | No  | No  | No  | No  |  | No
Game Maker Language  | Application, game programming  | Yes  | Yes  | No  | No  | No  | No  |  | No
GLBasic | Application, games  | Yes  | Yes  | No  | Yes  | No  | No  | Simple object-oriented  | No
Go | Application, web, server-side  | Yes  | Can be viewed as[27] | Can be viewed as[28] | Yes  | Yes  | Yes  | Concurrent  | De facto
standard via Go Language Specification
Gosu | Application, general, scripting, web  | Yes  | Yes  | No  | No  | Yes  | Yes  |  | No
GraphTalk  | Application  | No  | Yes  | No  | No  | No  | No  | Logic  | No
Groovy | Application, general, scripting, web  | Yes  | Yes  | Yes  | Yes  | Yes  | Yes  | Meta-programming  | No
In progress, JCP[29]
Harbour | Application, business, data processing, general, web  | Yes  | Yes  | Yes  | Yes  | Yes  | Yes  | Declarative | No
Haskell | Application  | No  | No  | Yes  | No  | Yes  | No  | Lazy evaluation  | Yes
2010, Haskell 2010[30]
Haxe | Application, general, web  | Yes  | Yes  | Yes  | No  | Yes  | Yes  |  | No
HyperTalk | Application, RAD, general  | Yes  | No  | No  | Yes  | No  | Yes  | Weakly typed  | Unknown
Io | Application, host-driven scripting  | Yes  | Yes  | No  | No  | No  | No  |  | No
IPL | General  | No  | No  | Yes  | No  | No  | No  |  | Unknown
ISLISP | General  | Yes  | Yes  | Yes  | No  | Yes  | No  |  | Yes
1997, 2007, ISO
J | Application, data processing | Yes  | Yes  | Yes  | Yes  | Yes  | Yes  | Array-oriented, function-level, tacit, concurrent  | No
JADE | Application, distributed  | Yes  | Yes  | No  | No  | No  | No  |  | No
Java | Application, business, client-side, general, mobile development, server-side, web  | Yes  | Yes  | Yes  | Yes  | Yes  | Yes  | Concurrent  | De facto
standard via Java Language Specification
JavaScript | Client-side, server-side, web  | Yes  | Yes  | Yes  | Yes  | No  | Yes  | prototype-based  | Yes
ECMA-262 standard
Joy | Research  | No  | No  | Yes  | No  | No  | No  | Stack-oriented  | No
jq | "awk for JSON"  | No  | No  | Yes  | No  | No  | No  | Tacit, Backtracking, Streaming, PEG | No
Julia | General, technical computing  | Yes  | Can be viewed as[31][32] | Yes  | Yes  | Yes  | Yes  | Multiple dispatch, meta, scalar and array-oriented, parallel, concurrent, distributed ("cloud")  | De facto
standard via Julia Documentation[33]
K | Data processing, business  | No  | No  | No  | No  | No  | No  | Array-oriented, tacit  | Unknown
Kotlin | Application, general, mobile development, server-side, client-side, web, scripting,[34] domain-specific[35] | Yes  | Yes  | Yes  | Yes  | Yes  | Yes[36] | Concurrent[37] | De facto
standard via Kotlin Language Specification
Ksh | Shell, scripting | Yes  | Yes  | No  | Yes  | No  | No  | Several variants, custom programmable, dynamic loadable modules  | Optionally
POSIX.2[13]
LabVIEW (G)  | Application, industrial instrumentation-automation  | Yes  | Yes  | Yes  | No  | No  | No  | Dataflow, visual | No
Lisp | General  | No  | No  | Yes  | No  | No  | No  |  | Unknown
LiveCode | Application, RAD, general  | Yes  | Yes  | No  | Yes  | No  | Yes  | Weakly typed  | No
Logtalk | Artificial intelligence, application  | No  | Yes  | No  | No  | No  | Yes  | Logic  | No
Linden Scripting Language (LSL)  | Virtual worlds content scripting and animation  | Yes  | No  | No  | Yes  | No  | No  | Scripts exist in in-world objects  | De facto
reference is the Second Life implementation of LSL.[38]
Lua | Application, embedded scripting  | Yes  | Yes[39] | Yes  | Yes  | No  | Yes  | Aspect-oriented, prototype-based  | No[40]
Maple | Symbolic computation, numerical computing  | Yes  | Yes  | Yes  | Yes  | No  | No  | Distributed  | No
Mathematica | Symbolic language | Yes  | Yes  | Yes  | Yes  | Yes  | Yes  | Logic, distributed  | No
MATLAB | Highly domain-specific, numerical computing  | Yes  | Yes  | No  | Yes  | No  | No  |  | No
Modula-2 | Application, system  | Yes  | No  | No  | No  | Yes  | No  |  | Yes
1996, ISO[41]
Modula-3 | Application  | Yes  | Yes  | No  | No  | Yes  | No  |  | No
MUMPS (M)  | General, application, databases  | Yes  | Approved for next Standard  | No  | Yes  | Partially Thru Indirection and Xecute  | Yes  | Concurrent, multi-user, NoSQL, transaction processing | Yes
1977 ANSI, 1995, ISO 2020
Nim | Application, general, web, scripting, system  | Yes  | Yes  | Yes  | Yes  | Yes  | Yes  | Multiple dispatch, concurrent, meta | No
Oberon | Application, system  | Yes  | Yes  | No  | No  | No  | No  |  | No
Object Pascal | Application, general, mobile app, web  | Yes  | Yes  | No  | Yes  | Yes  | Yes  | Structured  | No
Objective-C | Application, general  | Yes  | Yes  | No  | Yes  | No  | Yes  | Concurrent  | No
OCaml | Application, general  | Yes  | Yes  | Yes  | Yes  | Yes  | No  |  | No
Occam | General  | Yes  | No  | No  | Yes  | No  | No  | Concurrent, process-oriented | No
Opa | Web applications  | Yes  | No  | Yes  | No  | Yes  | No  | Distributed  | No
OpenLisp | General, Embedded Lisp Engine  | Yes  | Yes  | Yes  | No  | Yes  | No  |  | Optionally
ISLISP
Oxygene | Application  | Yes  | Yes  | No  | No  | Yes  | No  |  | No
Oz-Mozart | Application, distribution, education  | Yes  | Yes  | Yes  | No  | No  | No  | Concurrent, logic  | No
Pascal | Application, education  | Yes  | No  | No  | Yes  | No  | No  |  | Yes
1983, ISO[42]
Perl | Application, scripting, text processing, Web  | Yes  | Yes  | Yes  | Yes  | Yes  | Yes  |  | No
PHP | Server-side, web application, web  | Yes  | Yes[43] | Yes[44] | Yes  | No  | Yes  |  | De facto
standard via language specification and Requests for Comments (RFCs)
PL/I  | Application  | Yes  | Yes  | No  | Yes  | No  | No  |  | Yes
1969, ECMA-50 (1976)
Plus | Application, system development  | Yes  | No  | No  | Yes  | No  | No  |  | No
PostScript | Graphics, page description  | Yes  | No  | No  | Yes  | No  | No  | Concatenative, stack-oriented | De facto
standard via the PostScript Reference Manual[45]
PowerShell  | Administration, application, general, scripting  | Yes  | Yes  | Yes  | Yes  | No  | Yes  | Pipeline  | No
Prolog | Application, artificial intelligence  | No  | No  | Yes  | Yes  | No  | Yes  | Logic, declarative  | Yes
1995, ISO/IEC 13211-1:1995, TC1 2007, TC2 2012, TC3 2017
PureBasic | Application  | Yes  | No  | No  | Yes  | No  | No  |  | No
Python | Application, general, web, scripting, artificial intelligence, scientific computing  | Yes  | Yes  | Yes  | Yes  | Yes  | Yes  | Aspect-oriented  | De facto
standard via Python Enhancement Proposals (PEPs)
R | Application, statistics  | Yes  | Yes  | Yes  | Yes  | No  | Yes  |  | No
Racket | Education, general, scripting  | Yes  | Yes  | Yes  | Yes  | No  | Yes  | Modular, logic, meta  | No
Raku | Scripting, text processing, glue  | Yes  | Yes  | Yes  | Yes  | Yes  | Yes  | Aspect-oriented, array, lazy evaluation, multiple dispatch, metaprogramming  | No
REALbasic  | Application  | No  | No  | No  | Yes  | No  | No  |  | Unknown
Rebol | Distributed  | Yes  | Yes  | Yes  | Yes  | No  | Yes  | Dialected  | No
REXX  | Scripting  | Yes  | Yes (NetRexx and Object REXX dialects)  | No  | Yes  | No  | No  |  | Yes
1996 (ANSI X3.274-1996)
RPG | Application, system  | Yes  | No  | No  | Yes  | No  | No  |  | No
Ruby | Application, scripting, web  | Yes  | Yes  | Yes  | No  | No  | Yes  | Aspect-oriented  | Yes
2011(JIS X 3017), 2012(ISO/IEC 30170)
Rust | Application, server-side, system, web  | Yes  | Can be viewed as[46] | Yes  | Yes  | Yes  | No[47] | Concurrent  | De facto standard by the official Rust releases
S | Application, statistics  | Yes  | Yes  | Yes  | Yes  | No  | No  |  | No
S-Lang | Application, numerical, scripting  | Yes  | No  | No  | Yes  | No  | No  |  | No
Scala | Application, general, parallel, distributed, web  | Yes  | Yes  | Yes  | No  | Yes  | Yes  | Data-oriented programming, metaprogramming  | De facto
standard via Scala Language Specification (SLS)
Scheme | Education, general  | Yes  | No  | Yes  | No  | No  | No  | meta, extensible-syntax  | De facto
1975-2013, R0RS, R1RS, R2RS, R3RS, R4RS, R5RS, R6RS, R7RS Small Edition[48][49]
Seed7 | Application, general, scripting, web  | Yes  | Yes  | No  | No  | Yes  | Yes  | Multi-paradigm, extensible, structured  | No
Simula | Education, general  | Yes  | Yes  | No  | No  | No  | No  | discrete event simulation, multi-threaded (quasi-parallel) program execution  | Yes
1968
Small Basic | Application, education, games  | Yes  | No  | No  | No  | No  | No  | Component-oriented  | No
Smalltalk | Application, general, business, artificial intelligence, education, web  | Yes  | Yes  | Yes  | Yes  | No  | Yes  | Concurrent, declarative  | Yes
1998, ANSI
SNOBOL | Text processing  | No  | No  | No  | No  | No  | No  |  | Unknown
Splice  | Embedded, general, portabillity  | Yes  | No  | No  | Yes  | No  | No  | Bytecode VM  | No
Standard ML | Application  | Yes  | No  | Yes  | No  | Yes  | No  |  | Yes
1997, SML '97[50]
Swift | Application, general  | Yes  | Yes  | Yes  | Yes  | Yes  | Yes  | Concurrent, declarative, protocol-oriented | No
Tcl  | Application, scripting, web  | Yes  | Yes  | Yes  | Yes  | No  | Yes  |  | No
V (Vlang) | Application, general, system, game, web, server-side  | Yes  | Can be viewed as  | Can be viewed as  | Yes  | Yes  | Yes  | Concurrent  | No
Visual Basic | Application, RAD, education, business, general, (Includes VBA), office automation  | Yes  | Yes  | No  | Yes  | Yes  | No  | Component-oriented  | No
Visual Basic .NET | Application, RAD, education, web, business, general  | Yes  | Yes  | Yes  | Yes  | Yes  | Yes  | Structured, concurrent  | No
Visual FoxPro | Application  | Yes  | Yes  | No  | Yes  | No  | No  | Data-centric, logic  | No
Visual Prolog | Application  | Yes  | Yes  | Yes  | No  | No  | No  | Declarative, logic  | No
Wolfram Language | Symbolic language  | Yes  | No  | Yes  | Yes  | Yes  | Yes  | Logic, distributed  | No
XL |  | Yes  | Yes  | No  | No  | No  | No  | concept programming  | No
Xojo | Application, RAD, general, web  | Yes  | Yes  | No  | Yes  | No  | Yes  |  | No
XPath/XQuery | Databases, data processing, scripting  | No  | No  | Yes  | No  | No  | No  | Tree-oriented | Yes
1999 W3C XPath 1, 2010 W3C XQuery 1, 2014 W3C XPath/XQuery 3.0
Zeek | Domain-specific, application  | Yes  | No  | No  | No  | No  | No  |  | No
Zig | Application, general, system  | Yes  | No  | Yes  | Yes  | Yes  | Yes  | Concurrent  | No
Zsh | Shell, scripting | Yes  | No  | No  | Yes  | No  | No  | Loadable modules  | Optionally
POSIX.2[13]

## Type systems

Main article: Comparison of programming languages by type system

## 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 (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 programmers explicitly add checks for these kinds of errors. Psychologically, different cognitive biases (e.g., optimism bias) may affect novices and experts alike and lead them to skip these checks. This can lead to erroneous behavior.

Failsafe I/O is a feature of 1C:Enterprise, Ada (exceptions), ALGOL (exceptions or return value depending on function), Ballerina, C#, Common Lisp ("conditions and restarts" system), Curry, D (throwing on failure),[51] Erlang, Fortran, Go (unless result explicitly ignored), Gosu, Harbour, Haskell, ISLISP, Java, Julia, Kotlin, LabVIEW, Mathematica, Objective-C (exceptions), OCaml (exceptions), OpenLisp, PHP, Python, Raku, Rebol, Rexx (with optional signal on... trap handling), Ruby, Rust (unless result explicitly ignored), Scala,[52] Smalltalk, Standard ML , Swift ≥ 2.0 (exceptions), Tcl, Visual Basic, Visual Basic (.NET), Visual Prolog, Wolfram Language, Xojo, XPath/XQuery (exceptions), and Zeek.

No Failsafe I/O: AutoHotkey (global ErrorLevel must be explicitly checked), C,[53] COBOL, Eiffel (it actually depends on the library and it is not defined by the language), GLBasic (will generally cause program to crash), RPG, Lua (some functions do not warn or throw exceptions), and Perl.[54]

Some I/O checking is built in C++ (STL iostreams throw on failure but C APIs like stdio or POSIX do not)[53] and Object Pascal, in Bash[55] it is optional.

## Expressiveness

Language  | Statements ratio[56] | Lines ratio[57]

|
|

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 | 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.[58] 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.[59]

## Benchmarks

Barplot of log-time to produce a 16002 Mandelbrot[60] as reported in The Benchmarks Game[61]

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.[62]

## Timeline of specific language comparisons

* 1974 – Comparative Notes on Algol 68 and PL/I[63] – S. H. Valentine – November 1974
* 1976 – Evaluation of ALGOL 68, JOVIAL J3B, Pascal, Simula 67, and TACPOL Versus TINMAN – Requirements for a Common High Order Programming Language.
* 1977 – A comparison of PASCAL and ALGOL 68[64] – Andrew S. Tanenbaum – June 1977.
* 1993 – Five Little Languages and How They Grew – BLISS, Pascal, ALGOL 68, BCPL & C – Dennis M. Ritchie – April 1993.
* 2009 – On Go – oh, go on – How well will Google's Go stand up against Brand X programming language? – David Given – November 2009

## See also

To display all pages, subcategories and images click on the "►":

Lists of programming languages (20 P)

List of programming languages

List of programming languages by type

Lists of programming languages

List of programming languages for artificial intelligence

List of audio programming languages

List of BASIC dialects

List of C-family programming languages

List of CLI languages

List of concurrent and parallel programming languages

List of educational programming languages

Generational list of programming languages

List of JVM languages

List of Lisp-family programming languages

Software:List of open-source programming languages

Non-English-based programming languages

List of object-oriented programming languages

Comparison of open-source programming language licensing

List of reflective programming languages and platforms

Timeline of programming languages

Unisys MCP programming languages

* Comparison of programming languages (basic instructions)
* Comparison of programming languages (syntax)
* Comparison of integrated development environments
* Comparison of multi-paradigm programming languages
* TIOBE index

## References

1. ↑ As of May 2006 Diarmuid Pigott's Encyclopedia of Computer Languages hosted at Murdoch University, Australia lists 8512 computer languages.
2. ↑ Ada Reference Manual, ISO/IEC 8652:2005(E) Ed. 3, 3.9 Tagged Types and Type Extensions
3. ↑ Ada Reference Manual, ISO/IEC 8652:2005(E) Ed. 3, Section 6: Subprograms
4. ↑ Ada Reference Manual, ISO/IEC 8652:2005(E) Ed. 3, Section 12: Generic Units
5. ↑ Ada Reference Manual, ISO/IEC 8652:2005(E) Ed. 3, Section 9: Tasks and Synchronization
6. ↑ "Distributed Systems". https://www.adaic.org/resources/add_content/standards/05rm/html/RM-E.html.
7. ↑ "Vak.ru". http://vak.ru/lib/exe/fetch.php/book/gost/pdf/gost-27831-88.pdf.
8. ↑ "ISO/IEC JTC1/SC22/WG6 - Algol". https://www.open-std.org/jtc1/sc22/docs/oldwgs/wg6.html.
9. ↑ "Vak.ru". http://vak.ru/lib/exe/fetch.php/book/gost/pdf/gost-27974-88.pdf.
10. ↑ "IEEE Standards Association". https://standards.ieee.org/ieee/694/950/.
11. ↑ "Objects - Definition & Usage". https://www.autohotkey.com/docs/Objects.htm.
12. ↑ "Ballerina Language Specification". WSO2. 2018-05-01. https://ballerina.io/res/Ballerina-Language-Specification-WD-2015-05-01.pdf.
13. ↑ 13.0 13.1 13.2 POSIX.2, Shell and Utilities, Command Interpreter (IEEE Std 1003.2-1992.)
14. ↑ "The Java Community Process(SM) Program - JSRs: Java Specification Requests - detail JSR# 274". https://jcp.org/en/jsr/detail?id=274.
15. ↑ "Chistory". https://www.bell-labs.com/usr/dmr/www/chist.html.
16. ↑ "ISO/IEC JTC1/SC22/WG14 - C". https://www.open-std.org/JTC1/SC22/WG14/.
17. ↑ "ISO/IEC JTC1/SC22/WG21 - The C++ Standards Committee - ISOCPP". https://www.open-std.org/JTC1/SC22/WG21/.
18. ↑ "Codeproject.com: Functional Programming in C# 3.0 using Lambda Expression". http://www.codeproject.com/KB/cs/intro_functional_csharp.aspx.
19. ↑ ECMA-334; ISO/IEC 23270:2006
20. ↑ "Clarion - Home". https://www.softvelocity.com/.
21. ↑ "Crystal". 2 November 2021. https://github.com/crystal-lang/crystal#why.
22. ↑ "Crystal Generics". 13 April 2024. https://crystal-lang.org/reference/1.12/syntax_and_semantics/generics.html.
23. ↑ "Concurrency - Crystal". https://crystal-lang.org/reference/1.11/guides/concurrency.html.
24. ↑ "Bertrand Meyer: Basic Eiffel language mechanisms". https://se.inf.ethz.ch/~meyer/publications/online/eiffel/basic.html.
25. ↑ Closure (computer programming)
26. ↑ ECMA-367; ISO/IEC 25436:2006
27. ↑ "Frequently Asked Questions (FAQ) - The Go Programming Language". https://go.dev/doc/faq.
28. ↑ "Codewalk: First-Class Functions in Go". https://go.dev/doc/codewalk/functions/. "Go supports first class functions, higher-order functions, user-defined function types, function literals, closures, and multiple return values. This rich feature set supports a functional programming style in a strongly typed language."
29. ↑ "The Java Community Process(SM) Program - JSRs: Java Specification Requests - detail JSR# 241". https://jcp.org/en/jsr/detail?id=241.
30. ↑ "The Haskell 2010 Language Report". http://www.haskell.org/onlinereport/haskell2010/. Most Haskell implementations extend the Haskell 2010 standard.
31. ↑ "Object-Oriented programming in julia". 4 June 2023. https://medium.com/@abhimanyuaryan/object-oriented-programming-in-julia-4dbde2661fde. "in Julia, Oriented programming is not the primary focus, instead it emphasizes multiple dispatches, a more general concept. Despite this, OOP can still be achieved in Julia through the use of composite types and methods."
32. ↑ "Julia Object Oriented Programming". 29 May 2021. https://dev.to/acmion/julia-object-oriented-programming-5dgh. "Julia does only partially support object oriented programming (OOP)"
33. ↑ "Julia Documentation · The Julia Language". https://docs.julialang.org/en/v1/.
34. ↑ "kotlin-script-examples/jvm/main-kts/MainKts.md at master · Kotlin/kotlin-script-examples". https://github.com/Kotlin/kotlin-script-examples/blob/master/jvm/main-kts/MainKts.md.
35. ↑ "Type-safe builders". https://kotlinlang.org/docs/type-safe-builders.html.
36. ↑ "M8 is out!". 2 July 2014. http://blog.jetbrains.com/kotlin/2014/07/m8-is-out/. "As a first peek into the future reflective capabilities of Kotlin, you can now access properties as first-class objects in Kotlin"
37. ↑ "Coroutines". https://kotlinlang.org/docs/coroutines-overview.html.
38. ↑ Halcyon (Inworldz) and Open Sims propose compatible implementations with additional functions.
39. ↑ Lua has no explicit "object" type (more general type of "table" is used for object definition), but does have explicit syntax for object method calling
40. ↑ Version releases are accompanied with a definitive Lua Reference Manual showing full syntax and semantics; a reference implementation, and a test suite. These are used to generate other Lua VM implementations and compilers such as Kahlua and LLVM-Lua.
41. ↑ ISO/IEC 10514-1:1996
42. ↑ ISO 7185
43. ↑ PHP Manual, Chapter 19. Classes and Objects (PHP 5),
44. ↑ PHP Manual, Chapter 17. Functions
45. ↑ "PostScript Language Reference Manual". https://www.adobe.com/products/postscript/pdfs/PLRM.pdf.
46. ↑ "Object-Oriented Programming Features". https://doc.rust-lang.org/book/ch17-00-oop.html.
47. ↑ Klabnik, Steve; Nichols, Carol. "Macros". The Rust Programming Language. https://doc.rust-lang.org/book/ch19-06-macros.html.
48. ↑ "Scheme Standards". https://standards.scheme.org/.
49. ↑ "Scheme Standards". https://standards.scheme.org/early/.
50. ↑ "SML '97". http://www.smlnj.org/sml97.html.
51. ↑ "std.stdio - D Programming Language". https://dlang.org/phobos/std_stdio.html.
52. ↑ Scala runs on the Java Virtual Machine from which it inherits the runtime exception handling.
53. ↑ 53.0 53.1 gcc can warn on unchecked errno. Newer versions of Visual Studio usually throw exceptions on failed I/O when using stdio.
54. ↑ Considerable error checking can be enabled optionally, but by default Perl is not failsafe.
55. ↑ `set -e` enables termination if any unchecked exit status is nonzero.
56. ↑ Data from McConnell, Steve (30 November 2009). Code Complete. Microsoft Press. p. 100. ISBN 9780735636972. https://books.google.com/books?id=3JfE7TGUwvgC&pg=PT100. The Statements ratio column "shows typical ratios of source statements in several high-level languages to the equivalent code in C. A higher ratio means that each line of code in the language listed accomplishes more than does each line of code in C.
57. ↑ The ratio of line count tests won by each language to the number won by C when using the Compare to feature at McLoone, Jon (November 14, 2012). "Code Length Measured in 14 Languages". https://blog.wolfram.com/2012/11/14/code-length-measured-in-14-languages/. C gcc was used for C, C++ g++ was used for C++, FORTRAN G95 was used for FORTRAN, Java JDK Server was used for Java, and Smalltalk GST was used for Smalltalk.
58. ↑ Felleisen, Matthias. "On the Expressive Power of Programming Languages". ESOP '90 3rd European Symposium on Programming.
59. ↑ "How programs are measured". https://benchmarksgame-team.pages.debian.net/benchmarksgame/how-programs-are-measured.html#source-code.
60. ↑ Mandelbrot, Benoit B. (1982). The fractal geometry of nature (Revised ed.). San Francisco. ISBN 0-7167-1186-9. OCLC 7876824.
61. ↑ "Mandelbrot". https://benchmarksgame-team.pages.debian.net/benchmarksgame/performance/mandelbrot.html.
62. ↑ "The Ultimate Benchmark". https://benchmarksgame-team.pages.debian.net/benchmarksgame/dont-jump-to-conclusions.html.
63. ↑ Valentine, S. H. (November 1974). "Comparative Notes on Algol 68 and PL/I". The Computer Journal 17 (4): 325–331. doi:10.1093/comjnl/17.4.325.
64. ↑ "Vrije Universiteit Amsterdam". http://dare.ubvu.vu.nl/bitstream/1871/2609/1/11054.pdf.

## Further reading

* Cezzar, Ruknet (1995). A Guide to Programming Languages: Overview and Comparison. Artech House. ISBN 978-0-89006-812-0. https://archive.org/details/authenticationsy0000oppl.

* v
* t
* e

Programming languages

* Comparison
* Timeline
* History

* APL
* Assembly
* BASIC
* C
* C++
* C#
* COBOL
* Elixir
* Fortran
* Go
* Groovy
* Haskell
* Java
* JavaScript (JS)
* Julia
* Kotlin
* Lisp
* Lua
* MATLAB
* Objective-C
* OCaml
* Pascal
* Perl
* PHP
* Python
* R
* Ruby
* Rust
* Scala
* Shell
* Smalltalk
* Swift
* TypeScript
* Visual Basic .NET (VB.NET)
* more...

* Category
* Lists
* Alphabetical
* Categorical
* Generational
* Non-English-based

0.00

(0 votes)

Original source: https://en.wikipedia.org/wiki/Comparison of programming languages. Read more

|

Retrieved from "https://handwiki.org/wiki/index.php?title=Comparison_of_programming_languages&oldid=4347053"
*[v]: View this template
*[t]: Discuss this template
*[e]: Edit this template