V naprostých začátcích éry počítačového věku bylo nutné psát programy v tzv. strojovém kódu, assembleru. Neexistovaly žádné programovací jazyky. Proto vývoj, na dnešní dobu jednoduchých, programů byl možný pouze za účasti skutečně bystrých a znalých programátorů, většinou vědeckých pracovníků.
Protože člověk je tvor líný, hledal již od začátku programování různé cesty, jak si je zjednodušit. Vždyť ze zápisu instrukcí ve strojovém kódu není na první pohled zřejmé, co daný kus kódu vykonává. A tak postupem doby vznikly nejrůznější programovací jazyky, z nichž nejznámějším je C. K dispozici máme různá vývojová prostředí, která pomáhají nejen se správnou syntaxí zdrojového kódu, ale obsahují také nástroje pro ladění nebo vizuální tvorbu aplikací.
Některé programovací jazyky |
Jazyk |
Datum vzniku |
Autor |
Fortran |
1957 |
John Backus |
Cobol |
1959 |
CODASYL |
C |
1970 |
Bellovy laboratoře, Kerninghan a Ritchie |
Pascal |
1971 |
Niklaus Wirth |
C++ |
1980 |
Bjarne Stroustrup |
Python |
1980 |
Guido van Rossum |
Perl |
1986 |
Larry Wall |
PHP |
1994 |
Rasmus Lerdorf |
Zejména díky jazyku Pascal se mohly řady programátorů rozšířit o další velmi schopné programátory, které však assembler odpuzoval. Pravdou je, že žádný program napsaný v tzv. vyšších programovacích jazycích není obecně tak výkonný jako tentýž napsaný v assembleru. Často se také tvrdí, že vinou vizuálních vývojových prostředí, jako jsou Delphi, Visual C++ nebo nástroje pro Javu, je na světě spousta nekvalitních programátorů. Druhou stranou mince je skutečnost, že díky těmto nástrojům vznikla spousta aplikací, kterých bychom se bez nich možná ani nedočkali.
Zdrojovým kódem to začíná
Základem každého programovacího jazyku je zdrojový kód. Pomocí něj programátor zapisuje v odpovídající syntaxi (struktuře) výrazy, jimiž určuje, jak a co má program provádět. Tento kód je pak pomocí překladače převedený do binární, spustitelné podoby.
Tato operace má několik fází. Nejprve jsou pomocí preprocesoru zpracovány zdrojové kódy. Ty jsou vytvořeny v nějakém editoru, jedná se tedy o klasické soubory textového typu. Při použití jazyku C se zpracovávají soubory .c, .cpp, .h a jiné. Programátoři v Delphi a Pascalu zase mohou preprocesor zásobovat soubory .pas, .dpr, .dfm a podobnými. Preprocesor tedy všechny tyto soubory spojí do jednoho nového souboru, který předává dále ke zpracování. V této chvíli nastupuje do práce překladač, často nazývaný také jako kompilátor.
Překlad je nejsložitější
Překlad, neboli kompilace programu, je jednou z nejsložitějších částí při cestě za spustitelným souborem. Skládá se hned z několika částí. Záleží samozřejmě na konkrétním překladači jazyka a také na platformě, pro kterou je určen.
Obecně ale překladač provádí následující kroky: Nejprve provede lexikální analýzu kódu. Zdrojový kód je rozdělen na jednotky představující proměnné, jednotlivé příkazy, klíčová slova atd. Při lexikální analýze se tedy kontroluje správnost zápisu zdrojového kódu. Pokud zde překladač narazí na problém, nemůže pokračovat dále. V pokročilých vývojových prostředích je programátor o chybě podrobně informován a většinou ji také snadno opraví (překlepy, špatný zápis atd.). Dále nastupuje syntaktická analýza. Zde se zjišťuje správná posloupnost zápisu kódu, v závislosti na použitém programovacím jazyku.
Nejobtížnější částí překladu je sémantická analýza. Zde musí překladač zkontrolovat význam jednotlivých výrazů a příkazů a zjistit, zda jsou logicky na správných místech. Výsledkem této třetí fáze je již téměř finální verze spustitelného programu. Moderní překladače mají také různé optimalizační fáze, při kterých upravují rychlost provádění programu. Překladač tedy vytvoří jakýsi binární kód, který předává dále.
Za vývojové prostředí nemusíte vždy platit. I freeware může nabídnout mnoho zajímavého – prostředí Lazarus pro jazyk FreePascal
Na řadě je pak tzv. linker, který vezme kód vytvořený překladačem, dále si vezme soubory, které mají být včleněny do výsledného souboru (ikony, obrázky a další zdroje), a vytvoří konečný spustitelný soubor, v závislosti na použité platformě.
Tento výsledný spustitelný soubor může být například běžný EXE pro Windows nebo DOS, DLL knihovna, ELF soubor pro Linux atd. Můžete však narazit také na programovací jazyky, které pracují na principu kódu a interpretu. Ke spuštění programu je totiž zapotřebí tzv. interpretu jazyka, který čte váš kód a postupně provádí instrukce v něm obsažené. Pokud chcete takto vytvořený program předat dalšímu uživateli, je nutné, aby měl na svém počítači také nainstalovaný interpret tohoto jazyka. Rád bych upozornil, že to neznamená, že dotyčný uživatel si přečte vaše zdrojové kódy – mnoho interpretů pracuje s jakousi binární podobou zdrojových kódů.
Rozšířená vývojová prostředí |
Prostředí |
Výrobce |
Jazyk |
Druh |
Delphi |
Borland |
ObjectPascal |
komerční |
Visual C++ |
Microsoft |
C++ |
komerční |
Boa Constructor |
Riaan Booysen |
Python |
zdarma |
Dev-C++ |
Bloodshed Software |
C++ |
zdarma |
Lazarus |
OpenSource |
FreePascal |
zdarma |
Co jsou interprety?
K nejznámějším zástupcům interpretů patří programovací jazyk Python, který je k dispozici pro mnoho operačních systémů. Pokud spustíte textový nebo binární kód napsaný v tomto jazyce, systém spustí nejprve interpret a ten se postará o provedení kódu. Pro uživatele je to možná poněkud nepohodlné. Některé z těchto programovacích jazyků bývají také často nazývány skriptovacími. Zdrojový kód je sadou jednoduchých skriptů, které určují, jakou akci má interpret provést. Známými zástupci jsou programovací jazyky pro webové aplikace, PHP a ASP. Koneckonců i HTML soubory jsou skripty, o jejichž provedení se stará webový server a vrací je uživatelům v podobě internetových stránek.
Jak vidíte, cesta od napsání zdrojového kódu ke spuštění programu na počítači není zrovna jednoduchá. Naštěstí pro programátory většinu práce odvede opět počítač. Na nich zůstává pouze povinnost dodržovat správnost zápisu, vymyslet smysluplné ovládání programu a jeho vzhled. I tak to pro mnohé z nich obnáší hodně práce.
Poděkování tedy patří tvůrcům programovacích jazyků, bez kterých bychom dnes počítače na svém stole neměli, a také uživatelům vývojových nástrojů, kteří nás zásobují nejrůznějšími programy.
Článek vznikl ve spolupráci s časopisem Computer a čerpá z čísla 15-16/04.