Английская Википедия:Comparison of programming languages

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Шаблон:Short description Шаблон:ProgLangCompare 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.

Шаблон:-

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 programming, diagrammatic / visual programming Шаблон:Maybe
standard via Ballerina Language Specification[12]
Bash Shell, scripting Шаблон:Yes Шаблон:No Шаблон:No Шаблон:Yes Шаблон:No Шаблон:No Шаблон:Maybe
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 Шаблон:No Шаблон: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[17]
C# Application, RAD, business, client-side, general, server-side, web, game programming Шаблон:Yes Шаблон:Yes Шаблон:Yes[18] Шаблон:Yes Шаблон:Yes Шаблон:Yes Structured, concurrent Шаблон:Yes
2000, ECMA, ISO[19]
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
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 Шаблон:No Шаблон:No Alpha stage[22] Шаблон:No
Curry Application Шаблон:No Шаблон:No Шаблон:Yes Шаблон:No Шаблон:Yes Шаблон:No lazy evaluation, non-determinism Шаблон:Maybe 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
?


Dylan Application Шаблон:No Шаблон:Yes Шаблон:Yes Шаблон:No Шаблон:No Шаблон:No Шаблон:No
Eiffel General, application, business, client-side, server-side, web (EWF) Шаблон:Yes Шаблон:Yes Шаблон:Yes[23][24] Шаблон:No Шаблон:Yes Шаблон:Yes Erl-G Distributed SCOOP, Void-safe Шаблон:Yes
2005, ECMA, ISO[25]
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 Шаблон:Maybe Шаблон: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 Шаблон:Yes Шаблон: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 Шаблон:Maybe[26] Шаблон:No Шаблон:Yes Шаблон:Yes Шаблон:Yes Concurrent Шаблон:Maybe 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, JCP[27]
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[28]
Haxe Application, general, web Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:No Шаблон:Yes Шаблон:Yes Шаблон:No
HyperNext Application, education Шаблон:No Шаблон:No Шаблон:No Шаблон:Yes Шаблон:No Шаблон:No Weakly typed Шаблон: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 Шаблон:Maybe standard via Java Language Specification
JavaScript Client-side, server-side, web Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:No Шаблон:Yes prototype-based Шаблон:Yes
1997-2022, ECMA-262
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 Шаблон:No Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Multiple dispatch, meta, scalar and array-oriented, parallel, concurrent, distributed ("cloud") Шаблон:No
K Data processing, business Шаблон:No Шаблон:No Шаблон:No Шаблон:No Шаблон:No Шаблон:No Array-oriented, tacit Шаблон:Unknown
Kotlin Application, mobile development, server-side, client-side, web Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes[29] Шаблон:Maybe standard via Kotlin Language Specification
Ksh Shell, scripting Шаблон:Yes Шаблон:Yes Шаблон:No Шаблон:Yes Шаблон:No Шаблон:No Several variants, custom programmable, dynamic loadable modules Шаблон:Maybe
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 Шаблон:Maybe reference is the Second Life implementation of LSL.[30]
Lua Application, embedded scripting Шаблон:Yes Шаблон:Yes[31] Шаблон:Yes Шаблон:Yes Шаблон:No Шаблон:Yes Aspect-oriented, prototype-based Шаблон:No[32]
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[33]
Modula-3 Application Шаблон:Yes Шаблон:Yes Шаблон:No Шаблон:No Шаблон:Yes Шаблон:No Шаблон:No
MUMPS (M) General, application, databases Шаблон:Yes Шаблон:Planned Шаблон:No Шаблон:Yes Шаблон:Some 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 Шаблон:Maybe
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[34]
Perl Application, scripting, text processing, Web Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:No
PHP Server-side, web application, web Шаблон:Yes Шаблон:Yes[35] Шаблон:Yes[36] Шаблон:Yes Шаблон:No Шаблон:Yes Шаблон:Maybe 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 Шаблон:Maybe standard via the PostScript Reference Manual[37]
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 Шаблон:No Шаблон:No Шаблон:No Шаблон:Yes Шаблон:No Шаблон:No Шаблон:No
Python Application, general, web, scripting, artificial intelligence, scientific computing Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Aspect-oriented Шаблон:Maybe 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
Ring Application Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes metaprogramming, declarative, natural-language Шаблон: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 Шаблон:Yes[38] Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:No[39] Concurrent Шаблон:No
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 Шаблон:Maybe standard via Scala Language Specification (SLS)
Scheme Education, general Шаблон:Yes Шаблон:No Шаблон:Yes Шаблон:No Шаблон:No Шаблон:No meta, extensible-syntax Шаблон:Maybe
1975-2013, R0RS, R1RS, R2RS, R3RS, R4RS, R5RS, R6RS, R7RS Small Edition [40][41]
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
Standard ML Application Шаблон:Yes Шаблон:No Шаблон:Yes Шаблон:No Шаблон:Yes Шаблон:No Шаблон:Yes
1997, SML '97[42]
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 Шаблон:Maybe Шаблон:Maybe Шаблон:Yes Шаблон:Yes Шаблон:Yes Concurrent Шаблон:No
Visual Basic Application, RAD, education, business, general, (Includes VBA), office automation Шаблон:Yes Шаблон:Yes Шаблон:No Шаблон:No Шаблон:Yes Шаблон:No Component-oriented Шаблон:No
Шаблон:Nowrap 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 Шаблон:Yes Шаблон: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 Шаблон:Maybe
POSIX.2[13]

Type systems

Шаблон:Main

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),[43] 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), Ring, Ruby, Rust (unless result explicitly ignored), Scala,[44] Smalltalk, Standard ML Шаблон:Citation needed, 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,[45] 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.[46]

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

Expressiveness

Language Statements ratio[48] Lines ratio[49]
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.[50] 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.[51] Шаблон:-

Benchmarks

Файл:Barplot language speeds (Benchmarks Game Mandelbrot).svg
Barplot of log-time to produce a 1600² Mandelbrot[52] as reported in The Benchmarks Game[53]

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

Timeline of specific language comparisons

  • 1974 – Comparative Notes on Algol 68 and PL/I[55] – 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[56]Andrew S. Tanenbaum – June 1977.
  • 1993 – Five Little Languages and How They Grew – BLISS, Pascal, ALGOL 68, BCPL & CDennis 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

Шаблон:Category tree all

References

Шаблон:Reflist

Further reading

Шаблон:Programming languages

  1. As of May 2006 Diarmuid Pigott's Encyclopedia of Computer Languages Шаблон:Webarchive 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. Ada Reference Manual, ISO/IEC 8652:2005(E) Ed. 3 Annex E: Distributed Systems
  7. Шаблон:Cite web
  8. ISO 1538:1984
  9. Шаблон:Cite web
  10. IEEE 694-1985
  11. Objects - Definition & Usage
  12. Шаблон:Cite web
  13. 13,0 13,1 13,2 POSIX.2, Shell and Utilities, Command Interpreter (IEEE Std 1003.2-1992.)
  14. JSR 274
  15. bell-labs.com
  16. ANSI C89, ISO/IEC 9899:1990, 1999, 2011, 2018
  17. ISO/IEC 14882:1998, 2003, 2011, 2014, 2017, 2020
  18. Codeproject.com: Functional Programming in C# 3.0 using Lambda Expression
  19. ECMA-334; ISO/IEC 23270:2006
  20. Softvelocity.com
  21. Шаблон:Cite web
  22. Шаблон:Cite web
  23. Basic Eiffel language mechanisms
  24. Closure (computer programming)
  25. ECMA-367; ISO/IEC 25436:2006
  26. The Go Programming Language (FAQ)
  27. JSR 241
  28. Шаблон:Cite web Most Haskell implementations extend the Haskell 2010 standard.
  29. Шаблон:Cite web
  30. Halcyon (Inworldz) and Open Sims propose compatible implementations with additional functions.
  31. Lua does not have explicit "object" type (more general type of "table" is used for object definition), but does have explicit syntax for object method calling
  32. 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.
  33. ISO/IEC 10514-1:1996
  34. ISO 7185
  35. PHP Manual, Chapter 19. Classes and Objects (PHP 5),
  36. PHP Manual, Chapter 17. Functions
  37. Шаблон:Cite web
  38. Is Rust an Object-Oriented Programming Language?
  39. Шаблон:Cite book
  40. R3RS, R4RS, R5RS, R6RS, R7RS Small Edition
  41. R0RS, R1RS, R2RS
  42. SMLNJ.org
  43. Шаблон:Cite web
  44. Scala runs on the Java Virtual Machine from which it inherits the runtime exception handling.
  45. 45,0 45,1 gcc can warn on unchecked errno. Newer versions of Visual Studio usually throw exceptions on failed I/O when using stdio.
  46. Considerable error checking can be enabled optionally, but by default Perl is not failsafe.
  47. set -e enables termination if any unchecked exit status is nonzero.
  48. Data from Шаблон:Cite book 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.
  49. The ratio of line count tests won by each language to the number won by C when using the Compare to feature at Шаблон:Cite web 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.
  50. Шаблон:Cite conference
  51. Шаблон:Cite web
  52. Шаблон:Cite book
  53. Шаблон:Cite web
  54. Шаблон:Cite web
  55. Шаблон:Cite journal
  56. Шаблон:Cite web