Michal Kašpárek

Jak jsem začal programovat v Pythonu

(Vyšlo jako newsletter Finmagu v létě 2022.)

Update 02/2024: Text jsem napsal několik měsíců před spuštěním ChatGPT. Ačkoliv od té doby slýchávám, že „umělá inteligence připraví programátory o práci“, věřím, že nikdy nebyla lepší doba začít programovat než teď. 1. Velké jazykové modely začátečnictvu ohromně zrychlují postup: můžete si nechat opravovat, generovat a vysvětlovat kód, dotazovat se na kryptické hlášky nebo termíny. 2. S úplně primitivními pythonovskými skripty vymáčknete z velkých jazykových modelů mnohem víc užitku: snadno jimi například zpracujete celou složku dokumentů.

V únoru 2022 jsem se z důvodů, o kterých vám povím za chvíli, potřeboval trochu zorientovat v programovacím jazyku Python. V různých návodech jsem tehdy narazil na spoustu kryptických mouder, které jsou začátečníkům k ničemu: „Python je dynamicky typovaný“, „v Pythonu je všechno objekt“ a tak dále.

Taky jsem měl ale štěstí na několik skvělých materiálů, které mi pomohly dokončit, co jsem potřeboval. A pak toho udělat ještě mnohem víc a mnohem rychleji, než bych si na začátku býval pomyslel. Přišel čas tohle štěstí poslat dál.

Proč by mě měl zajímat nějaký Python?

Python je k začátečníkům a začátečnicím velmi vstřícný jazyk, zvlášť šikovný pro automatizaci různých voprců typu „najdi na webové stránce údaj, ulož ho do tabulky, a opakuj to celý den“. Už po několika hodinách seznamování vám může začít šetřit čas – nebo přinášet radost jinak.

Na GitHubu najdete spoustu takových skriptů už naprogramovaných, pak vám stačí jen umět je spustit z příkazové řádky – to už se nebavíme o hodinách učení, ale možná jen o minutách.

Pokud přece jen budete psát vlastní kód, můžete ho v Pythonu začátečnicky naprasit, nebo využít pokročilé elegantní zápisy – v obou případech to udělá, co potřebujete. Kdyby byl Python stavebnice, byl by duplo; kdyby byl řeč, byl by italština. Z dupla i italštiny lze stvořit komplexní díla, zároveň vás ale nenutí svoji vlastní komplexnost obsáhnout – z dupla lze ihned stavět autíčka, italské fráze postihující běžné situace na dovolené si zapamatuje i malé dítě.

Mělo by tu zaznít: Python je zdarma a můžete si s ním hrát na Windows, macOS i Linuxu. Návod na instalaci zde.

Vedle zmíněné automatizace je Python skvělý i pro práci s daty a statistikami. Podle jednoho bonmotu je to „druhý nejlepší jazyk úplně na všechno“. Bonmot to samozřejmě není přesný, pořád ale pěkně ilustruje univerzálnost Pythonu i to, kolik šikovných doplňujících knihoven pro něj existuje.

Co se hodí do startu

Věřím, že všechny materiály, na které tu odkážu, budou užitečné i pro úplné začátečníky. Zároveň je ale fér přiznat, že jsem jím nebyl: na střední nás výborný učitel seznámil s Pascalem a SQL, v práci jsem často potřeboval něco poštelovat v JavaScriptu nebo PHP. Nikdy jsem ale do žádného z těch jazyků nepronikl víc. Především proto, že mi scházela motivace.

Důležitější než umět s příkazovou řádkou nebo mít ze školní informatiky základní povědomí o podmínkách a smyčkách je totiž najít praktický důvod, proč se Python – nebo jakýkoliv jiný jazyk – učit.

Můj případ: čtu na Kindlu knihy na přeskáčku a v textovém souboru s výpisky mám kvůli chronologickému řazení všechno pomíchané dohromady. V únoru jsem hledal aplikaci nebo službu, která by mi v tom udělala pořádek, a narazil jenom na pythonový skript kindle-clippings.

Nainstaloval jsem si tedy Python, spustil skript a ejhle, ono si to moc nerozumí s češtinou a dělá to i nějaké jiné věci, se kterými nejsem spokojený. Po večeru stráveném googlováním banálních věcí jsem skript přinutil dělat, co jsem potřeboval. A vzpomněl jsem si na další nástroje, o kterých jsem vždycky snil, ale nikde jsem je nenašel hotové. Byly to:

  • pomůcka pro editování článků, která by hlídala zdvojená zdvojená slova, slovesa použitá za citacemi, příliš dlouhá souvětí a tak dál…

  • archivovadlo článků, které jsem přečetl v aplikaci Pocket, a které dřív či později z původních adres zmizí

  • databáze historických výsledků F1, kde bych si mohl hledat různé zajímavosti, které zatím nikdo jiný nehledal či nenašel

Co mi pomohlo v úplném startu

Pokud rozumíte aspoň trochu anglicky, na YouTube visí skvělý čtyřhodinový začátečnický kurz Mike Danea. Provede vás instalací, ovládáním, základními operacemi i typy proměnných a dostanete se s ním až ke třídám a metodám.

Ostatně celý kanál freeCodeCamp.org je dar z nebes oproti knižním učebnicím, na kterých jsem při svých programátorských pokusech pohoříval před dvaceti lety. FreeCodeCamp pokrývá mnoho různých jazyků a technologií od úplně začátečnických po relativně pokročilé úrovně. (Jen bohužel ne všichni vyučující mají tak ízy-pízy přednes jako Mike Dane.)

Pěkné videokurzy jsou i na mCoding. Zvlášť jsem ocenil přehlídku 25 zelenáčských chyb.

Je až skoro trapné to připomínat, ale prosté googlování chybových hlášek vás přivede k mnohem poučnějším a užitečnějším odpovědím na Stack Overflow než kdy dřív. To je možná nejradostnější zjištění, co jsem si z téhle anabáze odnesl: hojnost volně dostupného a kvalitního výukového materiálu (nejen k programování) je jedním z nejviditelnějších pokroků lidstva za posledních dvacet let.

Kdo dává přednost češtině, ocení materiály pro začátečnické kurzy PyLadies. Ač jsem přítelem textů a nepřítelem videa, tady to mám poprvé naopak: učit se programování podle psaných materiálů po mě vyžaduje víc úsilí věcem porozumět. Video krom samotného kódu ukazuje, kam se to má napsat, na co se má klepnout, co to pak udělá.

Protože jsem na svoje sebevzdělávání šel z pracovních a rodinných důvodů už osvědčenou metodou „dej tomu hodinu denně, jakmile se ti ta hodina namane“, nedělal jsem rešerši kurzů naživo nebo online komunit. Nicméně vedle známých Czechitas jsem narazil ještě na sympatickou síť Junior.Guru Honzy Javorka. Ten napsal i řadu článků, kterými lze rovnou navázat na tento newsletter: Jak získat praxi? Jak hledat práci v IT?

Velkou inspirací pro ty, kteří se spíš než kvůli kariéře v IT učí programovat kvůli zefektivnění své současné práce, může být kniha Automate the Boring Stuff with Python. Je to kuchařka „pokud chcete přejmenovat všechny svoje fotky podle tohoto klíče, udělejte to takto“. Bohužel zase jen anglicky, ale zato zdarma.

Po čem jsem se rozkoukával dál: praxe

Stránka Rex Egg dopodrobna vysvětluje regulární výrazy. Jde o řetězce, kterými lze v textu vyhledávat určité vzory – nejen při programování. I ve Wordu s jejich pomocí můžete nalézt například telefonní čísla nebo zkratky. Regex je hrůza na zapamatování, ale dá se to a benefity jsou zvlášť pro píšící a editující lidi značné. Snazšímu pochopení pomůžou hrátky s některým z mnoha regexových „pískovišť“, jako je RegExr.

Pro dolování obsahu webových stránek tu jsou pythonovské knihovny Beautiful Soup a Newspaper3k. První je univerzálnější, druhá trochu inteligentnější při práci s články. V obou případech je nutné znát základy jazyka HTML – viz skvělé nadčasové stránky Dušana Janovského Jak psát web.

Pro práci se statistikami a daty je šikovná knihovna pandas. Je bohužel o mnoho méně intuitivní než Python samotný, nicméně pěkné věci se s ní dají vyvádět už po pár hodinách učení, ke kterému doporučuji knihu Python for Data Analysis přímo od zakladatele projektu (opět anglicky, opět zdarma). Také z vlastní zkušenosti: učte se s daty, která znáte – snadno tak přijdete na to, že máte v kódu nějakou chybu.

Pro hraní s daty jsem si ještě oblíbil Jupyter Notebook – sešity, ve kterých můžete přímo v prohlížeči snadno míchat kód, výsledky výpočtů a textové zápisky. (Pěkný článek o nich vyšel před lety v The Atlantic.)

Časem se budou hodit základy Gitu nebo aspoň orientace na GitHubu, protože právě z GitHubu budete nejdřív brát inspiraci a pak na něj nahrávat vlastní věci. Znovu poslouží freeCodeCamp, česky pak znovu Javorek.

Kniha Programátor pragmatik (její starší, ale relativně nadčasová verze vyšla i česky) má možná až zbytečně sofistikovaný název: v principu je o zdravých návycích při jakékoliv práci s počítačem, nejen programování. Oddělujte data a funkcionalitu, co nejvíc toho ukládejte do obyčejných textových souborů a tak dále.

Po čem jsem se rozkoukával dál

Knihu Grokking Algorithms jsem si pořídil v papíru a všude ji ukazuju jako příklad toho, jak se dá o relativně složitých věcech psát srozumitelně a poutavě. Ukáže vám, jak jde některé složitě vypadající programátorské problémy vyřešit snadno, a proč naopak některé zdánlivě jednoduché problémy dokonale vyřešit nejde. V ukázkách pracuje s Pythonem, ale poznatky jsou univerzální. (Mimochodem i další knihy z edice Grokking… vypadají super.)

Rád poslouchám podcasty Python Bytes a Talk Python to Me. Nabízejí vhled do spousty různých oborů, nejvíc mě bavilo povídání o využití Pythonu v automobilových závodech.

Co ze mě vypadlo

Od února jsem si tedy s Pythonem hrál jednu hodinu denně, výjimečně víc, ale nikdy celý den. I tímhle tempem toho šla do června stihnout spousta:

Přeju vám spoustu podobné zábavy a co nejméně rutinní práce.