Přehled moderních programovacích jazyků včetně popularity
Programovací jazyky jsou jazyky sloužící k tvorbě počítačových programů (programování). Programování je proces algoritmizace dané úlohy, tj. vytváření postupu, jenž vede k řešení dané úlohy.
XML, HTML, WML apod. nejsou programovací jazyky ale jazyky značkovací.
Dělení programovacích jazyků
Programovací jazyky se dají rozdělit podle mnoha kritérií. Nejčastější způsoby jsou tyto:
Vyšší a nižší
Nižší programovací jazyky jsou jazyky primitivní, jejichž instrukce (víceméně přesně) odpovídají příkazům procesoru. To znamená, že procesor bude vykonávat ty instrukce, které programátor napíše. Jsou závislé na svém procesoru a nepřenositelné na jiný (nepříbuzný) procesor (program z 386 na Pentiu pojede, ale na Atari (s procesorem Motorola) ne).
V praxi to vypadá tak, že programátor musí vypisovat „každou pitomost“, i jednoduchý program má neúměrně složitý zdrojový kód. Výhodou je, že programátor má takto přístup i k funkcím počítače, které by měl ve vyšším programovacím jazyce nedosažitelné.
Patří sem jazyk symbolických adres (Assembler) a strojový kód (to, co uvidíte, když se vám podaří natáhnout obsah exe souboru do textového editoru). Vzláštním typem nižšího jazyka je tzv. autokód, který spojuje prvky nižších a vyšších jazyků. Vznikl rozšířením Assembleru o jednoduché příkazy pro často používané skupiny instrukcí.
Vyšší (problémově orientované) programovací jazyky jsou podstatně srozumitelnější, struktura jejich zdrojových je logická, nejsou závislé na strojových principech počítače. Do strojového kódu se převádějí kompilátorem (případně se rovnou spouštějí interpretrem viz dále). V praxi je vyšší programovací jazyk vše, co není Assembler, to znamená: Pascal, Basic, Prolog, Lisp, Algol, Fortran, …
Často se uvádí, že jazyk C je jakýmsi přechodem mezi vyššími a nižšími jazyky, má však blíže k vyšším.
Imperativní, logické a funkcionální
Imperativní (též procedurální) jazyky jsou téměř všechny jazyky, které se běžně používají. K řešení úlohy se používá algoritmu (postup, jak se má daná úloha vyřešit). Např. Pascal, C, Basic, PHP, Perl, …
U logických jazyků programátor pouze popíše daný problém pomocí logických výroků. Program z nich potom vyvozuje požadované informace. Někdy se používají ke tvorbě umělé inteligence, k praktickému programování jsou nevyužitelné. Např. Prolog.
Ve funkcionálních jazycích se vše popisuje pomocí funkcí, často neexistují proměnné, program je vlastně jen složitou soustavou funkcí. Často se pracuje se seznamy. Tento způsob programování je bližší klasické matematice, obecně je však velmi nepřehledný. Avšak pro některé problémy jsou tyto jazyky vhodnější než imperativní. Např. Lisp, Haskell, Miranda, …
Logickým a funkcionálním jazykům se někdy společně říka deklarativní jazyky (též neprocedurální). Některé jazyky mají prvky funkcionální i imperativní. Například víceméně funkcionální Scheme dovoluje programovat i imperativně, naopak imperativní Python umožňuje i funkcionální styl programování.
Interpretované a kompilované
Interpretované jazyky jsou překládány až za běhu programu. Jsou pomalejší, ale nemají tak velké formální požadavky (není potřeba inicializovat proměnnou, její datový typ se může za běhu měnit, ukazatele jsou zbytečné). Překládají se interpretrem, ten instrukce zároveň při překladu provádí. Hlavní nevýhodou těchto jazyků je, že se musejí vždy spouštět v interpretru. Do této skupiny patří většina verzí Basicu, všechny skriptovací jazyky (PHP, Python, …).
Kompilované jazyky jsou celé přeloženy a až potom mohou být spušněny. Jsou rychlejší, mají vyšší nároky na formální správnost kódu. Překádají se kompilátorem, výsledkem překladu je (většinou) .exe soubor. Patří sem většina klasických programovacích jazyků.
Teoreticky může mít jeden programovací jazyk verzi interpretovanou i kompilovanou.
Další způsoby dělení
Existuje ještě celá řada způsobů, jak dělit programovací jazyky. Např. u imperativních jazyků se mnohdy rozlišují ty, které podporují objektově orientované programování (OOP) nebo programování strukturované.
Dělení podle účelu. Zde je velmi obtížné přesně vymezit jednotlivé skupiny. Mnohé jazyky mají velmi široké použití, mnohdy jsou rozšířeny v mírných úpravách na většině operačních systémů. Avšak dosud nebyl vynalezen jazyk, který by byl vhodný úplně na všechno. A asi ani nikdy vynalezen nebude. Například velmi rozšířený jazyk C je vhodný hlavně na programování operačních systémů a dalších „nízkých“ aplikací. Assembler se používá k přístupu k hardwaru. PHP se dá použít pouze u internetových stránek. Atd. atd.
Jazyky se dají rozdělit na moderní a zastaralé. Toto dělení je však poněkud subjektivní. Mezi moderní jazyky však určitě patří PHP, Python, Delphi a Java. Zastaralé jsou zase např. Algol, Fortran a QBasic. Určitým evrgrínem je jazyk C, který sice vznikl na začátku 70. let, avšak používá se (většinou v modernizované podobě – C++) dodnes. Podobně je na tom i nejstarší programovací jazyk (pokud nepočítáme strojový kód) – Assembler. Ten je totiž v některých případech nenahraditelný.
Dělení podle datových typů
Statické typování
U statického typování se datový typ přiřazuje k proměnné při její deklaraci. Proměnné jsou známy již při překladu zdrojového kódu a díky tomu již v době překladu lze odhalit některá nesprávná použití proměnných a datových typů (chyby v programu). Také to umožňuje lepší optimalizaci programu na výkon. Nevýhodou je, že proměnná může nést jen hodnoty jednoho datového typu a obejít toto omezení komplikuje psaní programu.
Dynamické typování
U dynamického typování je datový typ sdružen s hodnotou. Hodnoty proměnných vznikají až za běhu programu a tak nemohou být jejich datové typy kontrolovány při kompilaci. Mohou ale být kontrolováný za běhu programu. U jazyků s dynamickým typováním může nést proměnná hodnotu různých datových typů. Také u nich lze za běhu programu datové typy, třeba třídy, modifikovat. To zlepšuje flexibilitu a snadnost programování, ale ztěžuje optimalizaci programu na výkon. Proto jazyky s dynamickým typováním jsou obecně pomalejší.
Přehled programovacích jazyků
Programovacích jazyků je ohromné množství a stále vznikají další a další. Zde je soupis těch asi nejvýznamnějších.
Ada
Jazyk určený k výrobě bezpečných a spolehlivých programů. Vyznačuje se velmi silnou typovou kontrolou. Velmi univerzální jazyk, píše se v něm i řídící software pro různé stroje včetně letadel, raketoplánů a dalších. Syntakticky vychází z Pascalu.
Algol
Algorithmic Language = algoritmický jazyk. Jeden z nejstarších programovacích jazyků (byl vytvořen na přelomu 50. a 60. let). Byl zaměřen na řešení zejména vědeckých a technických úloh. Ačkoliv obsahoval mnoho moderních prvků (které se používají dodnes), příliš se nerozšířil. Je základem všech moderních jazyků. Existuje spousta verzí Algolu, např. Algol 58, Algol 60, Algol 68.
APL
A Computer Programing Language = počítačový programovací jazyk. Programovací jazyk, jehož syntaxe vychází z matematické notace, nepodobá se tedy žádnému jinému programovacímu jazyku. Má speciální sadu znaků, nedá se zapisovat pomocí ASCII kódování, ale kódování Unicode už stačí. Má velmi úsporný kód a vynikající vyjadřovací schopnosti.
ASP
Active Server Pages. Serverový skriptovací jazyk od Microsoftu. Má obdobné možnosti jako PHP, ale poněkud složitější syntaxi. Existuje jen na serverech s operačním systémem windows.
Assembler
Assembler = sestavitel (programu).
Baltazar a Baltík
Programovací jazyky českého původu, určené pro výuku programování u dětí. Baltazar je bližší normálnímu programovacímu jazyku, programy se v něm tvoří z klávesnice, používají se v něm česká slova a je určen zejména starším dětem. Naproti tomu Baltík je určen těm nejmenším, ovládá se pouze myší a soustředí se na rozvoj logického myšlení.
Basic
Beginners All-purpose Symbolic Instruction Code = Pro začátečníky určený víceúčelový programovací prostředek. Odkaz.
C
Jazyk relativně nízké úrovně, původně zaměřený na programování operačních systémů. Má velmi úsporné vyjadřování, a proto je poněkud nepřehledný. Existuje velké množství rozšíření jazyka, nejznámější je objektově orientované C++. Syntaxi „céčka“ převzala pousta dalších jazyků (PHP, Java, Perl, …).
Cobol
Common Business Oriented Language = obecně obchodně orientovaný jazyk. Jeden z nestarších vyšších programovacích jazyků. Vznikl z potřeby programovacího jazyka pro obchodní a ekonomické úlohy, pro úlohy s hromadným zpracováním dat. Opět existuje mnoho verzí tohoto jazyka, např. Cobol-60, Cobol-61, Cobol-65, Cobol-69,…
Delphi
Programovací jazyk pro Windows. Správně se jmenuje Object Pascal (objektově orientovaný Pascal). Jeho prostředí je vizuální, to znamená, že programátor určuje vzhled programu „kreslením“ myší, stejným způsobem i vytváří některé části kódu. Samotný kód se celý skládá z procedur – reakcí na události (klik na prvek, …).
Fortran
Formula Translation = překlad vzorců. Vůbec první vyšší programovací jazyk. Vznikl v padesátých letech 20. století (první oficiální verze 1957), byl vhodný spíše k matematickým výpočtům. Znamenal ohromný pokrok ve vývoji programování, v podstatě všechny vyšší jazyky z něj (alespoň nepřímo) vycházejí. Dnes se používá již jen velmi málo.
HTML
Není programovací jazyk, ale jazyk pro práci s hypertextem (resp. formát hypertextu).
odkaz Značkovací jazyky
Java
Objektově orientovaný programovací jazyk nezávislý na platformě. Vyvinula jej firma Sun Microsystems. Používá se téměř všude, jako doplnění internetových stránek klientským skriptem (java applet), serverový skript (JSP), stejně jako na hry do mobilů i obyčejné programy pro jakýkoli operační systém. Vychází z jazyka C++ (jako mnoho jiných jazyků), který poněkud zjednodušuje. Jako konkurenční jazyk od Microsoftu vznikl C#.
JavaScript
Nejčastěji používaný internetový klientský skriptovací jazyk. Proběhne až v internetovém prohlížeči (na rozdíl např. od PHP, které proběhne už na serveru). Z bezpečnostních důvodů může ovlivňovat jen internetovou stránku, nikoli uživatelský počítač. Podobně je na tom i méně používaný VBScript. Odkaz na JavaScript
Karel
Jednoduchý, prakticky nevyužitelný interpretovyný jazyk určený k výuce programování. Má pouze několik málo příkazů (záleží na verzi, většinou do jedné desítky). Těmito příkazy je ovládán robot, který se dokáže pohybovat se ve svém „městě“ a zvedat/pokládat značky. Původně byl anglický (byl však nazván česky: Karel po Karlu Čapkovi). Byla vytvořena i počeštěná verze s českými příkazy. Existuje i objektově orientovaný Karel++.
Lisp
List processing. Nejstarší neprocedurální jazyk. Veškeré problémy řeší pomocí symbolů a jejich seznamů. Používá se v programování umělé inteligence. Má velké množství dialektů. Odvozeny jsou od něj např. jazyky Tcl, Scheme, …
Logo
Interpretovaný programovací jazyk určený pro výuku dětí. Vychází z Lispu. Je známý zejména pro kreslení v tzv. „želví“ grafice – po kreslící ploše se pohybuje podle pokynů programátora „želva“, která za sebou nechává barevnou stopu.
Modula 2
Vychází z Pascalu, používal se i ke tvorbě hodně velkých projektů, podporuje modulární programování.
Pascal
Pascal je název programovacího jazyka, původně určeného hlavně k výuce programování. Jeho různé varianty a odvozeniny se však používají i k programování reálných aplikací. Jeho název byl zvolen na počest francouzského filosofa, matematika a fyzika Blaise Pascala.
Programovací jazyk Pascal navrhl na začátku 70. let profesor Niklause Wirtha z Vysoké školy technické v Curychu s těmito cíli:
- vytvořit jazyk vhodný pro výuku programování, který by byl založen na omezeném počtu srozumitelných konstrukcí,
- navrhnout strukturu jazyka tak, aby jej bylo možné snadno implementovat na většině tehdejších počítačů.
První verze Pascalu byla publikována v roce 1970, mírně opravená definice jazyka vyšla v roce 1974. V roce 1981 byla vydána norma ISO. Většina implementací Pascalu se od normy ISO více či méně odchyluje, zejména zavedením dalších konstrukcí zjednodušujících praktické programování. V oblasti PC dosáhla patrně největšího úspěchu implementace Turbo Pascal firmy Borland. Objektové rozšíření Pascalu se pak stalo i základem systému Delphi téže firmy.
Perl
Practical Extraction Report Language. Téměř univerzální interpretovaný jazyk. Dá se v něm napsat prakticky cokoliv, ale v praxi se používá zejména k psaní CGI skriptů (internetová technologie, serverový skript založený na výstupu .exe souboru) a v těch případech, kdy je potřeba složitě zpracovávat text. Je dosti nepřehledný.
PHP
Personal Home Page Tools (zkratka se vyvíjela – např.:Personal Home Page Construction Kit, dnes: PHP:Hypertext Preprocesor, a to první P je z historických důvodů.).
Internetový skriptovací jazyk (serverový) používaný k tvorbě webových stránek. Instrukce se vkládájí do HTML kódu, syntaxe je podobná jazyku C. Práce programu probíhá v serveru, na uživatelský počítač se posílají jen výsledky. Má ohromné možnosti: dokáže pracovat s databázemi, s velkým množstvím internetových protokolů (IMAP, POP3, SMTP – zpracování emailů; NNTP – news protokol; …), dokáže vytvářet obrázky a PDF soubory, má spoustu funkcí na zpracování řetězců, … Navíc je zdarma a volně šiřitelné! Oficiální stránky: www.php.net.
Další serverové skriptovací jazyky (ale už ne tak dobré) jsou: zastaralé SSI a výlučně windowsácké ASP.
PL/1
Programing Language 1. Starý neúspěšný programovací jazyk vycházející z Fortranu. Nepoužívá se. Byl to první pokus o co nejuniverzálnější programovací jazyk.
Prolog
Programming in Logic = logické programování. Je to neprocedurální jazyk (na rozdíl od většiny ostatních jazyků), popisuje programátorský problém pomocí logických výroků. Používá se k řešení problémů, které se dají popsat ve formě objektů a vztahů mezi nimi, k tvorbě umělé inteligence. Celý program v Prologu vypadá jako výpis jednoduchých vztahů mezi objekty. Z nich potom Prolog vyvozuje další informace na základě našich dotazů. Praktické využití Prologu je velmi malé.
Python
Název odvozen z názvu britského pořadu Monty Python’s Flying Circus. Python je značně univerzální interpretovaný programovací jazyk, rozšířený na všech běžně používaných operačních systémech. Má obdobné vlastnosti jako Perl, k němuž bývá často přirovnáván. Oproti němu je však přehlednější.
Scheme
Jazyk odvozený od Lispu, někdy považován za jeho dialekt.
Simula
Simple Universal Language – jednoduchý univerzální jazyk. Objektově orientovaný jazyk vhodný pro počítačovou simulaci.
Snobol
String Oriented Symbolic Language – Jazyk určený pro práci s řetězci. První jazyk zaměrený zejména na zpracování textových řetězců. V dnešní době byl nahrazen zejména Perlem a dalšími jazyky.
SSI
Server Side Includes – vsuvky na straně serveru. Jednoduchý zastaralý serverový skriptovací jazyk. Nemá zdaleka takové možnosti jako PHP nebo ASP.
Tcl
Tool Command Language. Univerzální skriptovací jazyk. Je oblíben zejména díky knihovně Tk, která umožňuje psát programy s grafickým rozhraním.
Visual Basic
Programovací jazyk pro Windows od Microsoftu. Má vizuální prostředí. Dají jím vytvářet jak klasické aplikace, tak i makra do dokumentů wordu. Má prvky mnoha moderních jazyků (je objektově orientovaný), ale přetrvávají i zastaralé qbasicovské vlivy (absence složeného příkazu, „repeat..until styl“ všech cyklů i podmínek – viz QBasic).
VBScript
Visual Basic Script. Internetový skriptovací jazyk, běžící u klienta, obdoba JavaScriptu. Vychází z Visual Basicu. Jeho největší nevýhoda (oproti JavaScriptu) je, že jej podporuje jen IE. V podstatě se jedná o nepovedený pokus Microsoftu konkurovat JavaScriptu. Údajně jde jeho zdroják zakódovat, aby nešel okopírovat.
XML
Není programovací jazyk, ale jazyk pro práci s daty.
Základy programování
- Programování – algoritmus, program, postup při tvorbě programu, metody programování
- Programovací jazyky – rozdělení, srovnání – Pascal, Delphi, C# a Java
- Vývojový diagram – značky a zásady, příklad diagramu
- Programové struktury – podmínky, větvení, cykly – znázornění ve VD
Programování
- Základní pojmy
- algoritmus – postup řešení problému – recept, výrobní návod, návod k obsluze …
- počítačový algoritmus – jednoznačný postup pro zpracování dat
- program – posloupnost příkazů, která určuje způsob zpracování dat
- Postup při tvorbě programu
- Analýza problému – definice zadání a možností řešení dané úlohy
- Koncept řešení – volba metod řešení, rozložení řešení na dílčí úlohy
- Sestavení algoritmu řešení – návrh datové struktury, zápis algoritmu
- Zápis programu v programovacím jazyce
- Ověření programu – překlad – kompilace a ověření správnosti programu
- Optimalizace programu – vylepšování programu, kontrola vstupních a výstupních dat
- Metody programování
- Strukturované programování – členění programu na jednoduché celky – struktury
- Vizuální programování – sestavení programu pomocí vizuálních komponent a řídících akcí
- Objektové programování – řešení je modelováno pomocí objektů, které obsahují data i metody zpracování
Programovací jazyky
- Rozdělení
podle úrovně
- nižší pr. jazyky – využití sady instrukcí procesoru
- vyšší programovací jazyky – srozumitelné příkazy a instrukce překládány pro OS a procesor
podle způsobu překladu
- interpretované – spouštěné v běhovém prostředí(Interpreter), které postupně překládá a vykonává příkazy
- kompilované – přeložené do spustitelného tvaru (exe) pomocí překladače (kompilátoru)
- Srovnání
C
- historicky nejstarší, vyvinutý v 70. letech pro OS Unix, předchůdce C++, Java a C#
- programování OS, systémových aplikací, překladačů a interpreterů
Pascal
- jazyk vyvinutý na univerzite v Curychu v 70. letech pro výuku programování
- programování aplikací pro DOS – TurboPascal, pro Windows – ObjectPascal a Delphi
Delphi
C#
Java
|
Vývojové diagramy
Programové struktury |
|
|
|
|
|
|
|