Jak se naučit programovat

autor: Alan Gauld

překlad: Petr Přikryl*)

(Originální anglická verze.)

Nejnov>jší zprávy!

Webové stránky

Vítejte na inovovaných stránkách učebnice Jak se naučit programovat. Obsah byl zcela přepracován. Krom> příkladů v jazyce Python zde nyní naleznete také příklady v jazycích VBScript a JavaScript. Vysv>tlení byla navíc rozšířena — přibylo tém>ř 30 % textu. V následujících m>sících budu přidávat další témata. Zam>řím se na praktické používání programátorských dovedností.

Starší verze této učebnice je stále dostupná zde.

O knize

Mezi poslední zprávy k mé knize patří to, že se přesunula do kategorie tisk na vyžádání. Znamená to, že další výtisky vznikají pouze na základ> pevných objednávek od prodejců. Logicky z toho vyplývá, že již na ni v obchodech nenarazíte tak často. Ale stále si ji ješt> můžete objednat a bude vám zaslána. Bude to jen trvat o n>co déle.

Knižní podoba se nyní od obsahu webové verze výrazn> liší, ačkoliv základ zůstává shodný. Kniha zůstala u Pythonu verze 1.5 a neobsahuje nov> přidaná témata. Na druhou stranu v ní naleznete víc příkladů a n>kolik kapitol navíc. Je mezi nimi i případová studie objektov> orientovaného prostředí (framework) pro psaní her[2]. (Pln> komentovaná verze tohoto prostředí je nyní dostupná na webových stránkách Useless Python jako hmgui.zip.)

Knihu si můžete objednat přes Amazon. Má ji k dispozici i v>tšina dalších internetových obchodů s knihami.

Japonská pobočka mého vydavatele nabízí rovn>ž japonský překlad knihy.

V současnosti jsou k dispozici webové stránky, na kterých naleznete seznam chyb a které vám umožní zasílat ohlasy a dotazy. Pokud jste si knihu zakoupili, v>nujte jim, prosím, pozornost.

O v>cech budoucích

Jak už jsem se zmínil, hodlám v budoucnu přidat n>kolik nových témat. Budou součástí nového oddílu, který bude zam>řen na praktické programování. Chci tím reagovat na připomínky čtenářů, kteří říkají: "No dobrá. Teď vím, jak se programuje. Ale k čemu vlastn> mohu své nov> získané dovednosti použít?"

Připravuje se polský překlad. Pracuje se na úpravách českého překladu s cílem zachytit zm>ny v nové verzi učebnice. Petr byl mým nejpřísn>jším recenzentem a patří mu díky za řadu oprav. Zbývající chyby padají výlučn> na mou hlavu.

Obávám se, že kniha pon>kud stagnuje. Jakmile však dokončím nová témata, pokusím se s vydavatelem dohodnout na druhém vydání. M>lo by odpovídat poslední verzi Pythonu (v dob> vydání) a m>la by se zde objevit práv> tato nová témata. Ale doporučuji vám, abyste se na nové vydání knihy v tomto okamžiku příliš neupínali.

Překlady z angličtiny do jiných jazyků

Prvním překladatelem této učebnice (do špan>lštiny) byl Martin Pozzi. Poté následovali další. V současnosti jsou k dispozici verze v následujících jazycích:

JazykPřekladatel
Česky Petr Přikryl
N>mecky Bruno Schaefer
Korejsky johnsonj
Italsky Luca Fini
Portugalsky Wilson Edgar
Špan>lsky Martin Pozzi

Všechny z výše uvedených překladů jsou použitelné, ale ve srovnání s originálními stránkami se nacházejí v různých fázích. Je to dáno tím, že odrážejí stav webových stánek z doby, kdy byly přeloženy. Zejména český překlad je ale zpracován velmi profesionáln>, včetn> atraktivního vzhledu. Zapůsobil na mne natolik, že jsem Petrovy definice stylů použil jako základ nové anglické verze. Doufám, že se mi podobn> podaří pozm>nit i ostatní jazyková vydání.

Domnívám se, že si všichni překladatelé zaslouží pod>kování za úsilí, které překladu v>novali. Čtení i staršího překladu učebnice je vždy jednodušší, než pracné louskání nové verze v cizím jazyce. Pokud je n>kdo další ochoten vytvořit zcela nový překlad nebo aktualizovat n>který z existujících, zašlete mi email.

Novinky

Plánuji zařazení n>kolika nových témat, která se týkají použití jazyka Python pro řešení problémů z praxe. Ukazuje se, že mi to zabere mnohem více času, než jsem čekal. Práv> jsem dokončil kapitolu týkající se databází. Další témata budou v>nována programování síťových aplikací a webu.

K posledním zprávám patří to, že máme dva nové překladatele. Jeden z nich pracuje na inovovaném vydání špan>lského překladu, druhý na polském překladu.

Zm>na podoby archivního balíku pro stažení

Čas od času zveřejním podobu učebnice ve tvaru zip a tgz archívů. Neslibuji, že budou vždy nejčersv>jší, ale budu se snažit, aby nebyly příliš zastaralé. Poslední podoba učebnice bude vždy dostupná on-line.

Uživatelé systému Linux si mohou stáhnout verzi tar/gzip. Uživatelé Windows budou moci použít tutéž verzi, protože programy winzip a voln> dostupný archivační program Quick Zip autora jménem Joseph Leung si oba s formátem tgz poradí. Formát tgz je použit také pro neanglické překlady. Odkaz na archivní balíky naleznete v dolní části panelu s obsahem.

Poznámka překladatele: Česká verze je rovn>ž dostupná v obou formátech. Archivační programy pro vytváření archivních souborů v obou formátech jsou dostupné jak pro Linux, tak pro Windows. Programy tar a gzip — případn> nov>jší verze programu tar, která při zadání příslušného parametru přímo volá program gzip —,  jsou standardní součástí distribuce systému Linux. U systému Windows doporučuji nainstalovat alespoň nejzákladn>jší balíky sady unixových utilit pro Windows — Cygwin. Ten se dodává v podob> instalátoru setup.exe (asi 300 KB) a rozsáhlé sady balíčků. Naleznete mezi nimi i programy tar a gzip. Pro systémy typu Unix i Windows existuje i voln> dostupná distribuce Info-ZIP, která obsahuje programy zip a unzip.

Poznámka překladatele: Součástí anglické verze je i učebnice ve formátu PDF. Je vytvořena z HTML souborů a nevyužívá možností hypertextových odkazů (tj. nejde o "klikací" podobu PDF souboru). Český překlad tuto variantu neobsahuje.

A také n>co pro uživatele Palm…

Poznámka překladatele: Součástí distibuce starší anglické verze je i soubor tutor.pdb, tj. podoba tohoto textu ve formátu dokumentačního souboru pro Palm. Podrobnosti hledejte v originálním textu.

Úvod — Co, Proč, Kdo atd.

Proč to píšu?

Pracuji na vytváření této učebnice, protože se mi zdá, že úplní začátečníci v programování toho na Webu[3] mohou nalézt velmi málo. Přitom samotná existence Internetu[4] a Webu vzbuzuje zájem o počítače a tento zájem přirozen> vede k touze po jejich ovládnutí. To ovšem znamená naučit se programovat!

Proč jsem to napsal práv> já? Tak tedy, jsem profesionálním programátorem se vzd>láním v oblasti elektro inženýr. Naučil jsem se (a stále používám) n>kolik programovacích jazyků, ale nemám žádný osobní zájem podporovat n>který konkrétní z nich. V dob>, kdy jsem s tím začal, se zdálo, že ješt> nikdo jiný nic takového nenapsal. Postupn> se objevilo n>kolik dalších příruček pro začátečníky, ale zdá se, že práv> tato k sob> přitáhla dost fanoušků na to, abych se rozhodl v ní pokračovat.

Čím se budu zabývat?

V rámci svých schopností budu vysv>tlovat základy počítačového programování — co to je, n>co o historii a o základních technikách, které potřebujete pro řešení problémů. Nebudu zde vysv>tlovat esoterické techniky nebo detaily jednotlivých programovacích jazyků. Budu spíše používat n>kolik odlišných jazyků, neboť v>řím, že je důležité si uv>domit, že různé jazyky jsou vhodné pro různé v>ci. Abych to shrnul, v>tšina obsahu učebnice bude v>nována programovacímu jazyku, který se nazývá Python.

Kdo by to m>l číst?

Koukn>me se na to z jiné stránky: co očekávám, ze čtenář již zná?

Očekávám, že čtenář je zkušeným uživatelem počítačového systému, pravd>podobn> systému MS DOS, Windows nebo Unix, ačkoliv ostatní by si s tím také m>li um>t poradit. Dále očekávám znalost základních matematických pojmů jako jsou geometrické souřadnice, množiny a základy algebry. Toto vše je v soudobých programovacích prostředích důležité a mnoho koncepcí programování je založeno práv> na t>chto myšlenkách. Nicmén> úroveň požadovaných znalostí není vysoká. Pokud se vám přesto bude zdát matematická část příliš složitá, jednoduše přeskočte n>kolik odstavců, vyzkoušejte kód tak, jak je vám předložen. Snad vám to n>co přinese i v případ>, kdy pro vás bude matematická část stále záhadou.

Určit> byste ale m>li v>d>t, jak se ve vašem operačním systému dostanete k systémové příkazové řádce. V systému Windows se můžete setkat s pojmy jako DOSové okno nebo příkazové okno MS-DOS. Jde v podstat> o černé okno s bílým vyzývacím textem, jako například C:\WINDOWS>. Dostanete se k n>mu přes tlačítko Start a dialogové okno Spustit... — do vstupního pole napište command a stiskn>te tlačítko OK.

Poznámka překladatele: Příkaz command spustí program command.com, což je příkazový interpret pocházející původn> ješt> ze systému MS-DOS. Pokud pracujete s verzí systému Windows NT, Windows 2000 nebo Windows XP, zkuste použít modern>jší cmd.exe. Napsat cmd je také o n>co kratší ;)

Pokud používáte Linux, pak asi víte, co je to terminálové okno. Na MacOS můžete pod Mac OS X spustit program Terminal (naleznete jej ve složce Aplikace->Nástroje).

Nebudu se zde zabývat problémy typu jak vytvořit nebo zkopírovat textový soubor, jak instalovat software, nebo jakým způsobem se v počítači ukládají soubory. Upřímn> řečeno, pokud se potřebujete dozv>d>t tyto v>ci, pak pravd>podobn> ješt> nejste schopni programovat — bez ohledu na to, jak moc po tom toužíte. Naučte se nejdříve n>co o svém počítači a teprve až budete u výše uvedených pojmů cítit v>tší jistotu, vraťte se k tomuto textu.

Proč Python?

Python je krásný jazyk na učení. Jeho syntaxe[5] je jednoduchá a tento programovací jazyk má v sob> zabudované velmi silné rysy. Podporuje mnoho programovacích stylů, od velmi jednoduchých až po současný vrchol v podob> technik objektov> orientovaného programování. Funguje na mnoha platformách — Unix/Linux, MS Windows, Macintosh atd. Zformovala se kolem n>j velmi přátelská společnost uživatelů, kteří jsou ochotni pomoci[6]. Toto všechno je velmi důležité pro jazyk, ve kterém se má naučit programovat začátečník.

Nicmén> Python není jazyk jenom pro začátečníky. B>hem růstu vašich programátorských zkušeností zjistíte, že jazyka Python můžete používat jako koncový aplikační jazyk nebo jako jazyk pro rychlé prototypování[7]. Existují problémy, pro jejichž řešení se Python moc nehodí, ale je jich relativn> málo.

Jako alternativní jazyky budu používat také VBScript a JavaScript. Chci na nich ukázat hlavn> to, že zákadní techniky nejsou závislé na jazykových detailech. Jakmile se naučíte programovat v jednom jazyce, můžete se další jazyk naučit b>hem n>kolika dní. Proč jsem si vybral zrovna tyto jazyky? Jejich styl se od Pythonu liší a tím vytvářejí užitečný kontrast. A je tu ješt> jeden důvod. Pokud přijmeme myšlenku, že v>tšina začátečníků, kteří se brouzdají webovými stránkami, používají osobní počítače s nainstalovanými Microsoft Windows, pak mají k dispozici zabudované programátorské prostředí nazývané Windows Scripting Host, které podporuje VBScript a JScript (což je varianta JavaScript od firmy Microsoft). Kdokoliv používá prohlížeč firmy Microsoft, může tyto jazyky používat přímo v n>m. A navíc, JavaScript by m>l fungovat v tém>ř libovolném prohlížeči. Zam>říme se pouze na to, jak VBScript a JavaScript spustíme ve svém prohlížeči. Detailní studium WSH nechť zůstane domácím úkolem pro ty uživatele Windows, kteří o to mají zájem.

Další zdroje

Existují další webové stránky, které se pokoušejí o totéž, v jiném programovacím jazyce. (Od doby vzniku t>chto stránek se objevilo i n>kolik webových míst v>novaných přímo Pythonu). Existuje řada učebnic pro ty, kteří už um>jí programovat, ale cht>jí se naučit nový jazyk. Uvádím zde n>kolik odkazů o nichž si myslím, že jsou užitečné:


Pokud vás napadne, co by se dalo na překladu této kapitoly vylepšit, zašlete e-mail odklepnutím Tím budou do dopisu automaticky vloženy informace o tomto HTML dokumentu.

$Id: cztutintro.html,v 1.14 2005/10/20 20:52:25 petr Exp $