Поређење програмских језика
Програмски језици се користе за контролу понашања машине (често рачунара). Као природни језици, програмски језици су у складу са правилима синтаксе и семантике.
Постоје хиљаде програмских језика[1] и сваке године се стварају нови. Мали број језика икада постане довољно популаран да њих користе више људи, али професионални програмери могу да користе десетине различитих језика у каријери.
Опште упоређивање
[уреди | уреди извор]У следећој табели се упоређују опште и техничке информације најчешће коришћених програмских језика. Види чланке појединачних језика за додатне информације. Имајте на уму да у наредној табели можда недостаје неке информације.
Језик | намена | Императив | Објектно-оријентисано | Функционални | Процедурални | Генерички | Рефлективни | Догађај-погон | Друге парадигме | Стандардизација? |
---|---|---|---|---|---|---|---|---|---|---|
ActionScript 3.0 | Application, client-side, Web | Да | Да | Да | 1996, ECMA | |||||
Ада | Апликација, уграђен, стварно време, систем | Да | Да[2] | Да[3] | Да[4] | упоредни,[5] расподељен,[6] | 1983, 2005, 2012, ANSI, ISO, GOST 27831-88[7] | |||
Алдор | Висок домен-специфичности, симболично рачунарство | Да | Да | Да | Не | |||||
АЛГОЛ 58 | Апликација | Да | Не | |||||||
АЛГОЛ 60 | Апликација | Да | 1960, IFIP WG 2.1, ISO[8] | |||||||
АЛГОЛ 68 | Апликација | Да | истовремен | 1968, IFIP WG 2.1, GOST 27974-88,[9] | ||||||
Атеји Пикс | Паралелна апликација | Да | пи рачун | Не | ||||||
АПЛ | Примена, обрада података | Низно оријентисано, прећутно | 1989, ISO | |||||||
Асемблер | Општи | Да | сваки, синтакса је обично високо специфична, у односу на циљни процесор | Да | ||||||
Ауто Хотки | GUI аутоматизација (макрои), високо специфични домен | Да | Не | |||||||
АутоИт | GUI аутоматизација (макрои), високо специфични домен | Да | Да | Да | Не | |||||
Баш | Љуска, скрипта | Да | Да | |||||||
Бејзик | Примена, едукација | Да | Да | 1983, ANSI, ISO | ||||||
ББј | Апликација, бизнис, веб | Да | Да | Не | ||||||
БинШел | Апликација, скрипза | Да | Да | Да | Да | у прогресу, JCP[10] | ||||
БитЦ | Систем | Да | Да | Да | Да | Не | ||||
БЛИСС | Систем | Да | Не | |||||||
БлицМакс | Примена, игра | Да | Да | Да | Не | |||||
БЛУ | Едукација | Да | Да | Да | Не | |||||
Бу | Примена | Не | ||||||||
Бро | специфичан домен, примена | Да | Да | Не | ||||||
C | Примена, систем,[11]
опште намене, операције на ниском нивоу |
Да | Да | 1989, ANSI C89, ISO C90, ISO C99, ISO C11[12] | ||||||
C++ | Примена, систем | Да | Да | Да | Да | Да | 1998, ISO/IEC 1998, ISO/IEC 2003, ISO/IEC 2011[13] | |||
C# | Примена, РАД, бизнис, на страни клијента, уопште, на страни сервера, веб | Да | Да | Да<![14] | Да | Да | Да | Да | структуриран, истовремено | 2000, ECMA, ISO[15] |
Кларион | Опште, бизноц, веб | Да | Да | Да[16] | Непознато | |||||
Клин | Општа | Да | Да | Не | ||||||
Clojure | Општа | Да | истовремен | Не | ||||||
КЛУ | Општа | Да | Да | Да | Да | Не | ||||
Кобол | Примена, бизнис | Да | Да | Да | Да | ANSI X3.23 1968, 1974, 1985; ISO/IEC 1989:1985, 2002, 2014 | ||||
Кобра | Примена, бизнис, општа, веб | Да | Да | Да | Да | Да | Не | |||
КолдФјужн (ЦФМЛ) | Веб | Да | Да | Не | ||||||
Common Lisp | Општа | Да | Да | Да | Да | Да | Да | проширирена синтакса, syntactic macros, multiple dispatch | 1994, ANSI | |
КОМАЛ 80 | Едукација | Да | Да | Не | ||||||
Кристал 1.0.0 | Едукација | Да | Да | Да | Не | |||||
Cython | Примена, општа, нумеричко рачунарство | Да | Да | Да | Да | аспект-оријентисан | Не | |||
Де | Application, system | Да | Да | Да | Да | Да | Да | генеративан, истовремен | Не | |
Дарт | Примена, веб | Да | Да | структуирана | Не | |||||
Дилан | Примена | Да | Да | Не | ||||||
Ајфел | Општа, примена, бизнис, страни клијент, на страни сервера, веб (ЕВФ) | Да | Да | Да[17][18] | Да | Да Erl-G | Да Агентс | расподељено израчунавање SCOOP, Void-safe | 2005, ECMA, ISO[19] | |
Еликсир | Апликација, дистрибуиран | Да | истовремен, дистрибуирано | Не | ||||||
Ерланг | Апликација, дистрибуиран | Да | истовремен, дистрибуиран | Не | ||||||
Еуфорија | Апликација | Да | Да | Не | ||||||
Фактор | стек-оријентисан | Не | ||||||||
Фалкон | Опште, апликације | Да | Да | Да | прототип ООП, порука оријентисани, табеларно програмирање | Не | ||||
ФП | Да | Не | ||||||||
F# | Апликација | Да | Да | Да | Да | Не | ||||
Форт | Општа | Да | може се видети | стек-оријентисан | 1994, ANSI | |||||
Фортран | Апликација, нумеричко рачунарство | Да | Да | Да | Да | 1966, ANSI 66, ANSI 77, MIL-STD-1753, ISO 90, ISO 95, ISO 2003, ISO/IEC 1539-1:2010 (2008) | ||||
ФриБЕЈЗИК | Апликација, нумеричко рачунарство | Да | Да | Да | Да | Не | ||||
Г2 | Апликација, интерфејс, експерт систем | Да | Да | Да | заједнички развој и графички рунтајм окружења | Не | ||||
Гамбас | Апликација | Да | Да | Да | Не | |||||
Game Maker Језик | Апликација, игрице | Да | Да | Да | Не | |||||
ГЛБејзик | Апликација, игрице | Да | Да | Да | лак објектно-орјентисани | Не | ||||
Гоу | Апликација, веб, страни сервера | Да | Да | Да | Да | Да | Да | истовремен | Не | |
Госу | Апликација, опште, скриптинг, веб | Да | Да | Да | Да | Не | ||||
ГрафТолк | Апликација | Да | логичан | Не | ||||||
Груви | Апликација, опште, скриптинг, веб | Да | Да | Да | аспект-орјентисан | У прогресу, JCP[20] | ||||
Харбур | Апликација, бизнис, обрада података, генерално, веб | Да | Да | Да | Да | Да | Да | декларативно | Не | |
Хаскел | Апликација | Да | Да | лења еволуција | 2010, Haskell 2010[21] | |||||
Хаксе | Апликација, опште, веб | Да | Да | Да | Да | Да | Не | |||
ХиперНекст | Апликација, едукација | Да | Да | слабо куцање | Не | |||||
ХиперТолк | Апликација, РАД, Опште | Да | Да | слабо куцање | Непознато | |||||
ИО | Апликација, изгубљен-дривен скриптинг | Да | Да | Не | ||||||
ИСЛИП | Опште | Да | Да | Да | Да | 1997, ISO | ||||
J | Обрада података | орјентисан-низ, Ниво функције, прећутан | Не | |||||||
JAДЕ | Апликација, дистрибуирано | Да | Да | Не | ||||||
Јава | Апликација, бизнис, на страни клијента, генерални, мобилни развој, на страни сервера, веб | Да | Да | Да | Да | Да | Да | истовремен | De facto standard via Java Језик Specification | |
Јулија | Општи и направљен за техничко рачунарство | Да | Да | Да | Да | Да | Да | Вишеструка депеша, мета, скаларни и низ-оријентисан, паралелан, истовремен, дистрибуиран ("облак") | Не | |
Јаваскрипт | Клијент-страни, на страни сервера, веб | Да | Да | Да | Да | Програмирање засновано на прототипу | 1997, ECMA | |||
Џој | истраживање | Да | стек-оријентисан | Не | ||||||
K | Обрада података, бизнис | орјентисан низ, прећутан | Непознато | |||||||
Котлин | Апликација, мобилни развој, сервер-сиде, на страни клијента, веб | Да | Да | Да | Да | Да[22] | Не | |||
ЛабВју (Г) | Апликација, индустријски инструменти-аутоматизације | Да | Да | Да | Да | Податак-ток програмирање, визуелно | Не | |||
Lisp | Општа | Да | Непознато | |||||||
Лајвкод | Апликација, РАД, опште | Да | Да | слабо куцање | Не | |||||
Логтолк | Вештачка интелигенција, апликација | Да | Да | Да | логичан | Не | ||||
Луа | Апликација, уграђен скриптинг | Да | Да[23] | Да | Да | Да | аспект-орјентисан | Не[24] | ||
Мапле | Симболичко рачунање, нумеричко рачунарство | Да | Да | Да | Да | дистрибуирано | Не | |||
Mathematica | Симболички језик | Да | Да | Да | Да | логичан, дистрибуиран | Не | |||
MATLAB | Високо-специфични домен, нумеричко рачунарство | Да | Да | Да | Не | |||||
Модула-2 | Апликација, систем | Да | Да | 1996, ISO[25] | ||||||
Модула-3 | Апликација | Да | Да | Да | Не | |||||
МУМПС (M) | Апликација, база података | Да | Да | истовремен, мулти-корисник, НоСкул, процес трансакције | 1977, ANSI | |||||
Ним | Апликација, опште, веб, скриптинг, систем | Да | Да | Да | Да | Да | Да | Вишеструка депеша, Истовремени, мета | Не | |
Оберон | Аплиација, систем | Да | Да | Не | ||||||
Објектни Паскал (Делфи) | Апликација, опште, мобилни апликација, веб | Да | Да | Да | Да | Да | Да | структуиран | Не | |
Objective-C | Апликација, опште | Да | Да | Да | истовремен | Не | ||||
OКамл | Апликација | Да | Да | Да | Да | Не | ||||
Оккам | Опште | Да | Да | concurrent, процесно-орјентисано | Не | |||||
Опа | Веб апликације | Да | Да | Да | дистрибуирано | Не | ||||
Оксиген | Апликација | Да | Да | Да | Не | |||||
Оз | Апликација, дистрибуција, едукација | Да | Да | Да | истовремен, логичан | Не | ||||
Паскал | Апликација, едукација | Да | Да | 1983, ISO[26] | ||||||
Перл | Апликација, скриптинг, обрада текста, веб | Да | Да | Да | Да | Да | Да | Не | ||
PHP | Сервер-страна, веб апликација, веб | Да | Да[27] | Да[28] | Да | Не | ||||
ПЛ/И | Апликација | Да | Да | Да | 1969 | |||||
Плус | Апликација, развој система | Да | Да | Не | ||||||
Пролог | Апликација, вештачка интелигенција | логичан | 1995, ISO | |||||||
ПјурБејзик | Апликација | Да | Не | |||||||
Пајтон | Апликација, опште, веб, скриптинг, вештачка интелигенција, Сциентифиц Цомпутинг | Да | Да | Да | Да | Да | аспект-орјентисан | Не | ||
R | Апликација, статистика | Да | Да | Да | Да | Не | ||||
Рекет | Едукација, опште, скриптинг | Да | Да | Да | Да | модулар, логичан, мета | Не | |||
РИЛбејзик | Апликација | Да | Непознато | |||||||
РИБОЛ | Дистрибуиран | Да | Да | Да | дијалект | Не | ||||
РПГ | Апликација, систем | Да | Да | Не | ||||||
Руби | Апликација, скриптинг, веб | Да | Да | Да | Да | аспект-орјентед | 2011(JIS X 3017), 2012(ISO/IEC 30170) | |||
РАСТ | Апликација, систем | Да | Да | Да | Да | Да | истовремен | Не | ||
С | Апликација, статистика | Да | Да | Да | Да | Не | ||||
С-Ленг | Апликација, нумерика, скриптинг | Да | Да | Не | ||||||
Скала | Апликација, дистрибуирано, веб | Да | Да | Да | Да | Да | Да | De facto standard via Scala Језик Specification (SLS) | ||
Scheme | Едукација, општа | Да | 1998, R6RS | |||||||
Sид7 | Апликација, општа, скрипта, веб | Да | Да | Да | Да | мулти-парадигма, проширива, структурирана | Не | |||
Симула | Едукација, опште | Да | Да | Да | симулација дискретних догађаја, нит (квази-паралелно) извршење програма | 1968 | ||||
Смол Бејзик | Апликација, едукација, игрице | Да | Да | компонентно | Не | |||||
Smalltalk | Апликација, општа, бизнис, веб, вештачка интелигенција, образовање | Да | Да | Да | Да | Да | истовремен, декларативан | 1998, ANSI | ||
СноБол | Обрада текста | Непознато | ||||||||
Стандард МЛ | Апликација | Да | Да | Да | 1997, SML '97[29] | |||||
Свифт | Апликација, општа | Да | Да | Да | Да | Да | Да | истовремено | Не | |
Tcl | Апликација, скрипта, веб | Да | Да | Да | Да | Да | Да | Не | ||
Вижуал бејсик | Апликација, РАД, едукација, бизнис, општа, (Укључује ВБА), Канцеларија за аутоматизацију | Да | Да | Да | Да | компонентно | Не | |||
Visual Basic .NET | Апликација, РАД, едукација, веб, бизнис, општа | Да | Да | Да | Да | Да | Да | Да | структуирано, дистрибутивно | Не |
Вижуал ФоксПро | Апликација | Да | Подаци аспекта, логичан | Не | ||||||
Вижуал Пролог | Апликација | Да | Да | Да | Да | декларативно, логичан | Не | |||
Windows PowerShell | Администрација | Да | Да | Да | Да | цевовод | Не | |||
Волфрам Језик | Симболички језик | Да | Да | Да | Да | логичан, дистрибуиран | Не | |||
XL | Да | Да | концептуално програмирање | Не | ||||||
Xojo | Апликација, РАД, општа, веб | Да | Да | Да | Да | Да | Не | |||
Језик | Намена | Императив | Објектно-орјентисани | Функционални | Процедурални | Генерички | Рефлективни | Догађај-погон | Друге парадигме | Стандардизација? |
Тип система
[уреди | уреди извор]Кратке дефиниције
- Номинални тип система значи да језик одлучује да ли су врсте компатибилне и/или еквивалентне на основу експлицитних израза и назива.
- Структурални тип система значи да језик одлучује да ли су врсте компатибилне и/или еквиваленте на основу дефиниције и карактеристика врсте.
- Тип провере одређује да ли и када се могу утврдити врсте. Статичка провера значи да ли су типови грешкака пријављени на основу текста (изворни код). Динамичка провера значи да су типови грешака пријављени на основу динамике програма (рун-тајм) понашања.
Језик | Сигуросни тип | Систем типова | Тип провере | Тип провере |
---|---|---|---|---|
Actionscript 3.0 | безбедан | имплицитно са опционалним експлицитним куцањем | статичан | |
Ада | безбедан[TS 1] | експлицитни | именски | статичан |
Алдор | несигуран | имплицитни | статичан | |
Алгол 58 | безбедан | експлицитни | статичан | |
Алгол 60 | безбедан | експлицитни | статичан | |
Алгол 68 | безбедан | експлицитни | структурални | статичан & tagged unions |
АПЛ | безбедан | динамичан | ||
Ауто Хотки | мањи | н/а | н/а | н/а |
Атеји ПИX | безбедан | експлицитни | именски | статичан |
Баш | ? | ? | ? | ? |
Бејсик | безбедан | експлицитни | именски | статичан |
БЛИС | мањи | н/а | н/а | н/а |
БинШел | безбедан | именски | динамичан | |
Бу | безбедан | имплицитни са оптималним експлицитним куцањем | статичан са оптималним динамичним куцањем | |
Бро | безбедан | имплицитни са оптималним експлицитним куцањем | именски | статичан |
C | несигуран | експлицитни | именски | статичан |
C++ (ISO/IEC 14882) | несигуран | експлицитни | именски | статичан[TS 2] |
C# | несигуран[TS 3] | имплицитни са оптималним експлицитним куцањем | именски | статичан[TS 4] |
Клин | безбедан | имплицитни | статичан | |
Clojure | безбедан | имплицитни са оптималним експлицитним куцањем | динамичан | |
Кобол | безбедан | експлицитни | именски | статичан |
КолдФјужн (СФМЛ) | безбедан | имплицитни | динамичан | |
Common Lisp | безбедан | имплицитни са оптималним експлицитним куцањем | динамичан | |
Курл | безбедан | именски | ||
Cython | безбедан | имплицитни са оптималним експлицитним куцањем | именски (типови израза) и структурални (Пајтон) | динамичан са оптималним статичним куцањем |
Д | несигуран[TS 3] | експлицитни | именски | статичан |
Дилан | безбедан | динамичан | ||
Ајфел | безбедан | именски | статичан | |
Ерланг | безбедан | имплицитни | динамичан | |
Еуфорија | безбедан | експлицитни, имплицитни са објектима | именски | статичан, динамичан са објектима |
F# | безбедан | имплицитни | именски | статичан |
Фалкон | безбедан | имплицитни | структурални | динамичан |
Форт | мањи | н/а | н/а | н/а |
Фортран | безбедан | експлицитни[TS 5] | именски | статичан |
Гамбас | безбедан | експлицитни | именски | |
ГЛБејсик | безбедан | експлицитни. не-експлицитне декларације доступне и преко опције пројекта | именски | статичан |
Гоу[30] | безбедан | имплицитни са оптималним експлицитним куцањем | структурални | статичан |
Госу | безбедан | посебно имплицитни (локални тип интерфејса) | именски (поткласа) и структурални (структурални) | статичан |
Груви | безбедан | имплицитни са оптималним експлицитним куцањем | динамичан са оптималним статичним куцањем | |
Харбур | безбедан | имплицитни са оптималним експлицитним куцањем | динамичан | |
Хаскел | безбедан | имплицитни са оптималним експлицитним куцањем | структурални | статичан |
Хејкс | безбедан | имплицитни са оптималним експлицитним куцањем | именски (поткласа) и структурални (структурални) | статичан са оптималним динамичним куцањем |
Ио | безбедан | имплицитни | динамичан | |
ИСЛИП | безбедан | динамичан | ||
Ј | безбедан | динамичан | ||
Јава | безбедан[31] | експлицитни | именски | статичан |
Јаваскрипт | безбедан | имплицитни | структурални | динамичан |
Јулија | безбедан | имплицитни са оптималним експлицитни куцањем[32] | ||
Џои | безбедан | динамичан | ||
Котлин | безбедан | посебно имплицитни (локални тип интерфејса) | именски | статичан |
ЛабВју | безбедан | |||
Луа | безбедан | имплицитни | динамичан | |
Мепл | безбедан | динамичан | ||
Математика | безбедан | динамичан | ||
МАТЛАБ M-код | безбедан | динамичан | ||
Модула-2 | несигуран[TS 3] | експлицитни | именски | статичан |
МОдула-3 | несигуран[TS 3] | експлицитни | структурални | статичан |
МУМС (M) | мањи | н/а | н/а | н/а |
Оберон | безбедан | експлицитни | именски | статичан and partially динамичан[TS 6] |
Objective-C | безбедан | експлицитни | именски | динамичан са optional статичан куцање[33] |
ОКамл | безбедан | имплицитни са оптималним експлицитним куцањем | структурални (резултату су именски) | статичан |
Објектни Паскал (Делфи) | безбедан | експлицитни | именски | статичан |
Опа | безбедан | имплицитни са optional експлицитни куцање | структурални | статичан |
Оксиген | несигуран | имплицитни | статичан | |
Оз | безбедан | имплицитни | структурални | динамичан |
Паскал | несигуран[TS 3] | експлицитни | именски | статичан |
Перл 5 | имплицитни | динамичан | ||
Перл 6 | посебно имплицитни[TS 7] | динамичан са оптималним статичним куцањем | ||
PHP | имплицитни са оптималним експлицитним куцањем | динамичан | ||
Плус | безбедан | експлицитни | структурални | статичан, динамичан (опциони) |
Пролог | динамичан | |||
Пјур | динамичан | |||
Пајтон | безбедан | имплицитни | структурални | динамичан |
РИБОЛ | безбедан | имплицитни | динамичан | |
Рекс | мањи | н/а, имплицитни wrt бројеви | н/а | статичан+динамичан wrt бројеви |
РПГ | несигуран | статичан | ||
Руби | безбедан | имплицитни | структурални | динамичан |
Руст | безбедан | имплицитни са оптималним експлицитним куцањем | статичан са оптималним динамичним куцањем | |
ЕС | динамичан | |||
ЕС-Ланг | безбедан | имплицитни | динамичан | |
Скала | безбедан | посебно имплицитни (локални тип интерфејса) | именски (поткласа) и структурални (структурални) | статичан |
Scheme | безбедан | имплицитни | динамичан (спор) | |
Сид7 | безбедан | експлицитни | именски | статичан |
Симула | безбедан | статичан[TS 8] | ||
Smalltalk | безбедан | имплицитни | динамичан | |
Свифт | безбедан | посебно имплицитни (локални тип интерфејса) | именски (поткласа) и структурални (структурални) | статичан |
Стандардни МЛ | безбедан | имплицитни са оптималним експлицитним куцањем | структурални | статичан |
Tcl | динамичан | |||
Вижуал бејсик | безбедан | имплицитни са оптималним експлицитним куцањем | именски | статичан |
Visual Basic .NET | несигуран[TS 3] | експлицитни | статичан | |
Вижуал Пролог | безбедан | посебно имплицитни | именски | статичан |
Волфрам језик | безбедан | динамичан | ||
Windows ПоверШел | безбедан | имплицитни | динамичан | |
XL | безбедан | именски | статичан | |
Xojo | безбедан | експлицитни | именски | статичан |
Језик | Сигуросни тип | Систем типова | Тип компатибилности међу сложенима | Тип провере |
- ^ Несигуран operations are well isolated by a "Unchecked_" prefix.
- ^ са optional динамичан type casting (see динамичан cast)
- ^ а б в г д ђ It is almost безбедан, unбезбедан features are неt commonly used.
- ^ са optional динамичан type (see динамичан member lookup)
- ^ Optionally, куцање can be експлицитниly implied by the first letter of the identifier (known as имплицитни куцање саin the Fortran community).
- ^ динамичан checking of type extensions i.e. inherited types
- ^ експлицитни for статичан types
- ^ optional for formal and virtual procedures
Грешка сигурности И/O и систем позива
[уреди | уреди извор]Већина програмски језика ће одштампати поруку о грешци и/или избацити изузетак ако операција улаза/излаза или неки други систем позива (нпр chmod, kill) погреше, осим ако програмер није експлицитно уређен за различита руковање овим догађајима. Ово, ови језици ће сигурно одштампати грешку у том погледу.
Неки (углавном старији) језици захтевају да програмер експлицитно дода провере за ове врсте грешака. Психолошки, различите когнитивне предрасуде (нпр. оптимизам пристрасности) може да утиче на новајлије и стручњаке подједнако и ови пропусти могу довести до погрешног понашања.
Језик | Грешке сигурности И/O |
---|---|
Ада | Да (изузеци) |
АЛГОЛ | Да (изузеци или повратна вредност у зависности од функције) |
Ауто Хотки | Не (светски ErrorLevel може бити експлицитни означен) |
Баш | Опционо[FSIO 1] |
Бро | Да |
C | Не[FSIO 2] |
C++ | Не[FSIO 3] |
Це# | Да |
КОБОЛ | Не |
Common Lisp | Да |
Де | Да[тражи се извор] |
Ејфел | Не – Зависи од библиотеке у којој јет дефинише нет |
Ерланг | Да |
Фалкон | Да |
Fortran | Да |
ГЛБејсик | Не – Изазваће проблеме да се програм сруши |
Гоу | Да (осим ако се експлицитни резултат игнорише) |
Госу | Да |
Харбур | Да |
Хаскел | Да |
ИСЛИП | Да |
Јава | Да |
Јулија | Да |
Котлин | Да |
ЛАБВју | Да |
Луа | Не (неке функције не упозоравају нити избацују изузетке) |
Математика | Да |
Објективни Паскал (Делфи) | Неки |
Objective-C | Да (изузеци) |
ОКамл | Да (изузеци) |
Перл | Не[FSIO 4] |
Перл 6 | Да |
PHP | Да |
Пајтон | Да |
РИБОЛ | Да |
Рекс | Да (са optional signal on… trap handling) |
РПГ | Не |
Руби | Да |
Руст | Да (док се решења експлицитно игноришу) |
ЕС | Непознато |
Smalltalk | Да |
Скала | Да[34] |
Стандардни ML | Да[тражи се извор] |
Свифт ≥ 2.0 | Да (изузеци) |
Tcl | Да |
Вижуал Бејсик | Да |
Вижуал Пролог | Да |
Волфрам језик | Да |
Xojo | Да |
Језик | Грешке безбедности И/O |
- ^
set -e
enables termination if any unchecked exit status is неnzero. - ^ gcc can warn on unchecked error status. Newer versions of Visual Studio usually throw exceptions on failed I/O when using stdio.
- ^ g++ can warn on unchecked error status. Newer versions of Visual Studio usually throw exceptions on failed I/O when using stdio.
- ^ Considerable error checking can be enabled optionally, but by default Perl is неt failбезбедан.
Изражајност
[уреди | уреди извор]Језик | Statements ratio[35] | Lines ratio[36] |
---|---|---|
Це | 1 | 1 |
Це++ | 2.5 | 1 |
Фортран | 2 | 0.8 |
Јава | 2.5 | 1.5 |
Перл | 6 | 6 |
Smalltalk | 6 | 6.25 |
Пајтон | 6 | 6.5 |
Литература о програмским језицима садржи обиље неформалних тврдњи о њиховој релативној изражајној моћи, али не постоји оквир за формализовање такве изјаве, а без последица.[37] Ова табела даје две мере изражајности из два различита извора. Додатни мера експресивности, у GZip bytes, може се наћи на Computer Language Benchmarks Game.
Бенчмаркови
[уреди | уреди извор]Бенчмаркови су дизајнирани да опонашају одређену врсту оптерећења на компоненте или на цео систем. У рачунарским програмима се користе за израду неких података и у овом одељку можда нису у потпуности оптимизирани, а и релевантност података је спорна. Најпрецизнији тестови су они који су прилагођени за одређену ситуацију. Бенчмарк подаци других људи могу имати неку вредност, али правилно тумачење доноси многе изазове The Computer Језик Benchmarks Game сајт упозорава против over-generalizing from benchmark data, али садржи велики број микро-бенчмаркових читача-допринео је код, са интерфејсом који генерише различите графиконе и табеле које упоређују специфичне програмске језике и врсте тестова.
Хронологија поређења специфичних језика
[уреди | уреди извор]- 1973 – Comparative неtes on Algol 68 and PL/I – S. H. Valentine – February 1973
- 1976 – Evaluation of ALGOL 68, JOVIAL J3B, Pascal, Simula 67, and TACPOL Versus TINMAN – Requirements for a Common High Order Programming Language.
- 1977 – A comparison of PASCAL and ALGOL 68[38] – Andrew S. Tanenbaum – June 1977.
- 1993 – Five Little Језикs and How They Grew – BLISS, Pascal, ALGOL 68, BCPL & C – Dennis M. Ritchie – April 1993.
- 2009 – On Go – oh, go on – How well will Google's Go stand up against Brand X programming language? – David Given – неvember 2009
Референце
[уреди | уреди извор]- ^ As of May 2006 Diarmuid Pigott's Encyclopedia of Computer Језикs Архивирано на сајту Wayback Machine (20. фебруар 2011) hosted at Murdoch University, Australia lists 8512 computer Језикs.
- ^ Ada Reference Manual, ISO/IEC 8652:2005(E) Ed. 3, 3.9 Tagged Types and Type Extensions
- ^ Ada Reference Manual, ISO/IEC 8652:2005(E) Ed. 3, Section 6: Subprograms
- ^ Ada Reference Manual, ISO/IEC 8652:2005(E) Ed. 3, Section 12: Генерички Units
- ^ Ada Reference Manual, ISO/IEC 8652:2005(E) Ed. 3, Section 9: Tasks and Synchronization
- ^ Ada Reference Manual, ISO/IEC 8652:2005(E) Ed. 3 Annex E: Distributed Systems
- ^ „Vak.ru” (PDF). Архивирано из оригинала (PDF) 30. 03. 2017. г. Приступљено 15. 01. 2016.
- ^ ISO 1538:1984
- ^ „Vak.ru” (PDF). Архивирано из оригинала (PDF) 24. 03. 2017. г. Приступљено 15. 01. 2016.
- ^ JSR 274
- ^ „CM.bell-labs.com”. Архивирано из оригинала 22. 06. 2013. г. Приступљено 15. 01. 2016.
- ^ ANSI C89, ISO/IEC 9899:1990, 1999, 2011
- ^ ISO/IEC 14882:1998, 2003, 2011
- ^ Codeproject.com: Функционални Programming in C# 3.0 using Lambda Expression[мртва веза]
- ^ ECMA-334; ISO/IEC 23270:2006
- ^ Softvelocity.com
- ^ Basic Eiffel Језик mechanisms
- ^ Closure (computer programming)
- ^ ECMA-367; ISO/IEC 25436:2006
- ^ JSR 241
- ^ „The Haskell 2010 Језик Report”. Приступљено 07. 12. 2011. Most Haskell implementations extend the Haskell 2010 standard.
- ^ „M8 is out!”. „As a first peek into the future Рефлективни capabilities of Kotlin, you can now access properties as first-class objects in Kotlin”
- ^ Lua doesn't have explicit "object" type (more general type of "table" is used for object definition), but does have explicit syntax for object method calling
- ^ Version releases are accompanied with a definitive Lua Reference Manual showing full syntax and semantics; a reference implementation, and a test suite. These are used to generate other Lua VM implementations and compilers such as Kahlua and LLVM-Lua.
- ^ ISO/IEC 10514-1:1996
- ^ ISO 7185
- ^ PHP Manual, Chapter 19. Classes and Objects (PHP 5)[мртва веза]
- ^ PHP Manual, Chapter 17. Functions[мртва веза]
- ^ SMLNJ.org
- ^ The Go Programming Language Specification
- ^ Sheng Liang, Gilad Bracha. „динамичан class loading in the Java virtual machine”. doi:10.1145/286942.286945.. Volume 33, Issue 10 of ACM SIGPLAN неtices, October 1998.
- ^ „Types — Julia Language 0.5.0-dev documentation[[Категорија:Ботовски наслови]]”. Архивирано из оригинала 26. 12. 2015. г. Приступљено 15. 01. 2016. Сукоб URL—викивеза (помоћ)
- ^ Developer.apple.com
- ^ Scala runs on the Java Virtual Machine from which it inherits the runtime exception handling.
- ^ McConnell, Steve (30. 11. 2009). Code Complete. Microsoft Press. стр. 100. ISBN 978-0-7356-3697-2.
- ^ The ratio of line count tests won by each Језик to the number won by C when using the Compare to feature at benchmarksgame.alioth.debian.org[мртва веза]. Last updated May, 2006. C gcc was used for C, C++ g++ was used for C++, FORTRAN G95 was used for FORTRAN, Java JDK Server was used for Java, and Smalltalk GST was used for Smalltalk.
- ^ Felleisen, Matthias. On the Expressive Power of Programming Languages. ESOP '90 3rd European Symposium on Programming. CiteSeerX: 10
.1 .1 .51 .4656. - ^ Vrije Universiteit Amsterdam
Литература
[уреди | уреди извор]- McConnell, Steve (30. 11. 2009). Code Complete. Microsoft Press. стр. 100. ISBN 978-0-7356-3697-2.
- Cezzar, Ruknet (1995). A Guide to Programming Languages: Overview and Comparison. ISBN 978-0-89006-812-0.
Спољашње везе
[уреди | уреди извор]- Поређење програмских језика на сајту Curlie (језик: енглески)
- 99-bottles-of-beer.net — one program in over a thousand variations and multiple Languages.
- The speed, size and dependability of programming Languages — charts and narrative based on The Computer Језик Benchmarks Game data.
- Shapes: Source Code Size and Run Time - charts based on current Benchmarks Game data.
- Comparison of syntaxes with sample codes.
- History of Programming Language Statements — history and comparison of programming Languages.
- Rosetta Code — a programming Language comparison wiki