Zdrojový kód

Vývojáři tvoří počítačové programy tak, že píší tzv. zdrojový kód v některém z programovacích jazyků. Je to jakýsi předpis, recept, kterým programátor říká počítači, co má dělat.

Zde je ukázka zdrojového kódu velmi jednoduchého programu v jazyce C++:

# include <iostream>

using namespace std;

int main(int argc, char *argv[]) {

	cout << "Chcete slyšet vtip?" << endl;
	
	char odpoved = cin.get();

	cin.get();
	
	if (odpoved == 'a') {

		cout
		<< "Lidé se dělí do 10 skupin." << endl
		<< "Na ty, kteří rozumějí binárnímu kódu, "
		<< "a na ty ostatní." << endl;

		return 0;
	} else if (odpoved == 'n') {

		cout << "Dobře, tak ne." << endl;
		return 0;
	} else {

		cout
		<< "Nerozumím odpovědi "
		<< "– očekávám „ano“ nebo „ne“." << endl;
		return 1;

	}
}

Tento program položí uživateli otázku a zareaguje na jeho odpověď.

Zdrojovému kódu rozumí člověk a může ho upravovat a vylepšovat, ale program v tomto tvaru není možné přímo vykonat procesorem – spustit. Před spuštěním je program potřeba tzv. zkompilovat – přeložit tak, aby mu rozuměl počítač. Tentýž program bude ve zkompilovaném – binárním – tvaru vypadat takto:

00000000  7f 45 4c 46 02 01 01 00  00 00 00 00 00 00 00 00  |.ELF............|
00000010  02 00 3e 00 01 00 00 00  80 07 40 00 00 00 00 00  |..>.......@.....|
00000020  40 00 00 00 00 00 00 00  a8 11 00 00 00 00 00 00  |@...............|
00000030  00 00 00 00 40 00 38 00  09 00 40 00 1e 00 1b 00  |....@.8...@.....|
00000040  06 00 00 00 05 00 00 00  40 00 00 00 00 00 00 00  |........@.......|
00000050  40 00 40 00 00 00 00 00  40 00 40 00 00 00 00 00  |@.@.....@.@.....|
00000060  f8 01 00 00 00 00 00 00  f8 01 00 00 00 00 00 00  |................|
00000070  08 00 00 00 00 00 00 00  03 00 00 00 04 00 00 00  |................|
00000080  38 02 00 00 00 00 00 00  38 02 40 00 00 00 00 00  |8.......8.@.....|
00000090  38 02 40 00 00 00 00 00  1c 00 00 00 00 00 00 00  |8.@.............|
… zkráceno …
00002330  73 5f 73 74 61 72 74 00  5f 65 6e 64 00 5f 5a 4e  |s_start._end._ZN|
00002340  53 6f 6c 73 45 50 46 52  53 6f 53 5f 45 40 40 47  |SolsEPFRSoS_E@@G|
00002350  4c 49 42 43 58 58 5f 33  2e 34 00 5f 5a 53 74 34  |LIBCXX_3.4._ZSt4|
00002360  65 6e 64 6c 49 63 53 74  31 31 63 68 61 72 5f 74  |endlIcSt11char_t|
00002370  72 61 69 74 73 49 63 45  45 52 53 74 31 33 62 61  |raitsIcEERSt13ba|
00002380  73 69 63 5f 6f 73 74 72  65 61 6d 49 54 5f 54 30  |sic_ostreamIT_T0|
00002390  5f 45 53 36 5f 40 40 47  4c 49 42 43 58 58 5f 33  |_ES6_@@GLIBCXX_3|
000023a0  2e 34 00 5f 65 64 61 74  61 00 6d 61 69 6e 00 5f  |.4._edata.main._|
000023b0  69 6e 69 74 00                                    |init.|

Zkompilované programy je velmi obtížné (až nemožné) upravovat. Pokud tedy budete chtít v programu opravit nějakou chybu nebo přidat novou funkci, potřebujete jeho zdrojový kód.

Kromě toho má binární tvar programů ještě další nevýhodu: v tom „rozsypaném čaji“ se může snadno skrývat záměrně chybný kód, který škodí uživateli – např. smaže jeho data nebo ukradne důvěrné informace.

Rada na závěr: vždy požadujte zdrojové kódy od programů, které používáte!

© 2017 František Kučera