Языки программирования используются для управления поведением машины (часто компьютер ). Как и естественные языки, языки программирования следуют правилам для синтаксиса и семантики.
. Существуют тысячи языков программирования, и каждый год создаются новые.. Немногие языки когда-либо стали настолько популярными, чтобы их использовали несколько человек, но профессиональные программисты могут использовать десятки языков за свою карьеру.
Большинство языков программирования не стандартизированы международным (или национальным) стандартом, даже широко используемыми, такими как Perl или Standard ML (несмотря на название). Известные стандартизированные языки программирования включают ALGOL, C, C ++, JavaScript (под названием ECMAScript ), Smalltalk, Prolog, Common Lisp, Scheme (стандарт IEEE ), Ada, Fortran, COBOL, SQL и XQuery.
В следующей таблице сравнивается общая и техническая информация для выбора наиболее часто используемых языки программирования. См. Статьи на отдельных языках для получения дополнительной информации. Обратите внимание, что в следующей таблице может отсутствовать некоторая информация.
Язык | Использование по назначению | Императивное | Объектно-ориентированное | Функциональное | Процедурное | Универсальное | Отражающее | Управляемое событиями | Другое парадигма (s) | Стандартизация ? |
---|---|---|---|---|---|---|---|---|---|---|
1С: Предприятие | Приложение, RAD, бизнес, общий, Интернет, мобильный | Да | Да | Да | Да | Да | Да | Объектно-ориентированный, Программирование на основе прототипов | Нет | |
ActionScript 3.0 | Приложение, на стороне клиента, веб | Да | Да | Да | Да | 1996, ECMA | ||||
Ada | Приложение, встроенное, система реального времени, | Да | Да | Да | Да | одновременный, распределенный, | 1983, 2005, 2012, ANSI, ISO, ГОСТ 27831-88 | |||
Aldor | В высшей степени предметно-ориентированный, символьные вычисления | Да | Да | Да | Нет | |||||
АЛГОЛ 58 | Приложение | Да | Нет | |||||||
АЛГОЛ 60 | Приложение | Да | Да | Да | 1960, IFIP WG 2.1, ISO | |||||
ALGOL 68 | Приложение | Да | Да | Да | Да | одновременный | 1968, IFIP WG 2.1, ГОСТ 27974-88, | |||
Ateji PX | Параллельное приложение | Да | вычисление Пи | Нет | ||||||
APL | Приложение, обработка данных | Да | Да | Да | Да | Да | Да | Да | ориентированный на массивы, неявный | 1989, ISO |
Язык ассемблера | Общий | Да | любой, синтаксис обычно очень специфичен, связан с целевым процессором | IEEE 694-1985 | ||||||
AutoHotkey | Автоматизация GUI (макросы ), сильно зависящие от предметной области | Да | Да | Да | Да | Нет | ||||
AutoIt | Автоматизация графического интерфейса пользователя (макросы), сильно зависящий от домена | Да | Да | Да | Нет | |||||
Ballerina | Интеграция, гибкая, на стороне сервера, общая | Да | Да | Да | Да | Да | параллельное, транзакционное, статически и строго типизированное программирование, схематическое / визуальное программирование | 2018 Фактический стандарт через спецификацию языка Ballerina | ||
Bash | Shell, создание сценариев | Да | Да | Нет, но необязательно POSIX.2 | ||||||
BASIC | Приложение, образование | Да | Да | 1983, ANSI, ISO, ECMA | ||||||
BeanShell | Приложение, создание сценариев | Да | Да | Да | Да | Выполняется, JCP | ||||
BLISS | Система | Да | Нет | |||||||
BlitzMax | Приложение, игра | Да | Да | Да | Да | Нет | ||||
Boo | Приложение, сценарии игры | Да | Нет | |||||||
Bro | для домена, приложение | Да | Да | Нет | ||||||
C | Приложение, система, общие, низкоуровневые операции | Да | Да | Да | 1989, ANSI C89, ISO C90, ISO C99, ISO C11, ISO C18 | |||||
C ++ | Приложение, система | Да | Да | Да | Да | Да es | 1998. ISO / IEC 2003, ISO / IEC 2011, ISO / IEC 2014, ISO / IEC 2017 | |||
C# | Приложение, RAD, бизнес, клиентская, общая, серверная, веб | Да | Да | Да | Да | Да | Да | Да | структурированный, параллельный | 2000, ECMA, ISO |
Clarion | Общие, бизнес, Интернет | Да | Да | Да | Неизвестно | |||||
Чистый | Общие | Да | Да | Нет | ||||||
Clojure | Общие | Да | параллельные | Нет | ||||||
CLU | Общие | Да | Да | Да | Да | Нет | ||||
COBOL | Приложение, бизнес | Да | Да | Да | ANSI X3.23 1968, 1974, 1985; ISO / IEC 1989: 1985, 2002, 2014 | |||||
Cobra | Приложение, бизнес, общее, Интернет | Да | Да | Да | Да | Да | Нет | |||
ColdFusion (CFML) | Web | Да | Да | Нет | ||||||
Common Lisp | General | Да | Да | Да | Да | Да | Да | Да | расширяемый синтаксис, ориентированный на массив, синтаксические макросы, множественная отправка, параллельная | 1994, ANSI |
COMAL 80 | Образование | Да | Да | Нет | ||||||
Crystal | Общее назначение | Да | Да | Да | Да | альфа-этап | Нет | |||
Карри | Приложение | Да | Да | ленивая оценка, не детерминизм | Стандарт де-факто через Curry Language Report | |||||
Cython | Приложение, общее, числовые вычисления | Да | Да | Да | Да | аспектно-ориентированный | Нет | |||
D | Приложение, система | Да | Да | Да | Да | Да | Да | генеративный, параллельный | Нет | |
Дарт | Приложение, Интернет, на стороне сервера, мобильное устройство, Интернет вещей | Да | Да | Да | структурированный | Стандарт Ecma-408 | ||||
Dylan | Приложение | Да | Да | Нет | ||||||
Eiffel | Общее, приложение, бизнес, клиентская, серверная, веб (EWF) | Да | Да | Да | Да | Да Erl-G | Да Распространенные агенты | SCOOP, Void-safe | 2005, ECMA, ISO | |
Эликсир | Приложение, распределенное | Да | Да | одновременно, распределенный | Нет | |||||
Erlang | Приложение, распределенное | Да | Да | параллельное, распределенное | Нет | |||||
Euphoria | Приложение | Да | Да | Нет | ||||||
Фактор | Общий | Да | можно рассматривать как | Да | Да | ориентированный на стек | Нет | |||
FP | Да | Нет | ||||||||
F# | Приложение | Да | Да | Да s | Да | Да | Да | Да | Нет | |
Форт | Общие | Да | можно рассматривать как | стек-ориентированный | 1994, ANSI | |||||
Fortran | Приложение, численные вычисления | Да | Да | Да | Да | Да | на основе массива, векторизация, параллельный, собственный параллелизм с распределенной / общей памятью | 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 | Приложение, численные вычисления | Да | Да | Да | Да | Нет | ||||
Гамбас | Приложение | Да | Да | Да | Нет | |||||
Game Maker Language | Приложение, игры | Да | Да | Да | Нет | |||||
GLBasic | Приложение, игры | Да | Да | Да | простые объектно-ориентированные | Нет | ||||
Go | Приложение, Интернет, на стороне сервера | Да | Да | Да | Да | одновременно | Стандарт де-факто с помощью спецификации языка Go | |||
Gosu | Приложение, общее, сценарии, веб | Да | Да | Да | Да | Нет | ||||
GraphTalk | Приложение | Да | логика | Нет | ||||||
Groovy | Приложение, общее, сценарии, Интернет | Да | Да | Да | Да | Да | Да | Да | мета- программирование | Выполняется, JCP |
Harbour | Приложение, бизнес, обработка данных, общее, веб | Да | Да | Да | Да | Да | Да | декларативный | Нет | |
Haskell | Приложение | Да | Да | ленивая оценка | 2010, Haskell 2010 | |||||
Haxe | Приложение, общее, веб | Да | Да | Да | Да | Да | Нет | |||
HyperNext | Приложение, образование | Да | Да | слабо типизированное | Нет | |||||
HyperTalk | Приложение, RAD, общее | Да | Да | слабо типизированный | Неизвестно | |||||
Io | Приложение, сценарии, управляемые хостом | Да | Да | Нет | ||||||
IPL | Общие | Да | Неизвестно | |||||||
ISLISP | Общие | Да | Да | Да | Да | 1997, ISO | ||||
J | Обработка данных | ориентированная на массивы, функция -уровень, неявный | Нет | |||||||
JADE | Приложение, распределенное | Да | Да | Нет | ||||||
Приложение Java | , бизнес, клиентская, общая, мобильная разработка, серверная, веб | Да | Да | Да | Да | Да | Да | Да | одновременный | Де-факто стандарт через спецификацию языка Java |
JavaScript | на стороне клиента, на стороне сервера, Интернет | Да | Да | Да | Да | Да | Да | на основе прототипа | 1997, ECMA | |
Joy | Research | Да | стек-ориентированный | Нет | ||||||
Джулия | Общие технические вычисления | Да | Да | Да | Да | Да | Да | множественная отправка, мета, скаляр и ориентированная на массивы, параллельная, параллельная, распределенная («облако») | Нет | |
K | Обработка данных, бизнес | ориентированный на массивы, неявный | Неизвестно | |||||||
Kotlin | Приложение, мобильная разработка, на стороне сервера, на стороне клиента, веб | Да | Да | Да | Да | Да | Да | Да | Нет | |
Ksh | Оболочка, сценарии | Да | Да | Да | несколько вариантов, программируемые пользователем, динамически загружаемые модули | 1992, POSIX.2 | ||||
LabVIEW ( G) | Применение, промышленные КИПиА | Да | Да | Да | Да | поток данных, visual | Нет | |||
Lisp | Общий | Да | Неизвестно | |||||||
LiveCode | Приложение, RAD, общее | Да | Да | слабо типизированный | Нет | |||||
Logtalk | Искусственный интеллект, приложение | Да | Да | Да | логика | Нет | ||||
LSL | Виртуальные миры сценарии содержимого и анимация | Да | Да | Да | Скрипты существуют во внутренних объектах | Да | ||||
Lua | Приложение, встроенные сценарии | Да | Да | Да | Да | Да | аспектно-ориентированный | No | ||
Maple | Символьные вычисления, численные вычисления | Да | Да | Да | Да | распределенный | Нет | |||
Mathematica | Символьный язык | Да | Да | Да | Да | Да | Да | Да | логика, распределенная | Нет |
MATLAB | Численные вычисления, сильно зависящие от предметной области | Да | Да | Да | Нет | |||||
Modula-2 | Приложение, система | Да | Да | 1996, ISO | ||||||
Modula-3 | Приложение | Да | Да | Да | Нет | |||||
MUMPS (M) | Приложение, базы данных | Да | Да | одновременный, многопользовательский, NoSQL, обработка транзакций | 1977, ANSI | |||||
Nim | Приложение, общее, Интернет, сценарии, система | Да | Да | Да | Да | Да | Да | множественная отправка, параллельная, мета | Нет | |
Oberon | Приложение, система | Да | Да | Нет | ||||||
Object Pascal | Приложение, общее, мобильное приложение, Интернет | Да | Да | Да | Да | Да | Да | структурированный | Нет | |
Objective-C | Приложение, общее | Да | Да | Да | Да | одновременно | Нет | |||
OCaml | Приложение, общее | Да | Да | Да | Да | Да | Нет | |||
Оккам | Общий | Да | Да | параллельный, ориентированный на процесс | Нет | |||||
Opa | Веб-приложения | Да | Да | Да | распределенные | Нет | ||||
OpenLisp | General, Embedded Lisp Engine | Да | Да | Да | Да | Заменяет ISLISP, ISO | ||||
Oxygene | Применение | Да | Да | Да | Нет | |||||
Оз-Моцарт | Применение, распространение, образование | Да | Да | Да | параллельный, логический | Нет | ||||
Паскаль | Приложение, образование | Да | Да | 1983, ISO | ||||||
Perl | Приложение, сценарии, обработка текста, Интернет | Да | Да | Да | Да | Да | Да | Нет | ||
PHP | На стороне сервера, веб-приложение, веб | Да | Да | Да | Да | Да | Стандарт «де-факто» через спецификацию языка и запросы комментариев (RFC) | |||
PL / I | Приложение | Да | Да | Да | 1969, ECMA-50 (1976) | |||||
Plus | Приложение, разработка системы | Да | Да | Нет | ||||||
PostScript | Графика, описание страницы | Да | Да | Да, как в Справочном руководстве PostScript | ||||||
PowerShell | Администрирование, приложение, общие, scr ipting | Да | Да | Да | Да | Да | конвейер | Нет | ||
Prolog | Приложение, искусственный интеллект | Да | Да | Да | декларативная логика | 1995, ISO / IEC 13211-1: 1995, TC1 2007, TC2 2012, TC3 2017 | ||||
PureBasic | Приложение | Да | Нет | |||||||
Python | Приложение, общее, Интернет, сценарии, искусственный интеллект, научные вычисления | Да | Да | Да | Да | Да | Да | Да | аспектно-ориентированный | "De facto »стандарт через Python Enhancement Proposals (PEP) |
R | Приложение, статистика | Да | Да | Да | Да | Да | Нет | |||
Racket | Образование, общее, создание сценариев | Да | Да | Да | Да | модульный, логический, мета | Нет | |||
Raku | Создание сценариев, обработка текста, клей | Да | Да | Да | Да | Да | Да | аспектно-ориентированный, массив y, ленивая оценка, множественная отправка, метапрограммирование | Да | |
REALbasic | Приложение | Да | Неизвестно | |||||||
Rebol | Распределенное | Да | Да | Да | Да | Да | Да | набран | Нет | |
REXX | Сценарии | Да | Да (NetRexx и Object REXX диалекты) | Нет | Да | Нет | Нет | 1996 (ANSI X3.274-1996) | ||
RPG | Приложение, система | Да | Да | Нет | ||||||
Ruby | Приложение, сценарии, веб | Да | Да | Да | Да | аспектно-ориентированный | 2011 (JIS X 3017), 2012 (ISO / IEC 30170) | |||
Rust | Приложение, на стороне сервера, система, Интернет | Да | Да | Да | Да | Да | Да | одновременно | Нет | |
S | Приложение, статистика | Да | Да | Да | Да | Нет | ||||
S-Lang | Приложения, числовые, сценарии | Да | Да | Нет | ||||||
S cala | Приложение, распределенное, Интернет | Да | Да | Да | Да | Да | Да | Стандарт де-факто через спецификацию языка Scala (SLS) | ||
Схема | Образование, общее | Да | расширяемый синтаксис | 1998, RRS | ||||||
Seed7 | Приложение, общее, сценарии, веб | Да | Да | Да | Да | многопарадигмальный, расширяемый, структурированный | Нет | |||
Simula | Образование, общее | Да | Да | Да | моделирование дискретных событий, многопоточное (квазипараллельное) выполнение программы | 1968 | ||||
Small Basic | Приложение, образование, игры | Да | Да | компонентно-ориентированный | Нет | |||||
Smalltalk | Приложение, общее, бизнес, искусственный интеллект, образование, Интернет | Да | Да | Да | Да | Да | Да | параллельный, декларативный | 1998, [ANSI | |
SNOBOL | Обработка текста | Неизвестно | ||||||||
Стандартный M L | Приложение | Да | Да | Да | 1997, SML '97 | |||||
Swift | Приложение, общее | Да | Да | Да | Да | Да | Да | Да | параллельный, декларативный, ориентированный на протокол | Нет |
Tcl | Приложение, сценарии, веб | Да | Да | Да | Да | Да | Да | Нет | ||
Visual Basic | Приложение, RAD, образование, бизнес, общие (включая VBA), автоматизация делопроизводства | Да | Да | Да | Да | компонентно-ориентированный | Нет | |||
Visual Basic.NET | Приложение, RAD, образование, Интернет, бизнес, общее | Да | Да | Да | Да | Да | Да | Да | структурированный, параллельный | Нет |
Visual FoxPro | Приложение | Да | ориентированное на данные, логическое | Нет | ||||||
Visual Prolog | Приложение | Да | Да | Да | Да | декларативная, логическая | Нет | |||
Wolfram Language | Символьный язык | Да | Да | Да | Да | Да | Да | Да | логика, распределенная | Нет |
XL | Да | Да | концептуальное программирование | Нет | ||||||
Xojo | Приложение, RAD, общее, Интернет | Да | Да | Да | Да | Да | Нет | |||
XPath / XQuery | Базы данных, обработка данных, сценарии | Да | древовидный | W3C 1999 XPath 1, 2010 XQuery 1, 2014 XPath / XQuery 3.0 | ||||||
Zsh | Shell, сценарии | Да | Да | загружаемые модули | Нет |
Большинство языки программирования выводят сообщение об ошибке или генерируют исключение , если выполняется операция ввода / вывода или другой системный вызов (например, chmod, kill ) завершается ошибкой, если только программист явно не предусмотрел другую обработку этих событий. Таким образом, эти языки терпят неудачу в этом отношении.
Некоторые (в основном старые) языки требуют, чтобы программист явно добавлял проверки на такие ошибки. Психологически различные когнитивные предубеждения (например, предвзятость оптимизма ) могут одинаково влиять на новичков и экспертов, и эти упущения могут привести к ошибочному поведению.
Язык | Отказоустойчивый ввод-вывод |
---|---|
1С: Предприятие | Да |
Ada | Да (исключения) |
АЛГОЛ | Да (исключения или возвращаемое значение в зависимости от функции) |
AutoHotkey | Нет (глобальный ErrorLevel должен быть явно проверен) |
Bash | Необязательно |
Ballerina | Да |
Bro | Да |
C | No |
C ++ | Некоторые (STL iostreams выбрасывают при сбое, но API C, такие как stdio или POSIX - нет) |
C# | Да |
COBOL | Нет |
Common Lisp | Да («условия и перезапуски "система") |
Карри | Да |
D | Да (выброс при неудаче) |
Эйфель | Нет - это фактически зависит от библиотеки и не определяется языком |
Erlang | Да |
Fortran | Да |
GLBasic | Нет - обычно вызывает сбой программы |
Go | Да (если результат явно не игнорируется) |
Gosu | Да |
Harbor | Да |
Haskell | Да |
ISLISP | Да |
Java | Да |
Юлия | Да |
Kotlin | Да |
LabVIEW | Да |
Lua | Нет (некоторые функции не предупреждают и не генерируют исключения) |
Mathematica | Да |
Object Pascal | Некоторые |
Objective-C | Да (исключения) |
OCaml | Да (исключения) |
OpenLisp | Да |
Perl | No |
PHP | Да |
Python | Да |
Raku | Да |
Rebol | Да |
Rexx | Да (с дополнительным сигналом на ... обработке ловушек) |
RPG | Нет |
Ruby | Да |
Rust | Да (если результат явно не проигнорирован) |
S | Неизвестно |
Smalltalk | Да |
Scala | Да |
Стандартный ML | Да |
Swift ≥ 2.0 | Да (исключения) |
Tcl | Да |
Visual Basic | Да |
Visual Basic.NET | Да |
Visual Prolog | Да |
Язык Wolfram Language | Да |
Xojo | Да |
XPath / XQuery | Да (исключения) |
Язык | Отказоустойчивый ввод-вывод |
Язык | Заявления соотношение | Соотношение линий |
---|---|---|
C | 1 | 1 |
C++ | 2,5 | 1 |
Фортран | 2 | 0,8 |
Java | 2,5 | 1,5 |
Perl | 6 | 6 |
Smalltalk | 6 | 6,25 |
Python | 6 | 6.5 |
Литература по языкам программирования содержит множество неформальных заявлений об их относительной выразительной силе, но не существует основы для формализации таких утверждений или вывода интересных следствий. В этой таблице представлены две меры выразительности из двух разных источников. Дополнительную меру выразительности в байтах GZip можно найти в игре Computer Language Benchmarks Game.
Тесты предназначены для имитации определенного типа нагрузки на компонент или систему. Компьютерные программы, используемые для сбора некоторых контрольных данных в этом разделе, возможно, не были полностью оптимизированы, и актуальность данных оспаривается. Самые точные тесты - это те, которые адаптированы к вашей конкретной ситуации. Контрольные данные других людей могут иметь некоторую ценность для других, но правильная интерпретация порождает множество проблем. Сайт Computer Language Benchmarks Game предостерегает от чрезмерного обобщения данных тестов, но содержит большое количество микротестов с фрагментами кода, предоставленными читателями, с интерфейсом, который генерирует различные диаграммы и таблицы для сравнения конкретных языков программирования и типы тестов.