Úvod do programování v C/C++ Linuxu

Na úvodní stránce se vám již úvodního slova dostalo, takže se nyní podívejte trochu podrobněji na to, co vás tu bude čekat a co budete potřebovat k úspěšnému absolvování tohoto kurzu.

Programování v Linuxu

Kurz bude popisovat programování v jazyce C/C++ v Linuxu. V Linuxu lze pochopitelně využívat k programování mnoho programovacích jazyků, knihoven a nástrojů. Například můžete programovat v Javě, Pascalu, Pythonu, TCL, při troše dobré vůle můžete naprogramovat lecos i v příkazových interpretech jako je BASH, najdete zde také Perl, PHP a mnoho dalšího. K mnoha různým programovacím jazykům existuje mnoho „volně šířitelných“ knihoven, které slouží například ke komunikaci s databázemi (třeba s PostgreSQL), ke grafickému výstupu, pro práci s mnoha grafickými formáty (obrázky, zvuk, video atp.).

V tomto tutoriálu půjde jen o stručný výklad, který by vám měl umožnit pokračovat v samovzdělávání pomocí manuálových stránek a dokumentace, kterých je v Linuxu požehnaně. Nástroje, které se zde budou probírat, se používají pro jazyk C i C++ stejně. Pokud přeci jen bude někde nějaký rozdíl, pak na to upozorním.

Co budete potřebovat

První věc, kterou byste měli mít, je schopnost programovat v jazyku C, popřípadě C++. Text, který zde je, navazuje na výuku C/C++. Všechny příklady, které tam najdete, si můžete pod Linuxem přeložit a vyzkoušet.

Také musíte umět pracovat s Linuxem jako takovým (o práci s Linuxem se zmiňovat nebudu). Alespoň minimální znalosti práce v příkazové řádce jsou též nutností. Nebudu nikde vysvětlovat, že do příkazové řádky se dostanete spuštěním xtermu, nebo klávesami CTRL+Alt+F1, ani že zadání příkazu se ukončuje klávesou ENTER. Možná, když budete opravdu hodný, se zmíním o přesměrování vstupu a výstupu a spouštění programů na pozadí, nebo o procesech a posílání signálů. Ale bylo by jistě lepší, kdybyste i tohle už uměli a dobře chápali.

Někde bude možná potřeba ještě dalších znalostí. Například, když se budete učit jak program napsaný v jazyce C může spolupracovat s databází PostgreSQL, budete muset již s touto databází umět pracovat (a znát jazyk SQL). Berte to tak, že když neumíte pracovat s Postgresem, nebudete asi ani chtít s takovou databází spolupracovat :-).

Budete také potřebovat nějaký Linux (překvapivě). Existuje spousta distribucí Linuxu. Je vcelku jedno, kterou si vyberete, důležitějžší jsou programy (a jejich verze), které ve své distribuci (ne)máte. Můžete se učit pracovat i v systémech BSD nebo Unix. S těmito operačními systémy však nepracuji, proto vám nemohou zaručit, že bude všechno fungovat tak, jako v Linuxu.

Dále budete potřebovat překladač jazyka C (C++) a všechny nástroje a knihovny, které zde budu probírat (nebo alespoň ty, které se budete chtít naučit používat :-). Čím novější verze, tím lepší, ale protože nebudu zacházet ve výuce příliš do hloubky, není potřeba, abyste disponovali těmi nejnovějšími nástroji. Na druhou stranu, v Linuxu jde vývoj rychlým tempem kupředu (a zpátky ni krok :-), takže se může stát, že co platí v jedné verzi nějakého nástroje, v druhé je úplně jinak. Pro jistotu budu u každého probíraného nástroje uvádět verzi, kterou jsem pro výklad použil.

Co se týče hardwarových nároků, bude možná stačit, když se zmíním o svém železe. Jde o PC s procesorem AMD-K5 (133 MHz), 32 MiB RAM. Jinak řečeno, hardwarové nároky jsou zanedbatelné. Výkonějžší počítač samozřejmě znamená i rychlejší překlad (zvláště u grafických aplikací), ale zde se nikdy nedostanu k tak rozsáhlým projektům, kde by bylo zapotřebí nějak zvlášť výkonných počítačů. Pokud budete chtít používat nějaké náročné vývojové prostředí (jako NetBeans nebo Code::Blocks), nároky na PC porostou …

Co se nenaučíte

Nenaučíte se programovat jádro Linuxu nebo vytváření modulů pro jádro Linuxu. Ne že by to bylo zas tak těžké, ale často se to mění, což je dost demotivující k psaní tutoriálů.

Nenaučíte se všechno. Ani půlku, ale jen malý kousek z toho, co byste potřebovali vědět, pokud byste se chtěli živit programováním profesionálně. Tento kurz je určen začátečníkům, kteří se chtějí rychle a snadno seznámit se základy sestavování programů z C/C++ zdrojových kódů, nebo nebožákům, kteří musí (kvůli škole).

Co se naučíte

Naučíte se toho dost, abyste si mohli napsat vlastní jednoduchou interaktivní hru. To snad jako motivace stačí :-). Co se všechno naučíte snadno zjistíte z obsahu na úvodní stránce.

Licence

Pokud budete vytvářet programy a budete k jejich chodu využívat knihovny vytvořené někým jiným, bude vás asi zajímat, zda a za jakých podmínek tak můžete činit. Může vás také zajímat, za jakých podmínek můžete šířit nebo i prodávat váš program. Jelikož nejsem právník, nedám vám na tyto otázky moc uspokojivé odpovědi. Existuje mnoho různých licencí, které se v Linuxu využívají, takže jediným univerzálním řešením je si je prostudovat, nebo si zaplatit hodně dobrého právníka, který se v tom může jakž takž vyznat.

Nejčastěji se pro programy v Linuxu používá licence GNU a pro knihovny její obdoba GPL (o tyto licence se „stará“ organizace Free Software Foundation). Přečtěte si ji a zvažte, jestli vaše programy nebudete také distribuovat pod touto licencí.

Pokud budete chtít využívat zdrojové kódy z programů pod licencí GNU, budete muset i váš program vydávat pod licencí GNU. Přesněji řečeno, všechny díla odvozená od děl vydávaných pod licencí GNU musí být také vydávány pod licencí GNU. Pokud vaše dílo využívá nějakou GNU knihovnu, pak se nejedná o odvozené dílo, ale jen dílo spojené s touto knihovnou, a pak můžete program vydávat pod libovolnou licencí (ne že by na toto neexistovali protichůdné názory).

Pokud se rozhodnete svůj program vydávat pod licencí GNU, musíte jej dát k dispozici i s jeho zdrojovými kódy a umožnit tak komukoliv, aby program upravoval a dále šířil (dle podmínek GNU). Na druhou stranu tím neumožníte nikomu aby váš program využil k vytvoření programu, který by nebyl pod licencí GNU (který by nebyl volně šířetelný) a přivlastnil si tak váš zdrojový kód. Bude-li váš program opravdu dobrý a pod licencí GNU, budete mít velkou šanci že se na jeho vývoji budou podílet další programátoři a tím se stane váš program nesmrtelný. To jsou asi tak hlavní důvody, proč k licenci GNU přistupovat.

A ještě jeden citát z bulletinu GNU: Organizace Free Software Foundation je zasvěcena eliminaci zákazů práv lidí používat, kopírovat, upravovat a opětovně šířit počítačové programy.

Pokud vydáte program pod licencí GNU, můžete ho sice prodávat (spolu se zdrojovými kódy), ale ten kdo jej koupí jej bude moci legálně šířit dál (včetně zdrojových kódů) zdarma.

Raději si licenci GNU přečtěte, není moc dlouhá a najdete ji v češtině :-).

Komentář Hlášení chyby
Vytvořeno: 22.6.2013
Naposledy upraveno: 10.10.2014
Tato stánka používá ke svému běhu cookies, díky kterým je možné monitorovat, co tu provádíte (ne že bych to bez cookies nezvládl). Také vás tu bude špehovat google analytics. Jestli si myslíte, že je to problém, vypněte si cookies ve vašem prohlížeči, nebo odejděte a už se nevracejte :-). Prohlížením tohoto webu souhlasíte s používáním cookies. Dozvědět se více..