Zdrojový kód

Z Multimediaexpo.cz

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.

Obsah

Zápis zdrojového kódu

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

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

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ý.


Překladač

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ů).


Portování programu

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

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.

Ostatní možnosti použití

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).

Dekompilace

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

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ší).


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

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

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.


Reference

  • 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].