Loading AI tools
стаття-список у проєкті Вікімедіа З Вікіпедії, вільної енциклопедії
Мови програмування використовуються для управління поведінкою машини (частіше комп'ютера). Як і людські мови, мови програмування відповідають правилам синтаксису і семантики. Зараз існують тисячі мов програмування і щороку створюються нові. З цих мов не всі стають популярними, деякі з них просто використовуються невеликою кількістю людей, але професійні програмісти можуть користуватися десятками мов у своїй кар'єрі.
У таблиці порівнюється загальна і технічна інформація для вибору частіше використовуваних мов програмування. Увага! У цій таблиці можуть бути відсутні деякі відомості.
Мова | Передбачуване використання | Імперативне | Об'єктно-орієнтоване | Функційне | Процедурне | Узагальнене | Рефлективне | Подійно-орієнтоване | Інші парадигми | Стандартизована? |
---|---|---|---|---|---|---|---|---|---|---|
ActionScript 3.0 | Застосунки, клієнт-сервер, веб | X | X | X | 1996, ECMA | |||||
Ada | Застосунки, вбудовані системи, системи реального часу, системне програмування | X | X | X[1] | X[2] | паралельні,[3] розподілені[4] обчислення | 1983, 2005, 2012, ANSI, ISO, ГОСТ 27831-88[5] | |||
Aldor[en] | Предметно-орієнтована, символьні обчислення | X | X | X | Ні | |||||
ALGOL 58[en] | Застосунки | X | Ні | |||||||
ALGOL 60[en] | Застосунки | X | 1960, IFIP WG 2.1, ISO[6] | |||||||
ALGOL 68[en] | Застосунки | X | паралельні обчислення | 1968, IFIP WG 2.1, GOST 27974-88,[7] | ||||||
Ateji PX[en] | Паралельні застосунки | X | пі-числення | Ні | ||||||
APL | Застосунки, обробка даних | масиво-орієнтоване, «мовчазне» програмування | 1989, ISO | |||||||
Мова асемблера | Загального призначення | X | Будь-яке, синтаксис зазвичай дуже специфічний, пов'язаний з цільовим процесором | Ні | ||||||
AutoHotkey | Автоматизація графічного інтерфейса, дуже специфічна для предметної області | X | Ні | |||||||
AutoIt | Автоматизація графічного інтерфейса, дуже специфічна для предметної області | X | X | X | Ні | |||||
BASIC | Застосунки, навчання | X | X | 1983, ANSI, ISO | ||||||
BeanShell | Застосунки, написання скриптів | X | X | X | X | In progress, JCP[8] | ||||
BLISS[en] | Системне програмування | X | Ні | |||||||
BlitzMax[en] | Застосунки, ігри | X | X | X | Ні | |||||
Boo | Застосунки | Ні | ||||||||
Bro | Специфічна для предметної області, застосунки | X | X | Ні | ||||||
C | Застосунки, системне програмування,[9] загального призначення, низькорівневі операції | X | X | 1989, ANSI C89, ISO C90, ISO C99, ISO C11[10] | ||||||
C++ | Застосунки, системне програмування | X | X | X | X | X | 1998, ISO/IEC 1998, ISO/IEC 2003, ISO/IEC 2011[11] | |||
C# | Застосунки, RAD, бізнес-логіка, клієнтська сторона, загального призначення, серверна сторона, Web, роботи | X | X | X[12] | X | X | X | структурне, конкурентне | 2000, ECMA, ISO[13] | |
Clarion[en] | Загального призначення, бізнес-логіка, Web | X | X | X[14] | Невідомий | |||||
Clean[en] | Загального призначення | X | X | Ні | ||||||
Clojure | Загального призначення | X | конкурентне | Ні | ||||||
CLU | Загального призначення | X | X | X | X | Ні | ||||
COBOL | Застосунки, бізнес-логіка | X | X | X | ANSI X3.23 1968, 1974, 1985; ISO/IEC 1989:1985, 2002, 2014 | |||||
Cobra | Застосунки, бізнес-логіка, загального призначення, Web | X | X | X | X | X | Ні | |||
ColdFusion[en] (CFML) | Web | X | X | Ні | ||||||
Common Lisp | Загального призначення | X | X | X | X | X | 1994, ANSI | |||
Мова | Intended use | Імперативне | Об'єктно-орієнтоване | Функційне | Процедурне | Узагальнене | Рефлективне | Подійно-орієнтоване | Інші парадигми | Стандартизована? |
COMAL 80 | Навчання | X | X | Ні | ||||||
Crystal 1.0.0 | Навчання | X | X | X | Ні | |||||
Cython | Застосунки, загального призначення, обчислення | X | X | X | X | Аспектно-орієнтоване | Ні | |||
D | Застосунки, системне програмування | X | X | X | X | генеративне, конкурентне | Ні | |||
Dart | Застосунки, Web | X | X | структурне | Ні | |||||
Dylan | Застосунки | X | X | Ні | ||||||
Eiffel | Застосунки | X | X | X | 2005, ECMA, ISO[15] | |||||
Erlang | Застосунки, розподілене, телеком | X | конкурентне, розподілене | Ні | ||||||
Euphoria[en] | Застосунки. Оскільки інтерпретатор є спільним для коду системи та програми, система не є цільовим використанням, оскільки збої програми вплинуть на всю систему. | X | X | Ні | ||||||
Factor[en] | стекова | Ні | ||||||||
FP[en] | X | Ні | ||||||||
F# | Застосунки | X | X | X | X | Ні | ||||
Forth | Загального призначення | X | стекове | 1994, ANSI | ||||||
Fortran | Застосунки, обчислення | X | X | X | X | 1966, ANSI 66, ANSI 77, MIL-STD-1753, ISO 90, ISO 95, ISO 2003, ISO/IEC 1539-1:2010 (2008) | ||||
FreeBASIC | Застосунки, обчислення | X | X | X | X | Ні | ||||
G2 | Застосунки, висновування, експертні системи | X | X | X | загальне графічне середовище розробки та виконання | Ні | ||||
Gambas | Застосунки | X | X | X | Ні | |||||
Game Maker Language | Застосунки, ігри | X | X | X | Ні | |||||
GLBasic[en] | Застосунки, ігри | X | X | X | просте об'єктно-орієнтоване | Ні | ||||
Go | Застосунки, системне програмування | X | конкурентне | Ні | ||||||
Gosu[en] | Застосунки, загального призначення, написання скриптів, Web | X | X | X | X | Ні | ||||
GraphTalk | Застосунки | X | логічне | Ні | ||||||
Groovy | Застосунки, загального призначення, написання скриптів, Web | X | X | X | Аспектно-орієнтоване | In progress, JCP[16] | ||||
Harbour[en] | Застосунки, бізнес-логіка, обробка даних, загального призначення, Web | X | X | X | X | X | X | декларативне | Ні | |
Haskell | Застосунки | X | X | ліниві обчислення | 2010, Haskell 2010[17] | |||||
Haxe | Застосунки, загального призначення, Web | X | X | X | X | X | Ні | |||
HyperTalk[en] | Застосунки, RAD, загального призначення | X | X | слабко типізована | Невідомо | |||||
Io[en] | Застосунки, host-driven scripting | X | X | Ні | ||||||
Мова | Intended use | Імперативне | Об'єктно-орієнтоване | Функційне | Процедурне | Узагальнене | Рефлективне | Подійно-орієнтоване | Інші парадигми | Стандартизована? |
ISLISP[en] | Загального призначення | X | X | X | X | 1997, ISO | ||||
J | Обробка даних | масиво-орієнтоване, комбінаторне, безточкове | Ні | |||||||
JADE | Застосунки, розподілене | X | X | Ні | ||||||
Java | Застосунки, бізнес-логіка, клієнтська сторона, загального призначення, серверна сторона, Web | X | X | X | X | конкурентне | De facto стандарт за Java Language Specification | |||
JavaScript | Клієнтська сторона, серверна сторона, Web | X | X | X | X | Прототипне | 1997, ECMA | |||
Joy[en] | Дослідження | X | стекова | Ні | ||||||
K | Обробка даних, бізнес-логіка | масиво-орієнтоване, безточкове | Невідомо | |||||||
Kotlin | Застосунки, мобільні застосунки, серверна сторона, клієнтська сторона, Web (JavaScript, HTML, CSS) | X | X | X | X | |||||
LabVIEW (G) | Застосунки, промислове моделювання і автоматизація | програмування потоків даних, візуальне | Ні | |||||||
Lisp | Загального призначення | X | Невідомо | |||||||
Livecode[en] | Застосунки, RAD, загального призначення | X | X | слабко типізована | Ні | |||||
Logtalk[en] | Штучний інтелект, застосунки | X | X | X | логічне | Ні | ||||
Lua | Застосунки, embedded scripting | X | X[18] | X | X | X | Аспектно-орієнтоване | Ні[19] | ||
Maple | Символьні обчислення, обчислення | X | X | X | X | розподілене | Ні | |||
Mathematica | Символьні обчислення | X | X | X | X | логічне, розподілене | Ні | |||
MATLAB | Дуже специфічна для предметної області, обчислення | X | X | X | Ні | |||||
Modula-2[en] | Застосунки, системне програмування | X | X | 1996, ISO[20] | ||||||
Modula-3[en] | Застосунки | X | X | X | Ні | |||||
Oberon | Застосунки, системне програмування | X | X | Ні | ||||||
Object Pascal (Delphi) | Застосунки, загального призначення, мобільні застосунки, Web | X | X | X | X | X | X | структурне | Ні | |
Objective-C | Застосунки, загального призначення | X | X | X | конкурентне | Ні | ||||
Occam | Загального призначення | X | X | конкурентне, process-oriented[en] | Ні | |||||
Opa | Веб-застосунки | X | X | X | розподілене | Ні | ||||
Oxygene | Застосунки | X | X | X | Ні | |||||
Oz[en] | Застосунки, розподілені обчислення, навчання | X | X | X | конкурентне, логічне | Ні | ||||
Pascal | Застосунки, навчання | X | X | 1983, ISO[21] | ||||||
Perl | Застосунки, написання скриптів, обробка текстів, Web | X | X | X | X | X | X | Ні | ||
PHP | Серверна сторона, веб-застосунки, Web | X | X[22] | X[23] | X | Ні | ||||
PL/I | Застосунки | X | X | X | 1969 | |||||
Мова | Intended use | Імперативне | Об'єктно-орієнтоване | Функційне | Процедурне | Узагальнене | [[[Рефлексія (програмування)|Рефлективне]] | Подійно-орієнтоване | Інші парадигми | Стандартизована? |
Plus[en] | Застосунки, розробка систем | X | X | Ні | ||||||
Prolog | Застосунки, штучний інтелект | логічне | 1995, ISO | |||||||
PureBasic[en] | Застосунки | X | Ні | |||||||
Python | Застосунки, загального призначення, Web, написання скриптів, ШІ, наукові обчислення | X | X | X | X | Аспектно-орієнтоване | Ні | |||
Racket | Навчання, загального призначення, написання скриптів | X | X | X | X | модульне, логічне, метапрограмування | Ні | |||
REALbasic[en] | Застосунки | X | Невідомо | |||||||
REBOL | розподілене | X | X | X | dialected[en] | Ні | ||||
IBM RPG | Застосунки, системне програмування | X | X | Ні | ||||||
Ruby | Застосунки, написання скриптів, Web | X | X | X | X | Аспектно-орієнтоване | 2011(JIS X 3017), 2012(ISO/IEC 30170) | |||
Rust | Застосунки, системне програмування | X | X | X | X | X | конкурентне | Ні | ||
S | Застосунки, статистика | X | X | X | X | Ні | ||||
S-Lang[en] | Застосунки, обчислення, написання скриптів | X | X | Ні | ||||||
Scala | Застосунки, розподілене, Web | X | X | X | X | X | X | De facto стандарт via Scala Language Specification (SLS) | ||
Scheme | Навчання, загального призначення | X | 1998, R6RS | |||||||
Seed7[en] | Застосунки, загального призначення, написання скриптів, Web | X | X | X | X | багатопарадигмальне, розширюване, структурне | Ні | |||
Simula | Навчання, загального призначення | X | X | X | Дискретно-подійне моделювання, багатопоточне (квазіпаралельне) виконання програм | 1968 | ||||
Small Basic | Застосунки, навчання, ігри | X | X | компонентно-орієнтоване | Ні | |||||
Smalltalk | Застосунки, навчання | X | X | X | конкурентне, декларативне | 1998, ANSI | ||||
SNOBOL | Обробка текстів | Невідомо | ||||||||
Standard ML | Застосунки | X | X | X | 1997, SML '97[24] | |||||
Swift | Застосунки, загального призначення | X | X | X | X | конкурентне | Ні | |||
Tcl | Застосунки, написання скриптів, Web | X | X | X | X | Ні | ||||
Visual Basic | Застосунки, RAD, навчання, бізнес-логіка, загального призначення, (включно з VBA), автоматизація офісних застосунків | X | X | X | компонентно-орієнтоване | Ні | ||||
Visual Basic .NET | Застосунки, RAD, навчання, Web, бізнес-логіка, загального призначення | X | X | X | X | X | Ні | |||
Visual FoxPro[en] | Застосунки | X | дата-центричне, логічне | Ні | ||||||
Visual Prolog[en] | Застосунки | X | X | X | X | декларативне, логічне | Ні | |||
Windows PowerShell | Системне адміністрування, скрипти | X | X | X | X | конвеєрне | Ні | |||
XL[en] | X | X | concept programming[en] | Ні | ||||||
Xojo[en] | Застосунки, RAD, загального призначення, Web | X | X | X | X | X | Ні | |||
Мова | Intended use | Імперативне | Об'єктно-орієнтоване | Функційне | Процедурне | Узагальнене | Рефлективне | Подійно-орієнтоване | Інші парадигми | Стандартизована? |
Номінальна система типів означає, що сумісність типізації та/або еквівалентність вирішується на основі очевидних оголошень та імен.
Структурна система типів оначає, що сумісність типізації та/або еквівалентність вирішується на основі визначення і характеристики типів.
Перевірка типів визначає, чи будуть перевіряються типи, як і коли.
Статична перевірка означає, що помилки типу повідомляються на основі тексту програми (вихідного коду). Динамічна перевірка означає, що помилки типу повідомляються на основі динаміки чи іншій програмі (під час виконання) поведінки.
Мова | Типобезпечність | Приведення типів | Сумісність та еквівалентність типів | Перевірка типів |
---|---|---|---|---|
ActionScript 3.0 | safe | неявне з можливим явним | Статична | |
Ada | safe[TS 1] | явне | номінальна | Статична |
Aldor[en] | unsafe | неявне | Статична | |
ALGOL 58[en] | safe | явне | Статична | |
ALGOL 60[en] | safe | явне | Статична | |
ALGOL 68[en] | safe | явне | структурна | Статична & tagged unions[en] |
APL | safe | Динамічна | ||
AutoHotkey | безтипова | n/a | n/a | n/a |
Ateji PX[en] | safe | явне | номінальна | Статична |
BASIC | safe | явне | номінальна | Статична |
BLISS[en] | typeless | n/a | n/a | n/a |
BeanShell | safe | номінальна | Динамічна | |
Boo | safe | неявне з можливим явним | Статична з опціональною динамічною | |
Bro | safe | неявне з можливим явним | номінальна | Статична |
C | unsafe | явне | номінальна | Статична |
C++ (ISO/IEC 14882) | unsafe | явне | номінальна | Статична[TS 2] |
C# | unsafe[TS 3] | неявне з можливим явним | номінальна | Статична[TS 4] |
Clean[en] | safe | неявне | Статична | |
Clojure | safe | неявне з можливим явним | Динамічна | |
COBOL | safe | явне | номінальна | Статична |
ColdFusion (CFML) | safe | неявне | Динамічна | |
Common Lisp | safe | неявне з можливим явним | Динамічна | |
Curl[en] | safe | номінальна | ||
Cython | safe | неявне з можливим явним | номінальна (розширені типи) і структурна (Python) | Динамічна з опціональною статичною |
D | unsafe[TS 3] | явне | номінальна | Статична |
Dylan | safe | Динамічна | ||
Dynace | safe | неявне | Динамічна | |
Eiffel | safe | номінальна | Статична | |
Erlang | safe | неявне | Динамічна | |
Euphoria[en] | safe | явне, з неявним для об'єктів | номінальна | Статична, динамічна для об'єктів |
F# | safe | неявне | номінальна | Статична |
Falcon | safe | неявне | структурна | Динамічна |
Forth | typeless | n/a | n/a | n/a |
Fortran | safe | явне[TS 5] | номінальна | Статична |
Gambas | safe | явне | номінальна | |
GLBasic[en] | safe | явне. Неявні оголошення можливі у налаштуваннях проєкта | номінальна | Статична |
Go[25] | safe | неявне з можливим явним | структурна | Статична |
Gosu[en] | safe | частково неявне (локальне приведення типів) | номінальна (subclassing) і структурна (структурна) | Статична |
Groovy | safe | неявне з можливим явним | Динамічна з опціональною статичною | |
Harbour[en] | safe | неявне з можливим явним | Динамічна | |
Haskell | safe | неявне з можливим явним | структурна | Статична |
Haxe | safe | неявне з можливим явним | номінальна (subclassing) і структурна (структурна) | Статична з опціональною динамічною |
Io[en] | safe | неявне | Динамічна | |
ISLISP[en] | safe | Динамічна | ||
J | safe | Динамічна | ||
Java | safe[26] | явне | номінальна | Статична |
JavaScript | safe | неявне | структурна | Динамічна |
Joy[en] | safe | Динамічна | ||
Kotlin | safe | частково неявне (локальне приведення типів) | номінальна | Статична |
LabVIEW | safe | |||
Lua | safe | неявне | Динамічна | |
Maple | safe | Динамічна | ||
Mathematica | safe | Динамічна | ||
MATLAB M-code | safe | Динамічна | ||
Modula-2[en] | unsafe[TS 3] | явне | номінальна | Статична |
Modula-3[en] | unsafe[TS 3] | явне | структурна | Статична |
Oberon | safe | явне | номінальна | Статична і частково динамічна[TS 6] |
Objective-C | safe | явне | номінальна | Динамічна з опціональною статичною[27] |
OCaml | safe | неявне з можливим явним | структурна | Статична |
Object Pascal (Delphi) | safe | явне | номінальна | Статична |
Opa | safe | неявне з можливим явним | структурна | Статична |
Oxygene | unsafe | неявне | Статична | |
Oz[en] | safe | неявне | структурна | Динамічна |
Pascal | unsafe[TS 3] | явне | номінальна | Статична |
Perl 5 | неявне | Динамічна | ||
Perl 6 | частково неявне[TS 7] | Динамічна з опціональною статичною | ||
PHP | неявне | Динамічна | ||
Plus[en] | safe | явне | структурна | Статична, динамічна (опціонально) |
Prolog | Динамічна | |||
Pure[en] | Динамічна | |||
Python | safe | неявне | структурна | Динамічна |
REBOL | safe | неявне | Динамічна | |
IBM RPG | unsafe | Статична | ||
Ruby | safe | неявне | структурна | Динамічна |
Rust | safe | неявне з можливим явним | Статична з опціональною динамічною | |
S | Динамічна | |||
S-Lang[en] | safe | неявне | Динамічна | |
Scala | safe | частково неявне (локальне приведення типів) | номінальна (subclassing) і структурна (структурна) | Статична |
Scheme | safe | неявне | Динамічна (прихована) | |
Seed7[en] | safe | явне | номінальна | Статична |
Simula | safe | Статична[TS 8] | ||
Smalltalk | safe | неявне | Динамічна | |
Stіard ML | safe | неявне з можливим явним | структурна | Статична |
Tcl | Динамічна | |||
Visual Basic | safe | неявне з можливим явним | номінальна | Статична |
Visual Basic .NET | unsafe[TS 3] | явне | Статична | |
Visual Prolog[en] | safe | частково неявне | номінальна | Статична |
Windows PowerShell | safe | неявне | Динамічна | |
XL[en] | safe | номінальна | Статична | |
Xojo[en] | safe | явне | номінальна | Статична |
Більшість мов програмування виводять повідомлення про помилки та/або винятки якщо операція не виконана. Нижче наведені мови виводять ці повідомлення.
Мова | Failsafe I/O |
---|---|
Ada | Так (винятки) |
ALGOL | Так (винятки або повернуті значення залежно від функції) |
AutoHotkey | Ні (має бути явно перевірена глобальна змінна ErrorLevel) |
Bro | Так |
C | Ні[FSIO 1] |
C++ | Ні[FSIO 2] |
C# | Так |
COBOL | Ні |
Common Lisp | Так |
D | Так[джерело?] |
Eiffel | Ні – залежить від бібліотеки і не визначено самою мовою |
Erlang | Так |
Falcon | Так |
Fortran | Так |
GLBasic[en] | Ні – у загальному випадку програма аварійно завершується |
Go | Ні |
Gosu[en] | Так |
Harbour[en] | Так |
Haskell | Так |
ISLISP[en] | Так |
Java | Так |
Kotlin | Так |
LabVIEW | Так |
Lua | Ні (деякі функції не повертають попереджень чи винятків) |
Mathematica | Так |
Object Pascal (Delphi) | Деякі |
Objective-C | Так (exceptions) |
OCaml | Так (exceptions) |
Perl | Ні[FSIO 3] |
PHP | Так |
Python | Так |
REBOL | Так |
Ruby | Так |
Rust | Так |
S | Невідомий |
Scala | Так[28] |
Standard ML | Так[джерело?] |
Tcl | Так |
Visual Basic | Так |
Visual Prolog[en] | Так |
Xojo[en] | Так |
Language | Failsafe I/O |
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.