Porovnání programovacích jazyků - Comparison of programming languages

Programovací jazyky se používají k řízení chování stroje (často počítače ). Programovací jazyky se stejně jako přirozené jazyky řídí pravidly syntaxe a sémantiky .

Programovacích jazyků jsou tisíce a každý rok vznikají nové. Jen málo jazyků se stalo dostatečně populárními, aby je používalo více než několik lidí, ale profesionální programátoři mohou během své kariéry používat desítky jazyků.

Většina programovacích jazyků není standardizována mezinárodní (nebo národní) normou, dokonce ani široce používanými, jako je Perl nebo Standard ML (navzdory názvu). Mezi pozoruhodné standardizované programovací jazyky patří ALGOL , C , C ++ , JavaScript (pod názvem ECMAScript ), Smalltalk , Prolog , Common Lisp , Scheme ( standard IEEE ), ISLISP , Ada , Fortran , COBOL , SQL a XQuery .

Obecné srovnání

Následující tabulka porovnává obecné a technické informace pro výběr běžně používaných programovacích jazyků . Další informace najdete v článcích jednotlivých jazyků.

Jazyk Zamýšlené použití Rozkazovací způsob Objektově orientovaný Funkční Procesní Obecný Reflexní Řízené událostmi Jiný vzor (y) Standardizováno ?
1C: Podnikový programovací jazyk Aplikace , RAD , obchodní, obecné , webové , mobilní Ano Ano Ano Ano Ano Ano Objektově založené ,

Prototypové programování

Ne
ActionScript 3.0 Aplikace, na straně klienta , web Ano Ano Ano Ano 1996, ECMA
Ada Aplikace, vestavěný , v reálném čase , systém Ano Ano Ano Ano souběžné , distribuované , 1983, 2005, 2012, ANSI, ISO, GOST 27831-88
Aldor Vysoce doména specifická , symbolický výpočetní Ano Ano Ano Ne
ALGOL 58 aplikace Ano Ne
ALGOL 60 aplikace Ano Ano Ano 1960, IFIP WG 2.1 , ISO
ALGOL 68 aplikace Ano Ano Ano Ano souběžně 1968, IFIP WG 2.1 , GOST 27974-88 ,
Ateji PX Paralelní aplikace Ano pí kalkul Ne
APL Aplikace, zpracování dat Ano Ano Ano Ano Ano Ano Ano orientovaný na pole , mlčky 1989, ISO
Jazyk montáže Všeobecné Ano jakákoli, syntaxe je obvykle vysoce specifická a souvisí s cílovým procesorem IEEE 694-1985
AutoHotkey Automatizace GUI ( makra ), vysoce specifické pro doménu Ano Ano Ano Ano Ne
AutoIt Automatizace GUI (makra), vysoce specifické pro doménu Ano Ano Ano Ne
Balerína Integrace, agilní, na straně serveru , obecné Ano Ano Ano Ano Ano souběžné, transakční, staticky a silně typované programování, diagramové / vizuální programování 2018 De facto standard prostřednictvím Ballerina Language Specification
Bash Shell , skriptování Ano Ano Ne, ale volitelně POSIX.2
ZÁKLADNÍ Aplikace, vzdělávání Ano Ano 1983, ANSI, ISO, ECMA
BeanShell Aplikace, skriptování Ano Ano Ano Ano Probíhá , JCP
BLAHO Systém Ano Ne
BlitzMax Aplikace, hra Ano Ano Ano Ano Ne
Vypískat Aplikace, skriptování her Ano Ne
Bro specifické pro doménu, aplikace Ano Ano Ne
C Aplikace, systém, obecné použití, operace na nízké úrovni Ano Ano 1989, ANSI C89, ISO C90, ISO C99, ISO C11, ISO C18
C ++ Aplikace, systém Ano Ano Ano Ano Ano 1998. ISO/IEC 2003, ISO/IEC 2011, ISO/IEC 2014, ISO/IEC 2017
C# Aplikace, RAD, obchodní, klientská, obecná, serverová, webová Ano Ano Ano Ano Ano Ano Ano strukturované, souběžné 2000, ECMA, ISO
Clarion Obecné, podnikání, web Ano Ano Ano Neznámý
Čistý Všeobecné Ano Ano Ne
Clojure Všeobecné Ano souběžně Ne
CLU Všeobecné Ano Ano Ano Ano Ne
COBOL Aplikace, podnikání Ano Ano Ano ANSI X3.23 1968, 1974, 1985; ISO/IEC 1989: 1985, 2002, 2014
Kobra Aplikace, podnikání, obecné, web Ano Ano Ano Ano Ano Ne
ColdFusion (CFML) Web Ano Ano Ne
Lisp Všeobecné Ano Ano Ano Ano Ano Ano Ano rozšiřitelná syntaxe, pole orientované , syntaktická makra , hromadné odesílání , souběžné 1994, ANSI
COMAL 80 Vzdělání Ano Ano Ne
Krystal Obecný účel Ano Ano Ano Ano fáze alfa Ne
Kari aplikace Ano Ano líné hodnocení , nedeterminismus De facto standard prostřednictvím Curry Language Report
Cython Aplikace, obecné, numerické výpočty Ano Ano Ano Ano orientovaný na aspekty Ne
D Aplikace, systém Ano Ano Ano Ano Ano Ano generativní, souběžné Ne
Šipka Aplikace, web, server, mobilní, IoT Ano Ano Ano Ano Ano Ano strukturovaný Standard ECMA-408
Dylan aplikace Ano Ano Ne
Eiffelova Obecné, aplikace, podnikání, na straně klienta, na straně serveru, web (EWF) Ano Ano Ano Ano Ano, Erl-G Ano agenti distribuovaný SCOOP , bezpečný proti neplatnosti 2005, ECMA, ISO
ELÁN Vzdělání Ano Ano strukturované , postupné zdokonalování Ne
Elixír Aplikace, distribuované Ano Ano Ano souběžné, distribuované Ne
Erlang Distribuovaná aplikace Ano Ano Ano souběžné, distribuované Ne
Euforie aplikace Ano Ano Ne
Faktor Všeobecné Ano lze zobrazit jako Ano Ano orientované na hromádku Ne
FP Ano Ne
F# aplikace Ano Ano Ano Ano Ano Ano Ano Ne
Forth Všeobecné Ano lze zobrazit jako orientované na hromádku 1994, ANSI
Fortran Aplikace, numerické výpočty Ano Ano Ano Ano Ano maticový, vektorizovaný, souběžný, nativní paralelní distribuovaný/sdílený paměť 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)
ZDARMA Aplikace, numerické výpočty Ano Ano Ano Ano Ne
Gambie aplikace Ano Ano Ano Ne
Game Maker Language Aplikace, hry Ano Ano Ano Ne
GLBasic Aplikace, hry Ano Ano Ano jednoduché objektově orientované Ne
Jít Aplikace, web, server Ano Ano Ano Ano souběžně De facto standard přes Go Language Specification
Gosu Aplikace, obecné, skriptování, web Ano Ano Ano Ano Ne
GraphTalk aplikace Ano logika Ne
Báječný Aplikace, obecné, skriptování, web Ano Ano Ano Ano Ano Ano Ano meta-programování Probíhá , JCP
Přístav Aplikace, obchod, zpracování dat, obecné, web Ano Ano Ano Ano Ano Ano deklarativní Ne
Haskell aplikace Ano Ano líné hodnocení 2010, Haskell 2010
Haxe Aplikace, obecné, webové Ano Ano Ano Ano Ano Ne
HyperNext Aplikace, vzdělávání Ano Ano slabě napsaný Ne
HyperTalk Aplikace, RAD, obecné Ano Ano slabě napsaný Neznámý
Io Aplikace, skriptování řízené hostitelem Ano Ano Ne
IPL Všeobecné Ano Neznámý
ISLISP Všeobecné Ano Ano Ano Ano 1997, 2007, ISO
J. Zpracování dat orientovaný na pole, na úrovni funkcí , mlčky Ne
NEFRIT Distribuovaná aplikace Ano Ano Ne
Jáva Aplikace, obchodní, klientská, obecná, mobilní vývoj, serverová, webová Ano Ano Ano Ano Ano Ano Ano souběžně De facto standard prostřednictvím specifikace jazyka Java
JavaScript Klientská, serverová, webová Ano Ano Ano Ano Ano Ano založené na prototypu 1997, ECMA
Radost Výzkum Ano orientované na hromádku Ne
Julie Obecné, technické výpočty Ano Ano Ano Ano Ano Ano hromadné odesílání , meta, skalární a orientované na pole , paralelní, souběžné, distribuované („cloud“) Ne
K Zpracování dat, podnikání orientovaný na pole, mlčky Neznámý
Kotlin Aplikace, mobilní vývoj, na straně serveru, na straně klienta, web Ano Ano Ano Ano Ano Ano Ano Ne
Ksh Shell, skriptování Ano Ano Ano několik variant, vlastní programovatelné, dynamicky načítatelné moduly 1992, POSIX.2
LabVIEW (G) Aplikace, automatizace průmyslové instrumentace Ano Ano Ano Ano tok dat , vizuální Ne
Lisp Všeobecné Ano Neznámý
LiveCode Aplikace, RAD, obecné Ano Ano slabě napsaný Ne
Logtalk Umělá inteligence, aplikace Ano Ano Ano logika Ne
Linden Scripting Language (LSL) Skriptování a animace obsahu virtuálních světů Ano Ano Ano Skripty existují v objektech na světě Možná
Lua Aplikace, vestavěné skriptování Ano Ano Ano Ano Ano orientovaný na aspekty, založený na prototypech Ne
Javor Symbolické výpočty, numerické výpočty Ano Ano Ano Ano distribuován Ne
Mathematica Symbolický jazyk Ano Ano Ano Ano Ano Ano Ano logika, distribuovaná Ne
MATLAB Vysoce doménové, numerické výpočty Ano Ano Ano Ne
Modula-2 Aplikace, systém Ano Ano 1996, ISO
Modula-3 aplikace Ano Ano Ano Ne
MUMPS (M) obecné , aplikace , databáze Ano
(Vysoce imperativní
má pouze příkazy)
Schváleno pro další standard Pouze výrazy
Žádné výrazy Lambda
Ano Částečně přes Indirection
a Xecute
Ano Schváleno pro další standard souběžné , víceuživatelské , NoSQL , zpracování transakcí první ANSI byl 1977, nejnovější ANSI 1995, nejnovější ISO 2020, ANSI, ISO
Nim Aplikace, obecné, webové, skriptovací, systémové Ano Ano Ano Ano Ano Ano hromadné odeslání , souběžné, meta Ne
Oberon Aplikace, systém Ano Ano Ne
Objekt Pascal Aplikace, obecné, mobilní aplikace, web Ano Ano Ano Ano Ano Ano strukturovaný Ne
Cíl-C Aplikace, obecná Ano Ano Ano Ano souběžně Ne
OCaml Aplikace, obecná Ano Ano Ano Ano Ano Ne
Occam Všeobecné Ano Ano souběžné, procesně orientované Ne
Opa Webové aplikace Ano Ano Ano distribuován Ne
OpenLisp Obecně, Embedded Lisp Engine Ano Ano Ano Ano Nahrazuje ISLISP , ISO
Kyslík aplikace Ano Ano Ano Ne
Oz-Mozart Aplikace, distribuce, vzdělávání Ano Ano Ano souběžné, logické Ne
Pascal Aplikace, vzdělávání Ano Ano 1983, ISO
Perl Aplikace, skriptování, zpracování textu, web Ano Ano Ano Ano Ano Ano Ne
PHP Serverová stránka, webová aplikace, web Ano Ano Ano Ano Ano Standard „De facto“ prostřednictvím jazykové specifikace a požadavků na komentáře (RFC)
PL/I aplikace Ano Ano Ano 1969, ECMA-50 (1976)
Plus Vývoj aplikací, systému Ano Ano Ne
PostScript Grafika, popis stránky Ano Ano

zřetězené , orientované na zásobník

Ano, jako referenční příručka pro PostScript
Prostředí PowerShell Administrace, aplikace, obecné, skriptování Ano Ano Ano Ano Ano potrubí Ne
Prolog Aplikace, umělá inteligence Ano Ano Ano logika, deklarativní 1995, ISO/IEC 13211-1: 1995, TC1 2007, TC2 2012, TC3 2017
PureBasic aplikace Ano Ne
Krajta Aplikace, obecné, webové, skriptování, umělá inteligence, vědecké výpočty Ano Ano Ano Ano Ano Ano Ano orientovaný na aspekty „De facto“ standard prostřednictvím návrhů vylepšení Pythonu (PEP)
R. Aplikace, statistiky Ano Ano Ano Ano Ano Ne
Raketa Vzdělávání, obecné, skriptování Ano Ano Ano Ano modulární, logická, meta Ne
Raku Skriptování, zpracování textu, lepidlo Ano Ano Ano Ano Ano Ano aspektově orientované, pole, líné hodnocení, vícenásobné odeslání, metaprogramování Ano
SKUTEČNÉ aplikace Ano Neznámý
Rebol Distribuováno Ano Ano Ano Ano Ano Ano dialektovaný Ne
REXX Skriptování Ano Ano ( dialekty NetRexx a Object REXX ) Ne Ano Ne Ne 1996 (ANSI X3.274-1996)
RPG Aplikace, systém Ano Ano Ne
Rubín Aplikace, skriptování, web Ano Ano Ano Ano orientovaný na aspekty 2011 (JIS X 3017), 2012 (ISO/IEC 30170)
Rez Aplikace, na straně serveru, systém, web Ano Ano Ano Ano Ano Ne Ano souběžně Ne
S Aplikace, statistiky Ano Ano Ano Ano Ne
Slang Aplikace, numerická, skriptovací Ano Ano Ne
Scala Aplikace, distribuovaná, webová Ano Ano Ano Ano Ano Ano De facto standard přes Scala Language Specification (SLS)
Systém Vzdělávání, obecné Ano rozšiřitelná syntaxe 1998, R 6 RS
Semeno 7 Aplikace, obecné, skriptování, web Ano Ano Ano Ano multi-paradigma, rozšiřitelné, strukturované Ne
Simula Vzdělávání, obecné Ano Ano Ano simulace diskrétních událostí , provádění programu s více vlákny (kvazi-paralelní) 1968
Malý základní Aplikace, vzdělávání, hry Ano Ano orientovaný na komponenty Ne
Pokec Aplikace, obecné, obchodní, umělá inteligence, vzdělávání, web Ano Ano Ano Ano Ano Ano souběžný, deklarativní 1998, ANSI
SNOBOL Zpracování textu Neznámý
Standardní ML aplikace Ano Ano Ano 1997, SML '97
Rychlý Aplikace, obecná Ano Ano Ano Ano Ano Ano Ano souběžné, deklarativní, orientované na protokol Ne
Tcl Aplikace, skriptování, web Ano Ano Ano Ano Ano Ano Ne
Visual Basic Aplikace, RAD, vzdělávání, obchod, obecné (včetně VBA), automatizace kanceláří Ano Ano Ano Ano orientovaný na komponenty Ne
Visual Basic .NET Aplikace, RAD, vzdělávání, web, obchod, obecně Ano Ano Ano Ano Ano Ano Ano strukturované, souběžné Ne
Visual FoxPro aplikace Ano datově zaměřené, logické Ne
Vizuální prolog aplikace Ano Ano Ano Ano deklarativní, logická Ne
Wolframův jazyk Symbolický jazyk Ano Ano Ano Ano Ano Ano Ano logika, distribuovaná Ne
XL Ano Ano koncepční programování Ne
Xojo Aplikace, RAD, obecné, web Ano Ano Ano Ano Ano Ne
XPath / XQuery Databáze, zpracování dat, skriptování Ano stromově orientovaný W3C 1999 XPath 1, 2010 XQuery 1, 2014 XPath/XQuery 3.0
Zsh Shell , skriptování Ano Ano zatížitelných modulů Ne

Typové systémy

Failsafe I/O a systémová volání

Většina programovacích jazyků vytiskne chybovou zprávu nebo vyvolá výjimku, pokud selže operace vstupu/výstupu nebo jiné systémové volání (např. Chmod , kill ), pokud programátor výslovně nezajistí různé zpracování těchto událostí. Tyto jazyky tedy v tomto ohledu bezpečně selhávají .

Některé (většinou starší) jazyky vyžadují, aby programátor výslovně přidal kontroly těchto druhů chyb. Psychologicky mohou různé kognitivní předsudky (např. Optimistická předpojatost ) ovlivnit nováčky i odborníky a tato opomenutí mohou vést k chybnému chování .

Jazyk Failsafe I/O
1C: Enterprise Ano
Ada Ano (výjimky)
ALGOL Ano (výjimky nebo návratová hodnota v závislosti na funkci)
AutoHotkey Ne (globální ErrorLevel musí být výslovně zaškrtnuto)
Bash Volitelný
Balerína Ano
Bro Ano
C Ne
C ++ Některé ( STL iostreams vrhají na selhání, ale C API jako stdio nebo POSIX ne)
C# Ano
COBOL Ne
Lisp Ano (systém „podmínky a restartuje“)
Kari Ano
D Ano (házení na selhání)
Eiffelova Ne - ve skutečnosti to závisí na knihovně a není to definováno jazykem
Erlang Ano
Fortran Ano
GLBasic Ne - obecně způsobí selhání programu
Jít Ano (pokud výsledek není výslovně ignorován)
Gosu Ano
Přístav Ano
Haskell Ano
ISLISP Ano
Jáva Ano
Julie Ano
Kotlin Ano
LabVIEW Ano
Lua Ne (některé funkce nevarují ani nevracejí výjimky)
Mathematica Ano
Objekt Pascal Nějaký
Cíl-C Ano (výjimky)
OCaml Ano (výjimky)
OpenLisp Ano
Perl Ne
PHP Ano
Krajta Ano
Raku Ano
Rebol Ano
Rexx Ano (s volitelným signálem na ... manipulace s pastí)
RPG Ne
Rubín Ano
Rez Ano (pokud výsledek není výslovně ignorován)
S Neznámý
Pokec Ano
Scala Ano
Standardní ML Ano
Swift ≥ 2,0 Ano (výjimky)
Tcl Ano
Visual Basic Ano
Visual Basic .NET Ano
Vizuální prolog Ano
Wolframův jazyk Ano
Xojo Ano
XPath / XQuery Ano (výjimky)
Jazyk Failsafe I/O

Expresivita

Jazyk Poměr prohlášení Poměr čar
C 1 1
C ++ 2.5 1
Fortran 2 0,8
Jáva 2.5 1.5
Perl 6 6
Pokec 6 6.25
Krajta 6 6.5

Literatura o programovacích jazycích obsahuje velké množství neformálních tvrzení o jejich relativní vyjadřovací síle , ale neexistuje žádný rámec pro formalizaci takových prohlášení ani pro odvozování zajímavých důsledků. Tato tabulka poskytuje dvě míry expresivity ze dvou různých zdrojů. Další měřítko expresivity v bajtech GZip najdete ve hře Benchmarky počítačových jazyků.

Srovnávací hodnoty

Barplot log-time k výrobě 1600 m² Mandelbrot, jak je uvedeno ve hře The Benchmarks Game

Srovnávací testy jsou navrženy tak, aby napodobovaly určitý typ pracovní zátěže na komponentě nebo systému. Počítačové programy používané ke kompilaci některých dat srovnávacích testů v této části možná nebyly plně optimalizovány a relevance dat je sporná. Nejpřesnější měřítka jsou ta, která jsou přizpůsobena vaší konkrétní situaci. Srovnávací data jiných lidí mohou mít pro ostatní určitou hodnotu, ale správná interpretace přináší mnoho výzev . Web Game Language Benchmarks Game varuje před přílišným zobecňováním z benchmarkových dat, ale obsahuje velké množství mikro-benchmarků fragmentů kódu přispívajících čtenáři s rozhraním, které generuje různé grafy a tabulky porovnávající konkrétní programovací jazyky a typy testů.

Časová osa srovnání konkrétních jazyků

  • 1974 - Srovnávací poznámky k Algol 68 a PL/I - SH Valentine - listopad 1974
  • 1976 - Vyhodnocení ALGOL 68 , žoviální J3B, Pascal , Simula 67 a TACPOL Versus klempíři - Požadavky na společné vysoké Objednat programovací jazyk.
  • 1977 - Srovnání PASCAL a ALGOL 68 - Andrew S. Tanenbaum - červen 1977.
  • 1993 - Pět malých jazyků a jak vznikaly - BLISS , Pascal , ALGOL 68 , BCPL & C - Dennis M. Ritchie - duben 1993.
  • 2009 - On Go - oh, go on - Jak dobře se Google Go postaví proti programovacímu jazyku Brand X? - David daný - listopad 2009

Viz také

Chcete -li zobrazit všechny stránky, podkategorie a obrázky, klikněte na „►“:

Reference

Další čtení