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 | 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
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 „►“: |
---|
|
- Porovnání základních instrukcí programovacích jazyků
- Porovnání programovacích jazyků (syntaxe)
- Porovnání programovacích paradigmat
- Porovnání integrovaných vývojových prostředí
- Porovnání programovacích jazyků s více paradigmaty
- Měření popularity programovacího jazyka
- Index TIOBE
Reference
Další čtení
- Cezzar, Ruknet (1995). Průvodce programovacími jazyky: Přehled a srovnání . ISBN 978-0-89006-812-0.