Сравнение языков программирования
Языки программирования используются для управления поведением машины (часто компьютера ). Как и естественные языки , языки программирования следуют правилам синтаксиса и семантики .
Существуют тысячи языков программирования [1] и каждый год создаются новые. Лишь немногие языки становятся настолько популярными, что их используют несколько человек, но профессиональные программисты за свою карьеру могут использовать десятки языков.
, не стандартизированы международным (или национальным) стандартом Большинство языков программирования, даже широко используемые, такие как Perl или Standard ML (несмотря на название) . Известные стандартизированные языки программирования включают ALGOL , C , C++ , JavaScript (под названием ECMAScript ), Smalltalk , Prolog , Common Lisp , Scheme ( IEEE стандарт ), ISLISP , Ada , Fortran , COBOL , SQL и XQuery .
Общее сравнение [ править ]
В следующей таблице сравниваются общие и технические сведения для ряда часто используемых языков программирования . Дополнительную информацию смотрите в статьях на отдельных языках.
Язык | Исходная цель | Императив | Объектно-ориентированный | Функциональный | процедурный | Общий | Светоотражающий | Другие парадигмы | Стандартизированный ? |
---|---|---|---|---|---|---|---|---|---|
Язык программирования 1С:Предприятия. | Приложение , RAD , бизнес, общее , Интернет , мобильное устройство | Да | Нет | Да | Да | Да | Да | Объектно-ориентированное программирование, основанное на прототипах | Нет |
ActionScript | Приложение, клиентская часть , веб | Да | Да | Да | Да | Нет | Нет | на основе прототипа | Да 1999–2003, ActionScript 1.0 с ES3, ActionScript 2.0 с ES3 и частичным черновиком ES4, ActionScript 3.0 с черновиком ES4 , ActionScript 3.0 с E4X |
Есть | Приложение, встроенное , реальное время , система | Да | Да [2] | Нет | Да [3] | Да [4] | Нет | Одновременно , [5] распределенный [6] | Да 1983, 2005, 2012, ANSI, ISO, ГОСТ 27831-88. [7] |
Возраст | ориентированные на предметную область , Символические вычисления | Да | Да | Да | Нет | Нет | Нет | Нет | |
АЛГОЛ 58 | Приложение | Да | Нет | Нет | Нет | Нет | Нет | Нет | |
АЛГОЛ 60 | Приложение | Да | Нет | Нет | Да | Да | Нет | Да 1960, ИФИП РГ 2.1 , ИСО [8] | |
АЛГОЛ 68 | Приложение | Да | Нет | Да | Да | Да | Нет | Параллельно | Да 1968, ИФИП РГ 2.1 , ГОСТ 27974-88 , [9] |
Атчи ПХ | Параллельное приложение | Нет | Да | Нет | Нет | Нет | Нет | исчисление Пи | Нет |
АПЛ | Применение, обработка данных | Да | Да | Да | Да | Да | Да | Ориентированный на массив , неявный | Да 1989, ИСО |
Язык ассемблера | Общий | Да | Нет | Нет | Нет | Нет | Нет | Любой, синтаксис обычно очень специфичен и зависит от целевого процессора. | Да 1985 ИЭЭЭ 694-1985 [10] |
Автогорячая клавиша | Автоматизация графического интерфейса ( макросы ), сильно специфичная для предметной области | Да | Да [11] | Нет | Да | Нет | Нет | Нет | |
АвтоИт | Автоматизация графического пользовательского интерфейса (макросы), сильно зависящая от предметной области | Да | Нет | Нет | Да | Нет | Нет | Нет | |
Балерина | Интеграция, гибкая, серверная , общая | Да | Да | Да | Да | Нет | Нет | Параллельный, транзакционный, статически и строго типизированный, диаграммно-визуальный | Фактически стандарт через спецификацию языка Ballerina [12] |
Баш | Оболочка , скрипты | Да | Нет | Нет | Да | Нет | Нет | Опционально POSIX.2 [13] | |
БАЗОВЫЙ | Применение, образование | Да | Нет | Нет | Да | Нет | Нет | Да 1983, ANSI, ISO, ECMA | |
БинШелл | Приложение, скрипты | Да | Да | Да | Нет | Нет | Да | Нет В разработке, JCP [14] | |
БЛАЖЕНСТВО | Система | Нет | Нет | Нет | Да | Нет | Нет | Нет | |
БлицМакс | Приложение, игра | Да | Да | Нет | Да | Нет | Да | Нет | |
Бу | Приложение, скриптинг игры | Нет | Да | Нет | Нет | Нет | Нет | Нет | |
С | Приложение, система, [15] общего назначения, низкоуровневые операции | Да | Нет | Нет | Да | Нет | Нет | Да 1989, ANSI C89, ISO/IEC C90, ISO/IEC C95, ISO/IEC C99, ISO/IEC C11, ISO/IEC C17, ISO/IEC C2x [16] | |
С++ | Приложение, система | Да | Да | Да | Да | Да | Нет | Да 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, ИСО/МЭК С++23 [17] | |
С# | Приложение, RAD, бизнес, клиентская часть, общее, серверная часть, веб, программирование игр | Да | Да | Да [18] | Да | Да | Да | Структурированный, параллельный | Да 2000, ECMA, ISO [19] |
Кларион | Общий, бизнес, Интернет | Да | Да | Да [20] | Нет | Нет | Нет | Unknown | |
Чистый | Общий | Нет | Нет | Да | Нет | Да | Нет | Нет | |
Кложур | Общий | Нет | Нет | Да | Нет | Нет | Нет | Параллельно | Нет |
КЛУ | Общий | Да | Да | Нет | Да | Да | Нет | Нет | |
КОБОЛ | Приложение, бизнес | Да | Да | Нет | Да | Нет | Нет | Да 1968 ANSI X3.23, 1974, 1985; ИСО/МЭК 1989:1985, 2002, 2014, 2023. | |
Кобра | Приложение, бизнес, общее, Интернет | Да | Да | Да | Нет | Да | Да | Нет | |
КолдФьюжн (CFML) | Интернет | Нет | Да | Нет | Да | Нет | Нет | Нет | |
Общий Лисп | Общий | Да | Да | Да | Да | Да | Да | Расширяемый синтаксис, ориентированный на массивы , синтаксические макросы , множественная диспетчеризация , параллельная обработка | Да 1994, АНСИ |
КОМАЛ 80 | Образование | Да | Нет | Нет | Да | Нет | Нет | Нет | |
Кристалл | Общее назначение | Да | Да [21] | Да | Да | Да [22] | Нет | Параллельно [23] | Нет |
Карри | Приложение | Нет | Нет | Да | Нет | Да | Нет | ленивая оценка , недетерминизм | Стандарт де-факто через Curry Language Report |
Китон | Приложения, общие, численные вычисления | Да | Да | Да | Нет | Нет | Да | Аспектно-ориентированный | Нет |
Д | Приложение, система | Да | Да | Да | Да | Да | Да | Генеративный, параллельный | Нет |
Дарт | Приложение, Интернет, серверная часть, мобильное устройство, Интернет вещей | Да | Да | Да | Да | Да | Нет | Структурированный | Да Стандарт ECMA-408 |
Делфи , Объект Паскаль | Общее назначение | Да | Да | Да | Да | Да | Да | ? | |
Дилан | Приложение | Нет | Да | Да | Нет | Нет | Нет | Нет | |
Эйфелева | Общие, приложения, бизнес, клиентские, серверные, веб-версии (EWF) | Да | Да | Да [24] [25] | Нет | Да | Да Эрл-Г | Распределенный SCOOP , Void-safe | Да 2005, ECMA, ISO [26] |
ОБЪЯВЛЕНИЕ | Образование | Да | Нет | Нет | Да | Нет | Нет | Структурированное , поэтапное уточнение | Нет |
Эликсир | Приложение, распределенное | Нет | Нет | Да | Нет | Нет | Да | Параллельный, распределенный | Нет |
Эрланг | Приложение, распределенное | Нет | Нет | Да | Нет | Нет | Да | Параллельный, распределенный | Нет |
Эйфория | Приложение | Нет | Нет | Нет | Да | Нет | Да | Нет | |
Фактор | Общий | Да | Нет | Можно рассматривать как | Нет | Да | Да | Стек-ориентированный | Нет |
ФП | Нет | Нет | Да | Нет | Нет | Нет | Нет | ||
Ф# | Приложение | Да | Да | Да | Да | Да | Да | Нет | |
Форт | Общий | Да | Нет | Да | Да | Нет | Да | Стек-ориентированный | Да 1994, АНСИ |
Фортран | Приложение, численные вычисления | Да | Да | Да | Да | Да | Нет | На основе массивов, векторизованный, параллельный, собственный параллелизм с распределенной/разделяемой памятью | Да 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 | Приложение, численные вычисления | Да | Да | Нет | Да | Да | Нет | Нет | |
Креветки | Приложение | Да | Да | Нет | Нет | Нет | Нет | Нет | |
Язык создателя игр | Приложение, программирование игр | Да | Да | Нет | Нет | Нет | Нет | Нет | |
GLBasic | Приложение, игры | Да | Да | Нет | Да | Нет | Нет | Простой объектно-ориентированный | Нет |
Идти | Приложение, веб, серверная часть | Да | Можно рассматривать как [27] | Нет | Да | Да | Да | Параллельно | Стандарт де-факто через спецификацию языка Go |
Гоша | Приложение, общее, сценарии, Интернет | Да | Да | Нет | Нет | Да | Да | Нет | |
ГрафТок | Приложение | Нет | Да | Нет | Нет | Нет | Нет | Логика | Нет |
классный | Приложение, общее, сценарии, Интернет | Да | Да | Да | Да | Да | Да | Метапрограммирование | В разработке, JCP [28] |
Гавань | Приложение, бизнес, обработка данных, общее, Интернет | Да | Да | Да | Да | Да | Да | Декларативный | Нет |
Хаскелл | Приложение | Нет | Нет | Да | Нет | Да | Нет | Ленивая оценка | Да 2010, Хаскелл 2010 [29] |
Смешанный | Приложение, общее, Интернет | Да | Да | Да | Нет | Да | Да | Нет | |
ГиперТок | Приложение, RAD, общее | Да | Нет | Нет | Да | Нет | Да | Слабо типизированный | Unknown |
Этот | Приложение, сценарии, управляемые хостом | Да | Да | Нет | Нет | Нет | Нет | Нет | |
IPL | Общий | Нет | Нет | Да | Нет | Нет | Нет | Unknown | |
ИСЛИСП | Общий | Да | Да | Да | Нет | Да | Нет | Да 1997, 2007, ИСО | |
Дж | Применение, обработка данных | Да | Да | Да | Да | Да | Да | Ориентированный на массив, на уровне функций , неявный, параллельный | Нет |
ВЫХОД | Приложение, распределенное | Да | Да | Нет | Нет | Нет | Нет | Нет | |
Ява | Приложение, бизнес, клиентская часть, общая, мобильная разработка, серверная часть, веб | Да | Да | Да | Да | Да | Да | Параллельно | Стандарт де-факто через спецификацию языка Java |
JavaScript | Клиентская, серверная, веб-версия | Да | Да | Да | Да | Нет | Да | на основе прототипа | Да 1997-2022, ЭКМА-262 |
Радость | Исследовать | Нет | Нет | Да | Нет | Нет | Нет | Стек-ориентированный | Нет |
jq | "awk для JSON" | Нет | Нет | Да | Нет | Нет | Нет | Молчаливое , возвратное отслеживание , потоковая передача , PEG | Нет |
Юлия | Общие, технические вычисления | Да | Нет | Да | Да | Да | Да | Множественная диспетчеризация, мета-, скалярная и ориентированная на массивы, параллельная, одновременная, распределенная («облачная») | Нет |
К | Обработка данных, бизнес | Нет | Нет | Нет | Нет | Нет | Нет | Ориентированный на массив, неявный | Unknown |
Котлин | Приложение, мобильная разработка, серверная часть, клиентская часть, Интернет | Да | Да | Да | Да | Да | Да [30] | Стандарт де-факто через спецификацию языка Kotlin | |
Кш | Оболочка , скрипты | Да | Да | Нет | Да | Нет | Нет | Несколько вариантов, индивидуально программируемые, динамически загружаемые модули. | Опционально POSIX.2 [13] |
ЛабВЬЮ (G) | Применение, промышленное приборостроение-автоматизация | Да | Да | Да | Нет | Нет | Нет | Поток данных , визуальный | Нет |
Лисп | Общий | Нет | Нет | Да | Нет | Нет | Нет | Unknown | |
LiveCode | Приложение, RAD, общее | Да | Да | Нет | Да | Нет | Да | Слабо типизированный | Нет |
Логток | Искусственный интеллект, применение | Нет | Да | Нет | Нет | Нет | Да | Логика | Нет |
Язык сценариев Linden (LSL) | Сценарии и анимация контента виртуальных миров | Да | Нет | Нет | Да | Нет | Нет | Скрипты существуют в объектах мира. | Де-факто ссылкой является в Second Life реализация LSL . [31] |
Два | Приложение, встроенные сценарии | Да | Да [32] | Да | Да | Нет | Да | Аспектно-ориентированный, основанный на прототипах | Нет [33] |
Клен | Символьные вычисления, численные вычисления | Да | Да | Да | Да | Нет | Нет | Распределенный | Нет |
Математика | Символический язык | Да | Да | Да | Да | Да | Да | Логика, распределенная | Нет |
МАТЛАБ | Числовые вычисления, ориентированные на конкретную предметную область | Да | Да | Нет | Да | Нет | Нет | Нет | |
Модуль-2 | Приложение, система | Да | Нет | Нет | Нет | Да | Нет | Да 1996, ИСО [34] | |
Модуль-3 | Приложение | Да | Да | Нет | Нет | Да | Нет | Нет | |
Свинка (М) | Общие, приложения, базы данных | Да | Утверждено для следующего стандарта | Нет | Да | Частично через косвенность и Xecute | Да | Параллельная , многопользовательская , NoSQL , обработка транзакций | Да 1977 ANSI, 1995, ISO 2020 |
Nim | Приложение, общее, веб, скрипты, система | Да | Да | Да | Да | Да | Да | Множественная отправка, одновременная, мета | Нет |
Оберон | Приложение, система | Да | Да | Нет | Нет | Нет | Нет | Нет | |
Объектный Паскаль | Приложение, общее, мобильное приложение, Интернет | Да | Да | Нет | Да | Да | Да | Структурированный | Нет |
Цель-C | Приложение, общее | Да | Да | Нет | Да | Нет | Да | Параллельно | Нет |
OCaml | Приложение, общее | Да | Да | Да | Да | Да | Нет | Нет | |
Оккам | Общий | Да | Нет | Нет | Да | Нет | Нет | Параллельное, ориентированное на процесс | Нет |
Опа | Веб-приложения | Да | Нет | Да | Нет | Да | Нет | Распределенный | Нет |
ОпенЛисп | Общие сведения, встроенный Lisp-движок | Да | Да | Да | Нет | Да | Нет | Опционально ИСЛИСП | |
Кислород | Приложение | Да | Да | Нет | Нет | Да | Нет | Нет | |
Оз-Моцарт | Применение, распространение, образование | Да | Да | Да | Нет | Нет | Нет | Параллельно, логика | Нет |
Паскаль | Применение, образование | Да | Нет | Нет | Да | Нет | Нет | Да 1983, ИСО [35] | |
Перл | Приложение, сценарии, обработка текста, Интернет | Да | Да | Да | Да | Да | Да | Нет | |
PHP | Серверная часть, веб-приложение, веб | Да | Да [36] | Да [37] | Да | Нет | Да | Стандарт де-факто посредством спецификации языка и запросов на комментарии (RFC). | |
ПЛ/Я | Приложение | Да | Да | Нет | Да | Нет | Нет | Да 1969, ЭКМА-50 (1976) | |
Плюс | Применение, разработка системы | Да | Нет | Нет | Да | Нет | Нет | Нет | |
Постскриптум | Графика, описание страницы | Да | Нет | Нет | Да | Нет | Нет | Конкатенативный , ориентированный на стек | Стандарт де-факто через Справочное руководство PostScript. [38] |
PowerShell | Администрирование, приложение, общее, скрипты | Да | Да | Да | Да | Нет | Да | Трубопровод | Нет |
Пролог | Приложение, искусственный интеллект | Нет | Нет | Да | Да | Нет | Да | Логический, декларативный | Да 1995, ИСО/МЭК 13211-1:1995, TC1 2007, TC2 2012, TC3 2017. |
PureBasic | Приложение | Да | Нет | Нет | Да | Нет | Нет | Нет | |
Питон | Приложение, общее, Интернет, сценарии, искусственный интеллект, научные вычисления | Да | Да | Да | Да | Да | Да | Аспектно-ориентированный | Стандарт де-факто через предложения по улучшению Python (PEP). |
Р | Приложение, статистика | Да | Да | Да | Да | Нет | Да | Нет | |
Ракетка | Образование, общее, скриптинг | Да | Да | Да | Да | Нет | Да | Модульный , логический, мета | Нет |
Раку | Скриптинг, обработка текста, клей | Да | Да | Да | Да | Да | Да | Аспектно-ориентированный, массив, ленивый вычисление, множественная диспетчеризация, метапрограммирование | Нет |
РЕАЛбазовый | Приложение | Нет | Нет | Нет | Да | Нет | Нет | Unknown | |
Ребол | Распределенный | Да | Да | Да | Да | Нет | Да | диалектный | Нет |
РЕКСС | Сценарии | Да | Да ( NetRexx и Object REXX диалекты ) | Нет | Да | Нет | Нет | Да 1996 (АНСИ X3.274-1996) | |
РПГ | Приложение, система | Да | Нет | Нет | Да | Нет | Нет | Нет | |
Кольцо | Приложение | Да | Да | Да | Да | Да | Да | метапрограммирование, декларативный, естественный язык | Нет |
Руби | Приложение, скрипты, Интернет | Да | Да | Да | Нет | Нет | Да | Аспектно-ориентированный | Да 2011 (JIS X 3017), 2012 (ISO/IEC 30170) |
Ржавчина | Приложение, серверная часть, система, Интернет | Да | Да [39] | Да | Да | Да | Нет [40] | Параллельно | Нет |
С | Приложение, статистика | Да | Да | Да | Да | Нет | Нет | Нет | |
Сленг | Приложение, численное, скриптование | Да | Нет | Нет | Да | Нет | Нет | Нет | |
Скала | Приложение, общее, параллельное, распределенное, веб-приложение | Да | Да | Да | Нет | Да | Да | Data-ориентированное программирование, метапрограммирование | Стандарт де-факто через спецификацию языка Scala (SLS). |
Схема | Образование общее | Да | Нет | Да | Нет | Нет | Нет | мета, расширяемый синтаксис | Фактически 1975-2013, р. 0 РС, Р 1 РС, Р 2 РС, Р 3 РС, Р 4 РС, Р 5 РС, Р 6 РС, Р 7 RS маленькое издание [41] [42] |
Сид7 | Приложение, общее, сценарии, Интернет | Да | Да | Нет | Нет | Да | Да | Мультипарадигмальный, расширяемый, структурированный | Нет |
начало | Образование общее | Да | Да | Нет | Нет | Нет | Нет | моделирование дискретных событий , многопоточное (квазипараллельное) выполнение программы | Да 1968 |
Маленький базовый | Приложение, обучение, игры | Да | Нет | Нет | Нет | Нет | Нет | Компонентно-ориентированный | Нет |
Смолток | Приложение, общее, бизнес, искусственный интеллект, образование, Интернет | Да | Да | Да | Да | Нет | Да | Параллельный, декларативный | Да 1998, АНСИ |
СНОБОЛ | Обработка текста | Нет | Нет | Нет | Нет | Нет | Нет | Unknown | |
Стандартный ML | Приложение | Да | Нет | Да | Нет | Да | Нет | Да 1997, СМЛ '97 [43] | |
Быстрый | Приложение, общее | Да | Да | Да | Да | Да | Да | Параллельный, декларативный, протокольно-ориентированный | Нет |
Ткл | Приложение, скрипты, Интернет | Да | Да | Да | Да | Нет | Да | Нет | |
V (Vlang) | Приложение, общее, система, игра, веб, серверная часть | Да | Можно рассматривать как | Можно рассматривать как | Да | Да | Да | Параллельно | Нет |
Визуальный Бейсик | Приложения, RAD, образование, бизнес, общее (включая VBA), автоматизация офиса | Да | Да | Нет | Да | Да | Нет | Компонентно-ориентированный | Нет |
Визуальный Бейсик .NET | Приложение, RAD, образование, Интернет, бизнес, общее | Да | Да | Да | Да | Да | Да | Структурированный, параллельный | Нет |
Визуальный ФоксПро | Приложение | Да | Да | Нет | Да | Нет | Нет | Ориентирован на данные, логика | Нет |
Визуальный Пролог | Приложение | Да | Да | Да | Нет | Нет | Нет | Декларативный, логический | Нет |
Вольфрам Язык | Символический язык | Да | Да | Да | Да | Да | Да | Логика, распределенная | Нет |
XL | Да | Да | Нет | Нет | Нет | Нет | концептуальное программирование | Нет | |
Содзё | Приложение, RAD, общее, Интернет | Да | Да | Нет | Да | Нет | Да | Нет | |
XPath / XQuery | Базы данных, обработка данных, скриптинг | Нет | Нет | Да | Нет | Нет | Нет | Древовидный | Да 1999 W3C XPath 1, 2010 W3C XQuery 1, 2014 W3C XPath/XQuery 3.0 |
Зик | Область применения, приложение | Да | Нет | Нет | Нет | Нет | Нет | Нет | |
Зиг | Приложение, общее, система | Да | Нет | Да | Да | Да | Да | Параллельно | Нет |
Zsh | Оболочка , скрипты | Да | Нет | Нет | Да | Нет | Нет | Загружаемые модули | Опционально POSIX.2 [13] |
Типовые системы [ править ]
Отказоустойчивый ввод-вывод и системные вызовы [ править ]
Большинство языков программирования выводят сообщение об ошибке или выдают исключение , если операция ввода/вывода или другой системный вызов (например, chmod , kill ) терпят неудачу, если только программист явно не предусмотрел другую обработку этих событий. Таким образом, эти языки благополучно терпят неудачу в этом отношении .
Некоторые (в основном старые) языки требуют, чтобы программисты явно добавляли проверки на ошибки такого рода. С психологической точки зрения различные когнитивные искажения (например, предвзятость к оптимизму ) могут влиять как на новичков, так и на экспертов и заставлять их пропускать эти проверки. Это может привести к ошибочному поведению .
Безопасный ввод-вывод — это функция 1С:Предприятия , Ada (исключения), ALGOL (исключения или возвращаемое значение в зависимости от функции), Ballerina , C# , Common Lisp (система «условия и перезапуск»), Curry , D (выдача при сбое). ), [44] Erlang , Fortran , Go (если результат явно не игнорируется), Gosu , Harbor , Haskell , ISLISP , Java , Julia , Kotlin , LabVIEW , Mathematica , Objective-C (исключения), OCaml (исключения), OpenLisp , PHP , Python , Raku , Rebol , Rexx (с дополнительным сигналом об обработке ловушек), Ring , Ruby , Rust (если результат явно не игнорируется), Scala , [45] Smalltalk , стандартный ML [ нужна ссылка ] , Swift ≥ 2.0 (исключения), Tcl , Visual Basic , Visual Basic .NET , Visual Prolog , Wolfram Language , Xojo , XPath / XQuery (исключения) и Zeek .
Нет отказоустойчивого ввода-вывода : AutoHotkey (должен быть явно проверен глобальный уровень ErrorLevel), C , [46] COBOL , Eiffel (на самом деле это зависит от библиотеки и не определяется языком), GLBasic (обычно приводит к сбою программы), RPG , Lua (некоторые функции не предупреждают и не вызывают исключения) и Perl . [47]
Некоторая проверка ввода-вывода встроена в C++ ( потоки STL iostream выдаются в случае сбоя, но API C, такие как stdio или POSIX , этого не делают) [46] и Object Pascal в Bash [48] это необязательно.
Выразительность [ править ]
Язык | Соотношение заявлений [49] | Соотношение линий [50] |
---|---|---|
С | 1 | 1 |
С++ | 2.5 | 1 |
Фортран | 2 | 0.8 |
Ява | 2.5 | 1.5 |
Перл | 6 | 6 |
Смолток | 6 | 6.25 |
Питон | 6 | 6.5 |
Литература по языкам программирования содержит множество неформальных заявлений об их относительной выразительной силе , но не существует системы ни для формализации таких утверждений, ни для получения интересных последствий. [51] В этой таблице представлены два показателя выразительности из двух разных источников. Дополнительную меру выразительности в байтах GZip можно найти в игре Computer Language Benchmarks. [52]
Тесты [ править ]

Тесты производительности предназначены для имитации определенного типа рабочей нагрузки на компонент или систему. Компьютерные программы, использованные для сбора некоторых контрольных данных в этом разделе, возможно, не были полностью оптимизированы, и актуальность данных оспаривается. Наиболее точные тесты — это те, которые адаптированы к вашей конкретной ситуации. Сравнительные данные других людей могут иметь некоторую ценность для других, но правильная интерпретация создает множество проблем . Сайт Computer Language Benchmarks Game предостерегает от чрезмерного обобщения данных тестов, но содержит большое количество микротестов фрагментов кода, предоставленных читателями, с интерфейсом, который генерирует различные диаграммы и таблицы, сравнивающие конкретные языки программирования и типы тестов. [55]
Хронология конкретных сравнений языков
- 1974 – Сравнительные заметки об Алголе 68 и PL/I. [56] - С.Х. Валентайн - ноябрь 1974 г.
- 1976 – Оценка ALGOL 68 , JOVIAL J3B, Pascal , Simula 67 и TACPOL в сравнении с TINMAN – Требования к общему языку программирования высокого порядка.
- 1977 – Сравнение ПАСКАЛЬ и АЛГОЛА 68. [57] – Эндрю С. Таненбаум – июнь 1977 г.
- 1993 – Пять маленьких языков и как они выросли – БЛИСС , Паскаль , АЛГОЛ 68 , BCPL & C – Деннис М. Ричи – апрель 1993.
- 2009 — On Go — ох, продолжайте — Насколько хорошо Go от Google сможет противостоять языку программирования Brand X? – Дэвид Гивен – ноябрь 2009 г.
См. также [ править ]
Для отображения всех страниц, подкатегорий и изображений нажмите на кнопку «►»: |
---|
- Сравнение языков программирования (базовые инструкции)
- Сравнение языков программирования (синтаксис)
- Сравнение парадигм программирования
- Сравнение интегрированных сред разработки
- Сравнение мультипарадигмальных языков программирования
- Индекс ТИОБЕ
Ссылки [ править ]
- ↑ Диармуида Пиготта, По состоянию на май 2006 года Энциклопедия компьютерных языков заархивированная 20 февраля 2011 г. в Wayback Machine, расположенном в Университете Мердока , Австралия, насчитывает 8512 компьютерных языков.
- ^ Справочное руководство Ada, ISO/IEC 8652:2005(E) Ed. 3 , 3.9 Типы с тегами и расширения типов
- ^ Справочное руководство Ada, ISO/IEC 8652:2005(E) Ed. 3 , Раздел 6: Подпрограммы
- ^ Справочное руководство Ada, ISO/IEC 8652:2005(E) Ed. 3 , Раздел 12: Общие единицы измерения
- ^ Справочное руководство Ada, ISO/IEC 8652:2005(E) Ed. 3 , Раздел 9: Задачи и синхронизация
- ^ Справочное руководство Ada, ISO/IEC 8652:2005(E) Ed. 3 Приложение E: Распределенные системы
- ^ «Вак.ру» (PDF) . Архивировано из оригинала (PDF) 30 марта 2017 г. Проверено 9 августа 2008 г.
- ^ ИСО 1538:1984.
- ^ «Вак.ру» (PDF) . Архивировано из оригинала (PDF) 24 марта 2017 г. Проверено 9 августа 2008 г.
- ^ IEEE 694-1985.
- ^ Объекты - Определение и использование
- ^ «Спецификация языка балерины» (PDF) . WSO2. 01.05.2018. Архивировано из оригинала (PDF) 4 мая 2018 г. Проверено 3 мая 2018 г.
- ^ Jump up to: Перейти обратно: а б с POSIX.2 , оболочка и утилиты, интерпретатор команд (IEEE Std 1003.2-1992.)
- ^ JSR 274
- ^ bell-labs.com
- ^ ANSI C89, ISO/IEC 9899: 1990, 1999, 2011, 2018.
- ^ ISO / IEC 14882: 1998, 2003, 2011, 2014, 2017, 2020.
- ^ Codeproject.com: Функциональное программирование на C# 3.0 с использованием лямбда-выражения.
- ^ ECMA-334; ИСО/МЭК 23270:2006
- ^ Softvelocity.com
- ^ «Кристалл» . Гитхаб . 2 ноября 2021 г.
- ^ «Кристалл Дженерик» . Crystal-lang.org . 13 апреля 2024 г.
- ^ «Параллелизм — Кристалл» . Crystal-lang.org . Проверено 2 апреля 2024 г.
- ^ Основные механизмы языка Эйфеля
- ^ Закрытие (компьютерное программирование)
- ^ ECMA-367; ИСО/МЭК 25436:2006
- ^ Язык программирования Go (FAQ)
- ^ JSR 241
- ^ «Отчет о языке Haskell 2010» . Проверено 7 декабря 2011 г. Большинство реализаций Haskell расширяют стандарт Haskell 2010.
- ^ «М8 отсутствует!» . 2 июля 2014 г.
Впервые заглянув в будущие отражающие возможности Kotlin, вы теперь можете получать доступ к свойствам как к первоклассным объектам в Kotlin.
- ^ Halcyon (Inworldz) и Open Sims предлагают совместимые реализации с дополнительными функциями.
- ^ Lua не имеет явного типа «объекта» (для определения объекта используется более общий тип «таблица»), но имеет явный синтаксис для вызова метода объекта.
- ^ Выпуски версий сопровождаются полным справочным руководством Lua, показывающим полный синтаксис и семантику; эталонная реализация и набор тестов. Они используются для создания других реализаций и компиляторов Lua VM , таких как Kahlua и LLVM-Lua.
- ^ ИСО/МЭК 10514-1:1996.
- ^ ИСО 7185
- ^ Руководство по PHP , Глава 19. Классы и объекты (PHP 5) ,
- ^ Руководство по PHP , Глава 17. Функции
- ^ «Справочное руководство по языку PostScript» (PDF) . Архивировано из оригинала (PDF) 18 февраля 2017 г. Проверено 18 февраля 2017 г.
- ^ Является ли Rust объектно-ориентированным языком программирования?
- ^ Клабник, Стив; Николс, Кэрол. «Макросы» . Язык программирования Rust .
- ^ Р 3 РС, Р 4 РС, Р 5 РС, Р 6 РС, Р 7 RS маленькое издание
- ^ Р 0 РС, Р 1 РС, Р 2 РС
- ^ SMLNJ.org
- ^ «STD.stdio — Язык программирования D» .
- ^ Scala работает на виртуальной машине Java, от которой она наследует обработку исключений во время выполнения.
- ^ Jump up to: Перейти обратно: а б gcc может предупреждать о непроверенной ошибке errno . Более новые версии Visual Studio обычно выдают исключения при сбое ввода-вывода при использовании stdio .
- ^ Опционально можно включить значительную проверку ошибок, но по умолчанию Perl не является отказоустойчивым.
- ^
set -e
включает завершение, если какой-либо непроверенный статус выхода не равен нулю. - ^ Данные из МакКоннелл, Стив (30 ноября 2009 г.). Код завершен . Майкрософт Пресс. п. 100. ИСБН 9780735636972 . Столбец «Соотношение операторов » «показывает типичное соотношение исходных операторов на нескольких языках высокого уровня к эквивалентному коду на C. Более высокое соотношение означает, что каждая строка кода на указанном языке выполняет больше, чем каждая строка кода на C.
- ^ Отношение количества строк, выигранных каждым языком, к числу, выигранному C при использовании функции «Сравнить с» на странице МакЛун, Джон (14 ноября 2012 г.). «Длина кода, измеренная на 14 языках» . Архивировано из оригинала 19 ноября 2012 г. C gcc использовался для C, C++ g++ использовался для C++, FORTRAN G95 использовался для FORTRAN, Java JDK Server использовался для Java, а Smalltalk GST использовался для Smalltalk.
- ^ Феллизен, Маттиас. О выразительной силе языков программирования . ESOP '90 3-й Европейский симпозиум по программированию. CiteSeerX 10.1.1.51.4656 .
- ^ «Как измеряются программы» . Игра «Бенчмарки компьютерного языка» . Проверено 29 мая 2018 г.
- ^ Мандельброт, Бенуа Б. (1982). Фрактальная геометрия природы (Пересмотренная ред.). Сан-Франциско. ISBN 0-7167-1186-9 . OCLC 7876824 .
{{cite book}}
: CS1 maint: отсутствует местоположение издателя ( ссылка ) - ^ «Мандельброт» . Игра «Бенчмарки компьютерного языка» . Проверено 9 июля 2021 г.
- ^ «Окончательный эталон» . Игра «Бенчмарки компьютерного языка» . Проверено 29 мая 2018 г.
- ^ Валентин, С.Х. (ноябрь 1974 г.). «Сравнительные замечания по Алголу 68 и PL/I» . Компьютерный журнал . 17 (4): 325–331. дои : 10.1093/comjnl/17.4.325 .
- ^ «Свободный университет Амстердама» (PDF) .
Дальнейшее чтение [ править ]
- Цеззар, Рукнет (1995). Руководство по языкам программирования: обзор и сравнение . Артех Хаус. ISBN 978-0-89006-812-0 .