Jak se naučit programovat

autor: Alan Gauld

překlad: Petr Přikryl*)

(Originální anglická verze.)

Nejnovější zprávy!

O knize

V současnosti je moje kniha dostupná již v druhém vydání[1]. Druhé vydání prodává přinejmenším Amazon a předpokládám, že jinde to bude podobné. Je v něm opravena řada chyb, které se objevily v prvním vydání. (Číslo vydání je uvedeno v dolní části informační stránky výtisku, naproti věnování). Nedávno jsem, bohužel, obdržel od jednoho zájemce zprávu, že mu z nakladatelství Amazon poslali první vydání, takže vám nemohu zaručit, které vydání dostanete — je mi líto.

Knižní podoba (v obou vydáních) obsahuje ve srovnání s webovou verzí výrazně vylepšená vysvětlení, ačkoliv to se týká pouze částí věnovaných jazyku Python. Ve srovnání s webovou podobou kniha obsahuje víc příkladů a několik zcela nových kapitol. Je mezi nimi i úplně nová 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.) Doufám, že každý, kdo shledal mé webové stránky užitečnými, bude spokojen také s knihou.

Mimochodem, navzdory tvrzení několika recenzí, které můžete najít na Amazonu, kniha skutečně obsahuje příklady. Nacházejí se prostě průběžně v textu a nikoliv vždy na konci kapitoly — nemám rád styl, kdy se příklady uvádějí na konci kapitol.

Některé detaily naleznete na stránce vydavatele. 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. Prosím, věnujte jim pozornost — zvláště tehdy, pokud jste si knihu zakoupili.

O kurzu na webových stránkách

Tyto stránky jsou neustále udržované a zdokonalované dokonce i poté, co byla vydána výše zmíněná kniha. Byly již doplněny o několik nových témat (viz detaily uvedené níže).

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

Poznámka překladatele: autor dále uvádí odkazy na překlady v jazyce španělském, portugalském, německém, italském, českém a korejském, včetně jmen překladatelů a některých technických poznámek. Vzhledem k tomu, že se počet jazyků může rozšiřovat, podívejte se v případě zájmu na stránku s originálním textem.

V překladech do některých jazyků může chybět jedna či dvě kapitoly, ale každý z překladů již má užitečnou podobu. Myslím, že si každý z překladatelů zaslouží díky za úsilí, které překladu věnují. Pokud chce překládat kdokoli další, pošlete mi email.

Novinky

V současnosti dokončuji novou knihu. Jakmile s tím budu hotov, zahájím kompletní přepracování tohoto kurzu. Mezi zamýšlená vylepšení chci zařadit přechod na novější verzi jazyka Python, (přinejmenším) na verzi 2.3. Chci přidat několik nových kapitol a dát jim modernější vzhled. Doufám, že k tomu dojde někdy během léta.

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

S archivním tvarem souborů jsou pořád nějaké problémy. Některé soubory se, jak se zdá, čas od času poruší. Nezávisle na tom, jaký formát použiji, mají s ním někteří uživatelé problémy. Zdá se, že jediné řešení spočívá ve zveřejnění jak archivu ve formátu zip, tak archivního souboru ve formátu tgz. Doufám, že tím uspokojím všechny.

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.

Verzi ve formátu zip najdete zde.

Doufám, že jsem tím uspokojil každého z vás.

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ík sady unixových utilit pro Windows — Cygwin. Ten se dodává v podobě archivního souboru bootstrap.zip (asi 800KB) a kromě jádra systému obsahuje právě potřebné programy tar a gzip. Pro systémy typu Unix i Windows existuje i distribuce Info-ZIP, která obsahuje programy zip a unzip.

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

Poznámka překladatele: Součástí distibuce 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. Také se zdá, že ještě nikdo jiný nic takového nenapsal.

Čí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 kurzu 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.

Určitě se nebudu 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.

Pro první příklady použiji také jazyk BASIC, později jako alternativu uvedu jazyk Tcl. Proč? No, pokud přijmeme skutečnost, ž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í na instalačním CD ROM (pro Windows NT nebo pro Window 95/98) k dispozici také jazyk BASIC (QBASIC). Jazyk Tcl byl dodáván spolu s jazykem Python až do verze V1.5.2 (takže vlastně získáváte dva jazyky za cenu jednoho, která je navíc nulová). Od verze Python 2.0 je součástí instalace pouze minimalizovaná instalace Tcl. Takže pokud si budete chtít vyzkoušet všechny příklady, bude si muset ze stránek Scriptics stáhnout oficiální instalaci jazyka Tcl.

Další zdroje

Existují další webové stránky, které se pokoušejí o totéž, v jiném programovacím jazyce. Existuje řada kurzů 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 tohoto odkazu. Tím bude do subjektu dopisu automaticky vložena informace o jméně a verzi tohoto HTML dokumentu.

$Id: cztutintro.html,v 1.38 2003/11/23 19:23:41 Petr Exp $