**Zdrojový kód** (bežne len **kód**, slangovo **zdroják**) je postupnosť príkazov zrozumiteľných človeku napísaných v programovacom jazyku. V moderných programovacích jazykoch, zdrojový kód ktorý vytvára program býva rozdelený v niekoľkých textových súboroch.
Zdrojový kód počítačového programu je kolekcia súborov, ktoré môžu byť preložené z človeku zrozumiteľného formátu do ekvivalentnej počítačom spúštateľnej – binárnej formy, kompilátorom pre danú počítačovú architektúru, alebo ho program zvaný interpreter priamo vykonáva. Zdrojový kód sa môže nachádzať aj v papierovej publikácii alebo na akomkoľvek inom médiu.

Zdrojový kód slúži na to, aby človek mohol jednoducho a prehľadne robiť zmeny v počítačovom programe. K prehľadnosti prispieva aj možnosť ku každému príkazu písať komentáre. Zdrojový kód by však mal v ideálnom prípade byť ľahko zrozumiteľný a jeho činnosť na prvý pohľad jasná - k tomu prispieva o. i. použitie vhodných zaužívaných identifikátorov a štruktúrovanie.

Účel
----

Zdrojový kód sa tiež používa na vytvorenie objektového kódu, alebo na priame vykonanie interpreterom. Modifikácie nie sú uskutočňované na objektovom kóde, ale na zdrojovom kóde a potom sa znova prekladá.

Ďalší dôležitý účel zdrojového kódu je opis softvéru. Zdrojový kód má veľa ďalších spôsobov využitia. Môže sa využiť ako nástroj na učenie; začínajúci programátori často využívajú existujúci zdrojový kód na učenie sa programovacích techník a metodológie. Taktiež sa využíva ako komunikačný nástroj medzi skúsenými programátormi, kvôli jeho (ideálne) krátkej a jednoznačnej povahe. Zdieľanie zdrojového kódu medzi vývojármi je často považovaný za rozhodujúci faktor vyzretia ich programátorskej zručnosti.

Zdrojový kód je živý komponent pri portovaní softvéru na alternatívne počítačové platformy. Bez zdrojového kódu softvéru, portabilita je vo všeobecnosti, ako veľmi náročná, tak nepraktická a dokonca nemožná. Binárny preklad sa využíva na spúšťanie programu bez zdrojového kódu, ale nie na jeho údržbu. Na vygenerovanie zdrojového kódu, keď nie je dostupný, sa môže použiť dekompilácia a s trochou úsilia, vznikne použiteľný zdrojový kód (VEW04). Programátori často používajú rovnaké časti kódu z jedného softvéru aj v iných projektoch, podľa konceptu softvérovej znovupoužiteľnosti (*code reuse*).

Organizácia
-----------

Zdrojový kód ako konkrétna časť softvéru môže byť obsiahnutý v jednom, alebo viacerých súboroch. Zdrojový kód programu nemusí byť celý napísaný v jednom programovacom jazyku; napr. je bežné, že program, ktorý je napísaný v programovacom jazyku C, obsahuje aj časti napísané v Assembleri z dôvodu optimalizácie. Niektoré komponenty softvéru môžu byť napísané a kompilované osobitne, v akomkoľvek programovacom jazyku a neskôr sa integrujú do softvéru využitím techniky linkovania (pripájania) knižníc.

Komplexnejší softvér vyžaduje kompiláciu viacerých, niekedy tucty alebo dokonca stovky rôznych súborov obsahujúci zdrojový kód. Táto komplexnosť je podstatne zredukovaná prítomnosťou súboru Makefile, ktorý obsahuje zdrojový kód, ktorý opisuje vzťahy medzi jednotlivými súbormi zdrojového kódu a obsahuje informácie ako budú súbory kompilované. Ďalším, vývojármi často využívaným nástrojom, je systém kontroly revízií.

Licencia
--------

Softvér a jeho zdrojový kód obyčajne spadá medzi slobodný softvér a proprietárny softvér. Vo všeobecnosti, softvér je slobodný, ak jeho zdrojový kód je voľne prístupný na používanie, distribúciu, upravovanie a štúdium. Zdrojový kód proprietárneho softvéru nie je prístupný verejnosti, alebo je súkromným vlastníctvom. Často sa na tento účel využívajú podmienky rôznych autorských práv, ale spolieha sa aj na obchodné tajomstvo. Na daľsiu diskusiu o rozdieloch medzi tymito formami pozri softvérová licencia.

Kvalita
-------

Spôsob, akým je program napísaný, môže mať dôležité následky na jeho následnú správu. Veľa pravidiel programovacieho štýlu pre zdrojový kód, ktoré zdôrazňujú čitateľnosť a niektoré jazykovo závislé konvencie sú zamerané práve na správu zdrojového kódu softvéru, čo zahŕňa odstraňovanie chýb a aktualizáciu, prípadne jeho rozširovanie. Ďalším kritériom pri zvažovaní či je kód dobre napísaný môže byť logické štrukturovanie kódu do spravovateľných sekcií.

Referencie
----------

(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 November 2004. Kompletné znenie.