Zdrojový kód

Z Wikipedie, otevřené encyklopedie
Skočit na: Navigace, Hledání

Zdrojový kód nebo zdrojový text (slangově zvaný zdroják) je v informatice označení zápisu textu počítačového programu v některém programovacím jazyce, který je uložen v jednom nebo více textových souborech (tzv. projekty). Zdrojový kód je následně buď přímo prováděn (interpretován, viz interpret) nebo je z něj nejprve vytvořen samostatný spustitelný soubor (přeložen, viz kompilátor) složený ze strojových instrukcí a teprve ten je pak přímo spuštěn (prováděn procesorem počítače). Běžný uživatel počítače obvykle se zdrojovým kódem nepřijde do styku.

Zápis zdrojového kódu[editovat | editovat zdroj]

Zdrojový kód obvykle programátor zapisuje pomocí textového editoru, ale může být též generován specializovaným programem. Textový editor může být součástí integrovaného vývojového prostředí (IDE), které programátorovi tvorbu zdrojového kódu usnadňuje a poskytuje mu další podporu: zvýraznění syntaxe, vyznačení syntaktických chyb, nápověda, seznamy funkcí, příklady, přímý přístup k navazujícím nástrojům (vyvolání kompilátoru, možnost krokování a sledování průběhu programu pomocí debuggeru, vytváření souborů pro řízení překladu (Makefile), zpracování dokumentace a podobně).

Použití zdrojového kódu[editovat | editovat zdroj]

Samotný zdrojový kód nelze přímo využít. Je potřeba ho buď nechat přímo provádět interpretem nebo je možné ho nejprve překladačem přeložit do cílového strojového kódu procesoru a poté ho nechat přímo procesorem vykonávat. Zdrojové kódy se obvykle s jednotlivými programy nedistribuují a běžný uživatel s nimi nepřijde do styku. Zvláštním případem je open source software, kde je dostupnost zdrojových kódů obvyklá. Umožňuje pokročilým uživatelům programy upravovat a zdrojové kódy přímo využívat (viz distribuce Linuxu a speciálně Gentoo Linux).

Interpret[editovat | editovat zdroj]

Při interpretaci je zdrojový kód průběžně převáděn do výkonného kódu procesoru, který zpracovává jednotlivé příkazy programu řádek po řádku. Tento způsob zpracování zdrojového textu za běhu programu je časově náročnější a běh programu může být relativně pomalý.

Související informace naleznete také v článku Interpret (software).

Překladač[editovat | editovat zdroj]

Překladač generuje strojový kód (souboru triviálních instrukcí procesoru) a provádí jeho optimalizace. Program může být následně proveden rychleji, než při interpretaci. Při překladu jsou obvykle nejprve vytvořeny objektové soubory a z nich pak linker vytvoří spustitelné binární soubory se strojovými instrukcemi procesoru. Změny v programu dělá programátor ve zdrojovém kódu. I když je možné dělat změny přímo v objektovém nebo strojovém kódu, není to obvyklé a je to velmi obtížné (zejména bez dostupných zdrojových kódů).

Pojem "překladač" se používá i pro programy, které negenerují spustitelný strojový kód, ale bajtkód, který se dále interpretuje například virtuálním strojem.

Související informace naleznete také v článku Překladač.

Portování programu[editovat | editovat zdroj]

Dostupnost zdrojového kódu je rozhodujícím faktorem při portování software na jiné platformy, pro jiné operační systémy.

Opravy chyb[editovat | editovat zdroj]

Chyby v programech se opravují zpravidla přímo ve zdrojovém kódu. Není-li zdrojový kód k dispozici, je oprava programu velmi náročná, ve větším rozsahu prakticky nemožná, protože je nutné zasahovat přímo do strojového kódu, kde je velmi obtížné najít souvislosti.

V takových případech se používá (aspoň) disassembler, který poskytne čitelnější kód.

Ostatní možnosti použití[editovat | editovat zdroj]

Zdrojový kód může sloužit jako popis software (viz UTSL) i jako výukový materiál pro začínající programátory, kteří si tak mohou osvojit různé obraty, postupy a metody. Využívá se také jako komunikační nástroj mezi zkušenými programátory, pro svoji krátkou a jednoznačnou interpretaci. Sdílení zdrojového kódu mezi vývojáři je velmi často považováno za rozhodující faktor ukazující na jejich programátorskou zručnost. Programátoři často využívají část zdrojového kódu z jednoho programu také v jiných projektech, což odpovídá konceptu softwarové znovupoužitelnosti (anglicky code reuse).

Zvlášť líní :-) programátoři si můžou zdrojový kód, nebo aspoň jeho část, nechat vygenerovat. Pro tyto účely se často používá C jako přenositelný asembler. Podobný přístup je použití preprocesoru, podmíněného překladu nebo syntaktických maker. Fáze zpracování nemusí být striktně a viditelně odděleny. V těchto případech je skutečný zdrojový kód ten soubor, ze kterého je generováno - ten je upravován programátory.

Dekompilace[editovat | editovat zdroj]

Zpětné vygenerování zdrojového kódu ze strojového kódu je možné pomocí dekompilátoru. Pro jednotlivé překladače existují specializované dekompilátory, které díky tomu, že se ve strojovém kódu nachází doplňující informace nebo se používají charakteristické posloupnosti, umožňují ve větší nebo menší míře získat původní zdrojový kód. Dekompilace může být téměř nemožná, pokud překladač použije pokročilé optimalizace nebo ji záměrně znemožní tvůrce programu. V takovém případě lze získat maximálně přepis strojového kódu do jazyka symbolických adres.

Organizace zdrojového kódu[editovat | editovat zdroj]

Zdrojový kód má jeho tvůrce obvykle uložen na pevném disku svého počítače. Pokud je programátorů více, musí spolu nějakým vhodným způsobem komunikovat a udržovat své jednotlivé kopie zdrojového kódu aktuální (tj. aby obsahovaly změny, které provedl kolega). Pro popis změn slouží speciální formát (diff), který popisuje jednotlivé změny a jejich kontext (okolní řádky programu). Jednotlivé změny popsané diffovými soubory označujeme jako záplaty (patch).

Protože je posílání změn pomocí jednotlivých záplat (včetně jejich začlenění do zdrojového kódu u příjemce) časově náročné, jsou tyto procesy obvykle automatizovány pomocí systému revizí (RCS, CVS, Git, Subversion a další).

Související informace naleznete také v článku Verzování.

Zdrojový kód programu nemusí být celý vytvořen v jednom programovacím jazyce; např. je běžné, že program, který je napsán v programovacím jazyce C někdy obsahuje části napsané v jazyce symbolických adres z důvodu optimalizace nebo kvůli snadnějšímu programování vstupně-výstupních funkcí. Různé části programu mohou být napsány různých programovacích jazycích a teprve při překladu integrovány pomocí knihoven nebo speciálních rozhraní.

Větší projekty vyžadují obvykle kompilaci více souborů obsahujících zdrojový kód. Aby programátor nemusel neustále myslet na všechny závislosti a zadávat jednotlivé pokyny kompilátoru ručně, používají se specializované řídící soubory Makefile. Tento soubor obsahuje popis závislostí mez jednotlivými částmi zdrojového kódu a postup překladu.

Licence[editovat | editovat zdroj]

Programy a jejich zdrojové kódy jsou obvykle chráněny licencí. Podle typu licence můžeme rozdělit software na svobodný software nebo proprietární software a dále na další podskupiny podle konkrétní použité licence. Všeobecně lze označit software za svobodný, jestliže je jeho zdrojový kód volně přístupný pro používání, distribuci, další úpravy a studium. U proprietárního software se neposkytuje veřejný přístup ke zdrojovým kódům a považuje se za soukromé vlastnictví, uplatňují se autorská práva a obchodní tajemství.

Styl zápisu programu[editovat | editovat zdroj]

Styl zápisu programu má přímou vazbu na snadnost jeho následné správy, úprav a rozšiřování. Existuje mnoho pravidel programovacího stylu, která jsou pro zápis zdrojového kódu uplatňována. Jejich cílem je obvykle čitelnost, přehlednost a jednotnost v rámci celého projektu. Styl může zahrnovat i požadavky na logickou strukturovanost zdrojového kódu, která jeho správu dále usnadňuje.

Související informace naleznete také v článku Styl zápisu programu.

Reference[editovat | editovat zdroj]

  • VEW04) "Using a Decompiler for Real-World Source Recovery", M Van Emmerik a T Waddington, the Working Conference on Reverse Engineering, Delft, Holandsko, 9 - 12 Listopad 2004. [1].