Zdrojový kód
Zdrojový kód (též zdrojový text,[1] slangově zdroják, anglicky source code) je v informatice označení zápisu počítačového programu nebo jeho části v nějakém programovacím jazyce. Kompletní zdrojový kód softwarového projektu je obvykle uložen v jednom nebo více textových souborech. Zdrojový kód může být buď přímo prováděn (interpretován) interpretem nebo přeložen kompilátorem, který z něj vytvoří spustitelný soubor (případně doplněný knihovnami) obsahující strojový kód, který může operační systém zavést do paměti a spustit, takže je 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
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í 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 interpreterem 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ů).
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.
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.
V takových případech se používá (aspoň) disassembler, který poskytne čitelnější kód.
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).
Zvlášť líní :-) programátoři si mohou zdrojový kód, nebo aspoň jeho část, nechat vygenerovat. Pro tyto účely se často používá C jako přenositelný assembler. 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
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ý obsahuje 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, Apache 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.
Odkazy
Reference
- Internetová jazyková příručka [online]. Ústav pro jazyk český Akademie věd České republiky [cit. 2017-03-27]. Dostupné online. ((česky))
Literatura
Externí odkazy
- Obrázky, zvuky či videa k tématu zdrojový kód na Wikimedia Commons