Сравнение языков программирования
Языки программирования используются для управления поведением машины (часто компьютера ). Подобно естественным языкам , языки программирования следуют правилам синтаксиса и семантики .
Существуют тысячи языков программирования [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) | Приложение, общее, система, игра, веб, серверная часть | Да | Можно рассматривать как | Можно рассматривать как | Да | Да | Да | Параллельно | Нет |
Visual Basic | Приложения, 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]
Тесты [ править ]
![](http://upload.wikimedia.org/wikipedia/commons/thumb/d/db/Barplot_language_speeds_%28Benchmarks_Game_Mandelbrot%29.svg/220px-Barplot_language_speeds_%28Benchmarks_Game_Mandelbrot%29.svg.png)
Тесты производительности предназначены для имитации определенного типа рабочей нагрузки на компонент или систему. Компьютерные программы, использованные для сбора некоторых контрольных данных в этом разделе, возможно, не были полностью оптимизированы, и актуальность данных оспаривается. Наиболее точные тесты — это те, которые адаптированы к вашей конкретной ситуации. Сравнительные данные других людей могут иметь некоторую ценность для других, но правильная интерпретация создает множество проблем . Сайт 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 г.
- ^ Перейти обратно: а б с 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, от которой она наследует обработку исключений во время выполнения.
- ^ Перейти обратно: а б 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 .