Svaz poznání: Od filozofie k matematice a zpět

Často říkám, že informatika je vlastně jen z jedné třetiny filozofie, z druhé psychologie a z té třetí matematika. Že bez matematiky se informatika neobejde asi nikoho nepřekvapí. V tomto článku bych však chtěl ukázat, že i filozofie má v informatice značný význam. A dost možná i naopak.

Každý trochu méně pasivní student informatiky na Univerzitě Palackého jistě nějakým způsobem už někdy slyšel zkratku FCA. FCA, neboli Formal Concept Analysis, česky Formální a Konceptuální analýza, Formálně-konceptuální analýza, Analýza Formálních konceptů či dokonce Formální analýza konceptů (že je ta čeština krásná, co? Raděj se budu držet anglického FCA). Tím však zřejmě znalosti této ne moc známé informatické disciplíny končí, takže mi dovolte lehký úvod do FCA.

Formálně konceptuální analýza formálních konceptů?

FCA je technika pro zpracování dat, konkrétně tzv. data-miningová, tedy technika pro tzv. dolování dat, nebo jinými slovy získávání znalostí z dat (i zde je angličtina skromná a používá souhrnně pojem data mining). To znamená, že FCA analyzuje obvykle velké množství určitých dat, o kterých toho moc nevíme, a snaží se z nich vytěžit (doslova) co nejvíce informací.

Dobře, a jak, říkáte si? Na pochopení FCA se pojďme vrátit o pár století zpět (pokud tento článek bude číst někdo za pár tisíciletí, tak se omlouvám za nepřesnost). Konkrétně do století sedmnáctého. Ještě konkrétněji, chcete-li, do jeho šedesátých let. V této době totiž tak nějak (přece jen, tehdejší publikační činnost vypadala krapet jinak, než dnes) vznikla tzv. Logika z Port-Royal, resp. Port-Royalská logika. Jedná se o filozofické dílo, resp. myšlenku, názor, či pohled na svět.

Pochopitelně, nejsem filozof, situaci značně zjednodušuji, ale základní myšlenka Port-Royalské Logiky je až děsivě jednoduchá: Svět kolem nás je tvořen různými objekty. Každý takový objekt má určité vlastnosti.

Pokud budeme schopni popsat všechny objekty v našem okolí a budeme schopni popsat jejich vlastnosti, pak získáme přehled o celém světě, univerzu, éteru, či zakouřené putyce, ve které zrovna sedíme. Pro značnou část nefilozofů další důkaz toho, že filozofie je jen smíška … objektů s vlastností „být silně zapáchající“.

Ne však pro jednoho nejmenovaného německého matematika, který přesně toto v osmdesátých letech dvacátého století popsal matematicky. Proč? Protože to byl odborník na tzv. teorii uspořádání a právě v Port-Royalské Logice našel její uplatnění. No a tak vznikla FCA.

Přicházejí kočičky

Jako vždy si odpustím padesát slajdů definice-věta-důkaz a vše osvětlím na příkladu. Představme si, že pozorujeme nějaký fiktivní svět, který je tvořen jen šesticí zvířátek (od každého jedno), jak uvádí následující tabulka:

Tabulka našeho světa

Jak je vidět, v našem světě žije pejsek, který se zcela určitě někdy napije, je to savec a má srst. Stejně tak tam žijí další dva savci – kočka a vydra. Která je spolu s rybou, žábou a kachnou vodní tvor. A tak dále. Jak bylo naznačeno, FCA analyzuje tzv. formální koncepty. Co je to ten formální koncept? No, to je tvrzení, které v našem světě platí. Tvrzení ve tvaru „nějaká zvířátka mají nějaké vlastnosti“. Tedy například „všechna zvířátka pijí„, „ryba, žába, vydra a kachna jsou vodní zvířata“ nebo například „pes, kočka a vydra jsou všichni savci se srstí„. Kteří pijí.

Všimněte si, že všechna zvířata pijí. Poté se nám zvířata dělí na savce/se srstí (to je vlastně v našem světě totéž) a na případně vodní zvěř. Vydra je jak savec se srstí, tak i vodní zvěř. Toto všechno lze graficky znázornit jako tzv. konceptuální svaz (odtud název článku). Černé puntíky znázorňují jednotlivé koncepty. Všimněte si, že čím více je v konceptu zvířátek, tím méně mají souhrnně vlastností (a naopak).

Konceptuální svaz

Bohužel, v praxi se s takto „primitivním“ světem obvykle nesetkáme. V reálném světě by byla jak tabulka, tak konceptuální svaz ji zobrazující pochopitelně vskutku obrovský. Kupříkladu, výřez ze spodní části konceptuálního svazu reálného světa by mohl vypadat například takto (za předpokladu, že v Praze žije paní Nováková a má …):

Kdesi dole ve svazu...

Můžete pozorovat, že úplně dole máme vždy jeden jediný konkrétní objekt. Například kočka Mourek paní Novákové z Prahy. O takovém objektu můžeme určit opravdu nespočet vlastností. Kromě vlastností, které mají všechny kočky paní Novákové z Prahy (a tudíž i všechny kočky z Prahy a tudíž i všechny kočky)(např. jméno majitelky, adresu bydliště, počet končetin), můžeme o Mourkovi říct, jakou má barvu srsti, kolik má let či jakou má nejraděj konzervu.

And we need to go deeper…

Dobře, to je Mourek. Ale, co když se vydáme v konceptuálním svazu směrem nahoru? Mourek je paní Novákové, je z Prahy, je to kočka, to vím. A dál? Kočka je určitě šelma a současně náš oblíbený savec. Tudíž je určitě obratlovec. A tedy i zvíře. Každé zvíře je živým tvorem. Živý tvor je něco, co najdeme v přírodě na planetě Zemi. Co najdeme v přírodě na planetě Zemi je něco, co najdeme ve Sluneční soustavě. A tak dále. Všimněte si, že jsme začali používat slovo „něco„. Neurčitost vzrostla tak vysoko, že už vlastně ani nepopisujeme žádný objekt, ale jen „něco“ splňující pár vlastností (např. nachází se na planetě Zemi, je tvořen atomy a molekulami).

Téměř celý svaz poznání

Dříve nebo později (dobře, spíš později, vzhledem k tomu, že vesmír je nekonečný), bychom se dostal k něčemu natolik obecnému, že bychom o něm nemohli říct vůbec nic konkrétního. K něčemu, co obecně nesplňuje naprosto žádnou vlastnost. (Tedy, krom jedné – že toto něco je rovno číslu čtyřicet dva.) Dostali bychom se k něčemu, co popisuje celý svět, celý vesmír, prostě úplně všechno. A tomu se, nepletu-li se, říká vyvrcholení filozofie.

Hledání nekonečna

Dobře, toť teorie. Ale k čemu je nám to v praxi? A proč je v názvu článku „svaz poznání“? Jistě, poznat celý svět a najít ono mýtické něco je snad snem kdejakého filozofa. Takže konceptuální svaz popisující celý vesmír vlastně popisuje všechno naše poznání. Ale ono je to ještě praktičtější. Tedy, pravda, pro vědce, či další profese, které produkují určité poznání.

Často se říká, že životní cyklus vědy je následující: hypotéza – teorie – experiment – vyhodnocení. Pohledem svazu poznání není věda nic jiného, než objevování nových končin právě v tomto svazu. Pravda, zjistit, že paní Nováková z Prahy má kocoura Mourka asi zrovna není téma na dizertaci. Nicméně, objevit nový druh motýla, vymyslet Eulerovu větu či zobecnit Speciální teorii relativity, to už vědou docela zavání.

Vědci totiž obvykle dělají jednu ze dvou věcí. Buďto se snaží zobecnit nějaké poznatky („co mají společného tito motýli?“, „platí Pythagorova věta pro libovolný exponent?“) nebo naopak snažit se situaci zpřesnit („všechny kovy vodí teplo, který kov nejlépe?“, „za těchto podmínek soustava nemá řešení, co když se omezíme jen na x = 0?“). Tyto postupy odpovídají hledání nového konceptu, nového puntíku ve svazu poznání, a to buď někde nad (zobecnění) nebo někde pod (zpřesnění) puntíky, které odpovídají naší teorii/hypotéze. Nemám pravdu?

Je jasné, že nikdy nepoznáme svaz celý, ale je pěkné, že někde uprostřed nekonečna se nachází malinkatý flíček, který máme zmapovaný a velmi pomalu se zvětšuje.

Živá nebo mrtvá? Ta kočka v krabici, samozřejmě

Ano, mluvím o kočce pana Schrödingera. Té malé roztomilé, co je zavřená v krabici. A možná už je mrtvá. Nebo umře, než dočtete tento příspěvek. Kdo ví…

Tiše předpokládám, že Schrödingerovu kočku vám jistě nemusím představovat. Symbol popularizace vědy, kvantové fyziky a nekonečný zdroj vtipů. Ale pro úplnost: Jedná se o myšlenkový experiment, který si klade za cíl poukázat na nedostatky tehdejší kvantové fyziky (přesněji kvantové mechaniky), vzhledem k tomu, že to v té době bylo docela mladé téma.

Šlo o to, že máte kočku. V krabici. A s ní je v této krabici zavřeno také jisté zařízení. Toto zařízení obsahuje nuklid, tedy látku, která se postupně radioaktivně rozpadá. Je stanoveno, že tento nuklid se s 50% pravděpodobností do hodiny rozpadne. V takovém případě zareaguje patřičný detektor a uvolní jed, který nebohou kočku usmrtí.

Asi netřeba dodávat, že já kvantové fyzice rozumím asi jako křováci v Africe, ale – v čem je tento pokus – krom praktikování pokusů na zvířatech – tak zajímavý? Nu, jde asi tak o to, že kvantová fyzika uvažuje nějaké superpozice. Tedy, že nuklid je nějakým způsobem rozložen i nerozložen současně. Tudíž, by i kočka měla být mrtvá i živá současně. Což je samozřejmě nesmysl. Tak jak z toho ven?

Ptejte se Einsteina nebo Hawkinga! Já dnes chci mluvit o něčem úplně jiném. Podívejte se hned na první větu za „Ale pro úplnost:“. Myšlenkový experiment. To je ono. Víte – občas někdo utrousí poznámku na téma jak k tomu asi přijde nebohá kočka. To jistě. Ale napadlo vás někdy, jak se asi musí cítit pan Schrödinger?

Při představě, že je přesně 50% pravděpodobnost, že v momentě, kdy kráčí chodbou ze své kanceláře k laboratoři s krabicí, jeho kočka už je dávno mrtvá? Nebo stále žije? A nebo se nuklid špatně vyspal a rozpadl se hned, co Schrödinger opustil laboratoř, a on tak po dalších 59 minutách najde jen tělíčko v začínající fázi rozkladu?

Něco takového je jistě pro každého z nás děsivě nepředstavitelné. Nebo nepředstavitelně děsivé. Ale – víte, že vlastně ne? A není to jen přítomnost roztomilé chlupaté koule, která dělá z myšlenkového experimentu z kvantové fyziky každodenní záležitost.

Ani nemusíme chodit daleko od fyziky: Psali jste test z fyziky. Vy fyziku, samozřejmě, jako každý student, k smrti nesnášíte. Takže, v momentě, kdy rozporuplni odevzdáváte papír popsaný výpočty, náčrty a vzorečky, nevíte. Jste jako Schrödinger, který ukládá kočku do krabice a odchází. „Za týden budou výsledky.“, říká profesor. A vy čekáte. A za týden krabici otevřete, a dozvíte se, jestli vaše fyzikální kočka zemřela, nebo přežila. Protentokrát.

Ale toto není zdaleka jediný případ. Zkoušíte úplně novou pizzu. Co na vás vykoukne, když otevřete krabici? Bude na vás radostně koukat a nedočkavě se k vám lísat? Nebo se zmůžete jen na důstojné rozloučení u odpadkového koše?

Nebo – ve schránce najdete dopis s červeným pruhem (nebo tak něco). Může to být jen pokuta za stání na invalidech. Osahávání kolegyně na zvrhlém firemním večírku. A nebo prostě a jednoduše na vaší zahradě sousedův pes vyhrabal mrtvolu.

Příkladů je opravdu spousta. Telefonát z neznámého čísla. Boty koupené přes internet. Žádost o povýšení. Namazaný chleba padající na zem. A nebo typický mužský problém: „Odepíše mi?“. Dobře, namazaný chleba asi není úplně ten případ. Ale to bychom opustili Schrödingera a přešli k Mikešovi (kočka jako kočka, co?).

Vraťme se ale zpět do univerzitních chodeb. Na tu dlouhou chodbu, schodiště, několikery dveře, kancelář a laboratoř. Pohodlné křeslo za velikým pracovním stolem. Všude spousta papírů, ocenění, diplomy. Fotka manželky. Toto vše je jeden obrovský koktejl, který se neustále míchá kolem sedícího a dumajícího Schrödingera. V hlavě se pak odehrává největší bitva v historii lidstva. Život versus smrt oné nebohé kočičky. Přežije to? Prosím, ať to přežije!

Vše se najednou točí kolem té jedné zatracené krabice dole v laborce. Kancelář jako by zavoněla jejím papírově-kočičím pachem. Na rameni jakoby ucítíte dotek její srsti. Celým tělem vám najednou projede ten nepříjemný ostrý impulz. Na čele vám vyraší kapka potu. Ale kdepak, to se mi jen zdálo. Ona je přece pořád zavřená dole v krabici.

Sedíte a přemýšlíte. Máte pocit, že se nemůžete ani hnout. Ano, ta bezmoc. Ta strašlivá bezmoc! Připadáte si jako kus hadru, který někdo vyždímal a pak prostě jen tak pohodil na křeslo. V ten moment nejste nic. Jen bezvládně sedíte a přemýšlíte. Entropie (=neurčitost, neinformovanost) je na maximu. Každým pórem se do sebe snažíte nasát malilinkatý kousek informace, která vás z tohoto mučení má vytrhnout. Detail, drobnost. Cokoliv!

Posloucháte tikot hodin na stěně. Máte pocit, že se vám snaží něco sdělit. Opravdu? Skutečně? Ach bože, jen to ne. Ať to není pravda. Prosím, řekněte, že ne! Diplome, klávesnice, pavučino v rohu! Cítíte, že vše kolem vás žije. A moc dobře ví, co zrovna prožíváte. Ale všechna ta okolní hmota, všechny ty předměty kolem vás však nevyslyší vaše volání, vaše prosby. Potřebujete to vědět! Z vteřin jsou minuty, z minut hodiny. Ten čas běží tak pomalu.

Ticho! Venku zafoukal vítr. To není dobré znamení. To se mi určitě snaží naznačit – to nejhorší. A nebo ne? Já nevím, nerozumím tomu. Co to má znamenat? Srdce mi buší jak ještě nikdy. Bože, ať už to skončí, jsem smířen s osudem!

Čas se pomalu chýlí ke konci, opatrně se zvedáte ze svého křesla a vydáváte se na dalekou pouť. Saháte na kliku a v ten moment vás to napadá. Já to nechci vědět. Půjdu tam a tu krabici nikdy neotevřu. Možná to tak bude lepší.

Jdete chodbou, tou neskutečně dlouhou chodbou. Znáte to, chodíte tudy několikrát za den. Máte napočítaný každý krok. A každým dalším se pomalu blížíte k pravdě. Ne, já to musím vědět. Chci znát pravdu!Třesete se. Přidáte do kroku, smířeni s nejhorším. Uhýbáte ke schodišti a zářivka za vámi zablikala. To něco musí znamenat! Proč jen tomu nerozumím?! Určitě to muselo být něco důležitého, ba dokonce rozhodující. Mozek se vám vaří.

Scházíte po schodech. Máte pocit, že o dvě patra níže se něco šustlo. To je další znamení. Bodejť by nebylo, vždyť bude jedna ráno. Ale jaké? Poslední schody, už jen pár desítek kroků. Srdce vám buší jako o závod. Dveře laboratoře jsou přímo před vámi. Čekají jen a jen na vás. Z celého vesmíru vás nezajímá nic víc, než tyto dveře. Máte pocit, že vás přitahují nějakou magickou silou.

Saháte po klice a otvíráte dveře. Rozsvítíte a temná místnost se najednou zalije životodárným světlem. Marně doufáte, že se odněkud ozve radostné „mrau“. Jen ticho a bzučení zářivek. Váš zrak se upírá na tu papírovou krabici, která si jen tak osamoceně leží na stole u zdi. Nerozvážným krokem přicházíte k ní. Kontrolujete čas, jsem tu přesně. Čtyři, tři, dva, jedna, tak a můžu. Tlukot vašeho srdce přehlušil i ambientní bzukot zářivek. Opatrně odklápíte víko krabice. Nejste schopni ani dýchat. Odsouváte víko, to poslední, co vás dělí od vašeho miláčka. Už za pár milisekund pohlédnete pravdě do očí. A pak ten moment skutečně nastane…

Fyzika nezklamala. Jako obvykle.

Každý jsme takový Schrödinger, který má všude kolem sebe krabice s kočkami, nuklidy a jedy. Jen si to většinou neuvědomujeme. Je zajímavé se nad tím někdy zamyslet.

Poznámka: Tento článek vznikl recyklací mého konceptu s názvem „Syndrom Schrödingerovy kočky“. Představte si, že jako Schrödinger se cítí každým dnem každý programátor. Stát před krabicí zdrojového kódu, koukat na něj a očima hypnotizovat načítající se ikonku. Bude to fungovat? Opravíte chybu – a ptáte se zase. Opět zemřela. A tak zase. Po několika pokusech se pravdy začnete děsit. Ano, možná teď už kočka konečně přežila – ale, co když ne? Prokrastinujete, hlavně, ať se nemusím podívat té zhoubné pravdě do očí. Máte strach. „Velký“ strach.

Prokletí informatika

Právě jsem se vrátil ze zkoušky. Dopadla – jak to tak u mě většinou bývá – víc než úspěšně. Místo bujarých oslav si však (opět) říkám, jestli je to vlastně v pořádku.

 

Než se však pustím do vyprávění toho, co se vlastně stalo a proč už v sobě nemám třetího panáka, dovolte mi jednu důležitou poznámku na úvod.

V názvu článku stojí „informatika“. Lidé, kteří mě znají, tak ví, že já mé spolužáky či kolegy rozděluji na ty, kteří jsou „informatik“ a na ty, kteří jsou „student informatiky“ (popř. „absolvent informatiky“). Tento na první pohled nenápadný rozdíl je však prakticky fatální.

Většina lidí si totiž myslí, že když studují (nebo již dostudovali) informatiku, stali se z nich informatici. To je však velký omyl. Vezměte si sebe – kolik z vašich spolužáků ze střední, kteří školu skutečně vystudovali, to skutečně umí (a případně dělá)? Když se zamyslím já, tak z mých spolužáků ze střední, elektrotechnické průmyslovky, se elektrotechnice věnuje možná tak polovina. Zbytek třídy, ač na to mají papír, bych jako elektrotechniky rozhodně nikdy nenazval.

A s informatiky je to podobné. Znám spoustu lidí (netvrdím, že přímo mých spolužáků; vzhledem k tomu, že nás aktuálně studuje 6, tak bych prakticky musel být konkrétní, což bych nerad), kteří studují informatiku stejně jako já a přitom informatiky nejsou. Ano, určitým způsobem třeba umí programovat, zadaný úkol nějak vyřeší, ale když se jich zeptáte, proč to řešili tak a tak, nebo jestli je třeba jakože nenapadlo použít to, co nás učili dva roky zpátky, tak neví. Neví, neznají, nenapadlo je to, už si to nepamatují.

Tito lidé prostě o informatice, no, dobře, nechci říkat, že neví nic, ale – z jejich práce je patrné, že prostě nejsou informatikové. Chodí do školy, učí se na zápočty a zkoušky, ale je vidět, že tomu, co se učí důkladně nerozumí a hlavně – neumí to použít v praxi. Takový člověk informatiku pouze studuje, nic víc. Jo – a samozřejmě na ni nadává. Že se musí učit teoretické nesmysly a zbytečnosti, které mu budou v praxi k ničemu.

Tak přesně o těchto lidech tento článek není. Tento článek popisuje smýšlení někoho, kdo na přednáškách přednášejícího neposlouchá, kdo na přednáškách slova přednášejícího hltá po kilech. Mluvím tu o člověku, pro kterého zabývat se teoretickou informatikou není odporná zbytečnost a ztráta času, ale něco zajímavého. Něco natolik zajímavého, že se nebojí tomu obětovat část svého volného času.

Takto nějak se vidím já. Přiznávám, že tato představa je poněkud idealizovaná, ale to koneckonců nevadí – ani já nejsem dokonalý informatik. Dobře, ale říkáte si, co je na tom tedy tak špatné?

No, první věc, která nejspíš napadne každého, je těžká integrace do praxe. Člověk zvyklý na přednášky a hluboké dumání nad rozličnými teoretickými problémy zpravidla velmi těžce nese fakt, že najednou nejhlubší problém, který ho čeká, je zjistit, proč zákazníkovi aplikace spadla.

Ale o tom jsem nechtěl mluvit. Toto totiž zjevně trápí kdejakého studenta či absolventa vysoké školy. To, proč píši tento článek pramení přímo z podstaty informatiky, resp. jejich aplikovanějších podob.

Jedním z úkolů informatiky totiž je něco, čemu já souhrnně říkám „teorie programování“. To je, zjednodušeně řečeno, sada informatických disciplín, které nám ukazují, jak by se mělo programovat. Pochopitelně, znalost teorie programování je jeden ze základních předpokladů každého informatika. Každý informatik totiž pak nejen, že něco nějak naprogramuje, ale je si vědom toho, co a jak vyřešil, že jeho řešení je nejlepší možné a pokud není, tak dokáže přesně popsat proč.

Pořád si říkáte, co je na tom špatné? Ukážu názorně: Informatik je postaven před úkol vytvořit jednoduchou databázovou aplikaci. Něco jako telefonní seznam nebo tak. Nu, aplikaci si kompletně navrhne, vytvoří si malý databázový framework, sadu GUI komponent a důmyslný systém jednotkových testů. Na závěr vše spojí dohromady a po dvou týdnech má hotovou perfektní aplikaci.

Když před tentýž úkol postavíte neinformatika, založí si projekt, vloží třídu, otevře hlavní metodu, do ní nabuší příšerné množství kódu, aplikaci spustí, prokliká a má hotovo. Za jedno odpoledne. I s pauzou na kafe. Hodinovou.

A na to, že to celé funguje jenom nějakým zázrakem a že se každý bojí v té aplikaci cokoliv změnit, protože je mu jasné, že by okamžitě odkráčela do křemíkového nebe (a ještě cestou sestřelila nějaké dopravní letadlo, prostě jen tak), se nikdo neptá. Obzvlášť v komerčním prostředí, kde každá minuta je drahá. A rozdíl třinácti a půl dne je v tomto případě značný.

Tuto situaci si asi dokážete představit. Ale pointou tohoto příběhu dvou programátorů není příšerná práce neinformatika, ale – naopak precizní práce informatika. Tady je totiž krásně vidět, že informatikovi naprosto vůbec nezáleží na tom, na jak rozsáhlém projektu pracuje, on je precizní vždy.

I když si jen píše v excelu vzoreček pro výpočet počtu sazenic na záhon, naprosto automaticky dokumentuje a testuje. A výpočet si dělí na dílčí kroky. A tak podobně. Prostě dělá vše, co je mu jakožto informatikovi vlastní.

A v tom je ten problém. Informatik je totiž takový detailista, puntičkář, chcete-li. Nedokáže se od toho odprostit. Ve všem musí mít dokonalý systém. A pokud ne, celé to zahodí a raděj to udělá celé znovu. Co naplat, že ztratí dva dny práce. Nedokázal by se smířit s tím, že vyprodukoval něco, co není podle jeho představ. Co se mu na 100% nelíbí. Co není ideální.

Tohle všechno stojí čas. To věčné zdokonalování, vylepšování, uhlazování. A vždycky se objeví nějaký další problém. Takže kus práce zahodit a zase znovu.

Zprvu je to skvělé, člověk má radost, jak se jeho dílo posouvá stále více a více kupředu. K dokonalosti. Ale časem začne sledovat, jak vždy, když má cíl na dosah, tak mu o kousek uskočí. A to začíná být frustrující. A únavné. A celé to skončí zpravidla tím, že to prostě vzdá a je nucen se spokojit s výsledkem, který rozhodně není dokonalý. Pořád je 1000x dokonalejší než to, co by vyplodil kdejaký neinformatik, ale – není to ono.

Takže zpravidla člověk, i když projekt zdárně dokončí, je totálně vyčerpán – jak fyzicky, po nekonečných dnech a nocích za počítačem, tak psychicky – žít s tím, že po tak usilovné práci a takovém množství času projekt stejně nedotáhl do konce. Ke kýžené dokonalosti.

Jedinou útěchou tak pro něj může být, když se zjeví problém. Neinformatikovo veledílo totiž v takovém případě havaruje a z neinformatika se stává hromádka neštěstí, zatímco informatik na to byl připraven a problém tak vyřeší velmi snadno. Toť teorie. V praxi se – bohužel – vždycky se objeví něco, s čím ani sebelepší informatik nepočítal a hromádka neštěstí se stává z něj. Podařilo se totiž najít (další) důkaz toho, že jeho dílo skutečně není dokonalé.

Takže zatímco neinformatikové si žijí ten svůj život smířeni s tím, že hold občas budou muset řešit nějaký ten problém, život informatika je jeden velký problém. A to je problém. Prokletí.

 

Koho by zajímalo, jak (nedokonale dokonale) vypadá jednoduchý překladač programovacího jazyka po dvou měsících informatické práce, mkrněte na github. Už je oficiálně odevzdán, takže jej, myslím, můžu veřejně uveřejnit.

 

8 studentů, 6 vyučujících, 2 učebny

Začíná mi nový semestr a tak jsem hned takto zkraje využil jednoho záchvatu prokrastinace, abych konečně napsal, jaký to je na navazující informatice.

Ano, je to tak. Už pár měsíců se mi přede jménem blyští „akademický“ (dá-li se takto bakalář vůbec nazvat) titul. Jen o pár týdnů kratší dobu se pyšním titulem „student navazujícího magisterského programu Informatika“.

Ano, je to tak, opravdu jsem se spolu s (pokud se nepletu, tak na počátku semestru) 11 dalšími statečnými vydal vstříc vědění, poznání – a otročení na přednáškách a cvičeních. Říkáte si, co mě k tomu, kromě honby mého vlastního ega za magisterským titulem, vůbec vedlo? Bylo to vlastně celkem prosté.

Přijímačky? Hlavně se neopít

Když jsem na jaře před rokem (2014) pracoval na bakalářské práci, práce mi vůbec nešla od ruky (více v samostatném článku). Když jsem poté přešel na učení se na státnice, zpočátku to vypadalo podobně. Po pár dnech či týdnech se mi to však najednou začalo dávat do souvislostí, najednou mi to všechno začalo dávat smysl, najednou jsem tomu všemu začal rozumět. Jednou jsem dokonce přišel asi ve 4 ráno domů z noční procházky se psem, protože jsem asi tři hodiny chodil po okolí a odříkával si pro sebe, jak funguje referenční model ISO/OSI.

Tou dobou jsem si začal říkat, že nechci strávit zbytek života mlácením do klávesnice a trháním si vlasů koukajíce na výpis výjimky. A stejně tak – na druhou stranu jsem prostě nechtěl opustit to naše krásné akademické prostředí (tím ovšem v žádném případě nemyslím budovu, ve které se katedra nachází, ani prostředí vývojové – i LispWorks opustím docela rád; měl jsem na mysli prostředí, které voní po proměnných a leskne se jak reflexivní a symetrická relace na množině).

Zkrátka jsem změnil své stanovisko z „půjdu to zkusit a když mě vyhodí, tak to přežiju“ na „půjdu to zkusit a chci to dodělat!“. Stačilo jen udělat státnice, přijímačky a bakalářku.

K mému pozitivu pro mě přijímačky byly hned následující den po státnicích, tedy vše ještě v živé paměti. Vzhledem k tomu, že jsem prakticky přecházel z oboru „Aplikovaná informatika“ na obor „Informatika“, přijímací řízení se tedy skládalo z obsahu státních závěrečných zkoušek z mého nového oboru, takže jsem znal asi tak dvě třetiny požadovaného učiva.

Naivně jsem tedy doufal, že po příchodu ze státnic sednu ke skriptům a osvojím si ještě alespoň základní pojmy z algebry a vyčíslitelnosti. Na druhou, a to tu pozitivnější stranu, podařilo se mi udržet se na uzdě a oslavy úspěšných státnic si odložit a spojit je s oslavami úspěšných přijímaček.

Byl tam taky týpek, co se ho zeptali na ekvivalenci a on mlčel. On fakt mlčel!

Další den jsem tedy předstoupil před komisi, odvykládal pár vět o uspořádání a už mi bylo gratulováno. No, nebudu to zbytečně natahovat, i bakalářku jsem nějak sesmolil, obhájil a přežil i byrokratické peklo na podzimním zápise.

 Cvičení? Jo, běžte si zaběhat

A začal semestr. Koukám do rozvrhu a zjišťuji, že až na prakticky pár drobných výjimek neopustíme dvě malé učebny skryté kdesi v útrobách katedry, na samotném konci chodby. Také katalog vyučujících se tak nějak zastavil na nevelikém čísle. Cvičení buďto vedou sami přednášející, nebo jeden ze dvojice doktorandů. Mnohem častěji se však stávalo, že z úst přednášejícího zazněla věta: „Jo a abych nezapomněl, dneska cvičení nebude“.

A nebo něco v tomto smyslu zaznělo hned na první přednášce a cvičení prostě neexistovala. Ono se také není čemu divit – když po třech přednáškách typu definice-věta-důkaz narazíte na první půlminutový příklad, po něm následuje další třípřednášková smršť vět a důkazů, tak něco jako cvičení prostě nemá smysl.

K mému nemilému překvapení se po nás opět chtělo implementovat vybrané problémy z přednášek. Bohužel – jakožto studenti navazujícího oboru se už zabýváme komplikovanějšími problémy, takže i jejich implementace je mnohem náročnější. To, co jsme na bakaláři odbyli s tím, že to už je zbytečně složité, my implementujeme málem čtyřmi způsoby a ještě navíc testujeme nad fiktivními daty a ověřujeme tak odvozené vzorce.

Cvičící přijde na hodinu, řekne: „Byli jste na přednášce? Tak to naprogramujte.“, poděkuje za pozornost a odejde.

Na druhou stranu se začalo mezi požadavky na zápočty objevovat čím dále tím častěji psaní seminárek, elaborátů či „rešerší“ (převyprávění článku vlastními slovy). Jako bonus pak v rámci procvičení angličtiny prezentace libovolného tématu v angličtině v předmětu Computer Science.

Zkouška? To je dobrý …

Nároky na zápočet se lišily vyučující od vyučujícího. Někdo ho dával prakticky zadarmo (proč taky filtrovat i těch 8 studentů, že?). Jiní zase chtěli, aby jsme si to vyzkoušeli a netápali u zkoušky nad základními pojmy (věta: „Vždyť jste to programoval, ne?“ byla docela běžná). Nicméně ani to obvykle nebyla nějak výrazná překážka a prakticky všichni jsme u všech předmětů postoupili ke zkoušce.

Zkoušky byly obecně také zajímavé. Nikdo po nás nechtěl, abychom se učili nějaké sálodlouhé odvozování a výpočty zpaměti. Většina věcí se řešila jen ideově. Já jsem tak kupříkladu řešíval i důkazy (které jsou u většiny předmětů většinou jejich obsahu). Na absolvování to stačilo, spousta spolužáků dokonce důkazy řešila přitroublým úsměvem a – taky prošli.

Zkrátka, pokud jste chodili poctivě na přednášky a nespali tam, stačí si to jen pár dní před zkouškou oživit, osvěžit, zopakovat a dostudovat si detaily (např. přesné znění definic, příp. základních vět). Jak jsme se shodli – od člověka, který nastoupí na navazující po i tak náročném bakaláři (a nejde si dodělat magistra nebo inženýra nějakou snažší cestou), tak se předpokládá, že ho olomoucká informatika zaujala a vyučující si toho jsou vědomi. A proto si studentů váží, už to pro ně nejsou ti, které by mohli (a že by to často nejraděj udělali) poslat domů jedinou dobře mířenou otázkou. Na magistrovi přijdete, něco řeknete, co jste se o tom naučili, a pak už diskutujete se zkoušejícím a pokud nemluvíte úplně zcestně, tak vás nevyhodí.

„Vypsal jsem to na 7 ráno a čekal jsem, že nikdo nedorazí a já to budu moct zrušit a pospat si.“

Nicméně dovolil bych si jedno upozornění pro aplikované informatiky: Psal jsem, že zkoušky jsou celkem v pohodě. To sice ano, ale za předpokladu, že znáte (alespoň) základní pojmy z algebry, pravděpodobnosti, logiky a vyčíslitelnosti. V opačném případě vám příprava zabere o polovinu času víc a vy budete googlit, co že je to ta ortonormální matice, úplný ohraničený svaz, Bayesova věta, dedukce, či třída PSPACE.

Co tady děláte? Poslouchám?!

Závěrem bych se připojil ke kolegovi Halfarovi a jeho článku. Zmiňuje, že – stejně jako já – si začíná být vědom toho, že se mu akademické měsíce blíží ke konci, a že už dávno nemusí řešit problémy s tím, kde získat co nejvíce kreditů „zadarmo“, a začíná tak navštěvovat předměty, které ho prostě zajímají.

Ze stejného důvodu jsem si zapsal předměty TeX pro pokročilé a Kognitivní chyby a biasy. Je fakt, že si mezi všemi těmi filosofy na hodinách KCB připadám tak trochu jako „The Englishman in New York“, a že opravdu doufám, že se mě nikdo nezeptá na původ (resp. studijní obor), protože by na mě koukali opravdu jak na vetřelce či špeha. Uvidím, co se mi poštěstí ulovit příští rok, ale chtěl bych ještě absolvovat dvousemestrální kurz angličtiny a rád bych také nenáročně pokračoval ve studiu teorie myšlení.

Zkrátka – jak říkám – navazující už je hodně o tom, že člověk dělá to, co ho baví (ve druháku jsou snad jen dva povinné předměty, zbytek si studenti volí podle toho, co je zajímá). A oni to ví a tak vás v tom podporují.

Jak jsem (nena)psal bakalářku

Jeden né zrovna veselý příběh jednoho studenta …

Jako každý třeťák mě čekala bakalářská práce. Abych pravdu řekl, určitým způsobem jsem se na to i těšil, protože jsem věděl, že budu dělat něco, co mě baví, co mám jako koníček – a ještě za to dostanu titul.

Předložil jsem mému vedoucímu práce návrh tématu, ten mi jej naprosto celý zkritizoval a navrhl mi vlastní. Kývl jsem mu na to, neboť se mi i toto téma líbilo.

Z mnohých důvodů však zde nemohu být konkrétní a zmínit přesné zadání a téma práce. Stejně tak nemohu zmiňovat moc implementačních detailů. Co však říci mohu je fakt, že se mělo jednat o webovou aplikaci vytvořenou v Javě.

Téma jak z pohádky

To byly koneckonců mé první dva požadavky – webová aplikace a to v Javě. Jako další jsem si dal za cíl, použít v práci i něco víc. V žádném případě jsem se nechtěl zařadit do skupiny těch, co opouští katedru informatiky s bakalářským titulem a tématem jako například „Mobilní aplikace – osobní trenér“. Dokonce, někoho, jehož téma zní „Implementace elektronického obchodu v PHP“ bych označil za ostudu katedry.

Ale o to teď nejde. Chtěl jsem tím naznačit, že u mé bakalářské práce bych se nespokojil s běžnými programátorskými nástroji. Mé téma proto obsahovalo nastudování si určité funkcionality (API) (když už ne téma z oblasti teoretické informatiky), se kterým se člověk moc často nesetká. A na znalosti tohoto API pak měla být vystavěna celá práce.

Samozřejmostí měla být použitelnost aplikace. Ihned po dokončení má být práce nasazena do provozu a věřím, že bude určitě používána.

Téma tedy přesně padlo do mého vzorce pro ideální bakalářku. Povím vám nyní, jaká byla má představa průběhu roku – její implementace.

„Jo, bezva, super, perfektní. Už se těším, až se do toho pustím.“

Když jsem práci dostal zadanou, předpokládal jsem, že do konce zimního semestru, nejpozději začátkem ledna, budu mít hotovou core knihovnu (tedy jednoduchou aplikaci implementující nastudované API). Dle mých odhadů a vzhledem k rozvrhu jsem si plánoval pracovat celkem volným tempem a poslední rok studia si užívat.

Letní semestr jsem počítal, že budu pracovat na webové aplikaci a vzhledem k dostatečnému množství času, i chodit do práce. Odevzdání práce jsem předpokládal s asi měsíční rezervou a poté se už jen 5-6 týdnů připravovat na státnice.

Normy plníme na 118%. Mínus 118%

Když jsem pracoval na zápočtovém projektu do předmětu Dovednosti vývojáře, ukázalo se, že podtitulem onoho projektu mohlo vcelku reálně být „menší databázová aplikace většího rozsahu“. Říkal jsem si: „Tak fajn, databázi pudu potřebovat i v bakalářce, tak to rovnou udělám jako webovou aplikaci a pak to jen upravím a budu mít ušetřenu půlku práce na bakalářce“. Dával jsem si proto na tomto projektu docela záležet.

Bohužel – můj návrh databázového frameworku nebyl úplně ideální a tak mi bylo jasné, že pro účely bakalářské práce budu muset vytvořit kompletně nový. Stejně tak, vzhledem k tomu, že jsem měl drobné komplikace s používaným webovým frameworkem, nabral jsem neskutečné zpoždění a tak i tu webovou aplikaci jsem solidně odflákl („bakalářka se nějak poddá, hlavně ať mám DOVY“).

Ve výsledku jsem tak na mé bakalářské práci začal pracovat až někdy v zápočtovém týdnu. Asi není třeba dodávat, že slovo „užívat si“ pro mě bylo vzdálené asi jako Paris Hilton a cena Grammy.

„Dobře, dodělám to  a přijdu Vám to ukázat.“ Od té doby mě vedoucí viděl jen na chodbě

Po zkouškách, které jsem nakonec nějak zázračně udělal (znáte to, čím méně se učíte, tím lépe to dopadá), jsem pokračoval v práci. Vedoucí mi mou core knihovnu opět zkritizoval slovy: „No, jako jo, pěkný, super, ale když …“. Řekl jsem mu, bylo to koncem ledna, že to dodělám, udělám základ webové aplikace a přijdu mu to ukázat. To se nakonec nikdy nestalo.

V letním semestru jsem měl poněkud nepraktický rozvrh – do školy jsem musel 3x až 4x do týdne (což je při 3 předmětech opravdu frustrující). Takže přes týden jsem byl téměř nepoužitelný. Sotva začalo pondělí, už byl pátek a já zjišťoval, že jsem neudělal téměř nic.

Web snadno a rychle!

Koncem března, se na mém facebooku objevil příspěvek, kde zmiňuji, že s dvou a půl měsíčním zpožděním mám konečně hotovou core knihovnu. Popisoval jsem ji slovy: „konzolová aplikace spustitelná pomocí sedmiřádkového příkazu o 8 parametrech, která zdá se i funguje“. Bohužel to poslední se mi podařilo o pár týdnů později vyvrátit.

V rychlosti jsem implementoval databázi a vrhl se na webovou aplikaci. Vzhledem k tomu, že jsem webovou aplikaci v Javě nikdy pořádně nedělal (a když už, tak buďto jen nějakou rychlovku – jako výše zmíněný projekt do DOVY), šlo to pomalu a nefungovalo to. Začal jsem zjišťovat, že webový framework, který používám, obsahuje opravdu spoustu chyb. Ty mě postupně tlačily do kouta –  a problémy jsem stále více a více řešil metodou: „Tak dobře, hold se bez toho uživatel bude muset obejít. Nemám čas vymýšlet, jak to udělat jinak, aby to mohlo fungovat.“.

Ale nevzdal jsem se. Nedokázal jsem si představit, že já, upocený a unavený potkám spolužáka vítězoslavně mávajícího bakalářským diplomem, na kterém je napsáno kdesi v rohu: „Implementace internetového obchodu v PHP“.

Pracoval jsem na 180%, spánek pro mě znamenalo jít si na dvě hodinky lehnout po snídani a hrnku silné kávy. (Dokážete si představit, jak jsem vypadal, když jsem zjistil, že nám káva došla?) Jakmile jsem opět narazil na něco, co nefunguje, přešel jsem do módu Hulk a nadával na celej svět.

„Dobré ráno, jdu spát“

Do toho všeho mi docházela RAM, takže počítač se začal víc než nepříjemně sekat. Pak ještě v lampičce praskla žárovka, začal blbnout mobil a asi týden jsem se potýkal s bolestí zad, protože se mi zlomila počítačová židle a já si musel zvykat na máminu.

Stavy zoufalství a vzteku se střídaly asi jak nálady bejvalky v období rudého klína. Do toho všeho jsem pozoroval i zoufalé obličeje mých nejbližších, kteří jediné, co mohli, tak smutně konstatovat: „Kéž bych ti tak mohl(a) nějak pomoct …“. Bohužel, zde byl i můj vedoucí práce v koncích (a to je na celé katedře na toto téma největší – pravda, jediný – odborník).

Zpočátku jsem všem v okolí říkával: „Mám tam tak na minimálně dva měsíce práce a za 4 týdny mám odevzdávat.“. Přemýlal jsem nad tím, jestli je možné, abych to mohl stihnout. Ne. Začal jsem uvažovat o tom, že to nestihnu. Začal jsem se s touto představou smiřovat. K dobru mi mělo být, že v tom nejsem sám. Z mých kamarádů nevím asi o nikom, kdo by šel v řádném termínu.

A co kdyby to byla pravda?

Vedoucí práce to přijal s pochopením. Znovu objevuji, jaké to je být vyspaný, umytý a opět zjišťuji, že kolem mě jsou nějací lidé. Doháním studijní agendu (fajn zjištění, že máte za tři dny odevzdávat index).

Velmi pomalu se začínám učit na státnice. Mám na to tři týdny. To snad zvládnu. V lepším případě začnu po večerech připravovat bakalářku na změnu frameworku.

A tak mi v tuto chvíli nezbývá než doufat, že to všechno nějak vyjde. Že jak tam přijdu, tak si nevytáhnu zásobníkové automaty. A nebo II. normální formu. A že ti, co ví naprosto přesně jak se implementuje e-shop v PHP poznají hněv docenta Vychodila při otázce: „Víte vy sakra vůbec, co je to append?“.

Prvačky

Poslední obětí, poslední pusa na tvář, poslední pohádání se s rodiči o tom, kdo co zapomněl a kdo to měl na starost. Tak nějak to obvykle začíná.

Je nedělní večer a já procházím kampusem. Je už docela chladno, takže s rukama v kapsách a mým standardně zamyšleným výrazem ve tváři a zahleděn do země. Jako kdyby se mě ten ruch kolem vůbec netýkal.

V době, kdy jsem tudy procházel totiž zbývalo několik málo hodin do okamžiku, kdy dvanácti údery kostelních zvonů začne pro necelých 25 tisíc mých kolegů nový akademický rok.

Zvedám pohled ze země a rozhlížím se kolem, abych si i já ukousl kousek této jedinečné atmosféry. Už je téměř tma, ale kolem mě je živo, ba dokonce bych řekl, že i živěji než kterýkoliv jiný den semestru. Míjím se se spoustou lidí s kufry na kolečkách, krabicemi a velkými taškami. Pobíhají všemožnými směry, zkušeně i zmateně.

V takovéto situaci si vždycky povzdechnu: „Tak už nám to zase začíná. Tak už jsme se tady všichni zase sešli. Všichni. VŠICHNI!“ Míjí mě slečna na vysokých podpatcích, jimiž na svou přítomnost upozorňuje širé okolí pronikavým klapáním a svérázně si tak razí cestu ke svému novému domovu.

Nyní se ovšem málem srazím s mladíkem, který úplně naprosto přesně vypadá, že je tady úplným omylem. Kromě toho, že vypadá jako řadový středoškolák, se tady zmateně rozhlíží, kam že to má vlastně jít, a přemýšlí jak pobrat všechna ta zavazadla aniž by jimi byl zavalen.

Nyní minu skupinku zahraničních studentů tmavé pleti, diskutujíce v nespecifikovaném jazyce (tuším, že se mu říkává „erazmáčtina“). Přede mnou prošel pár, který věkově naopak vypadá, že o studentském životě si může tak nanejvýš nechat vyprávět tak možná od své dcery. A ejhle – ta jim jde v patách, pochopitelně polehku, jen s kabelkou.

To mě donutilo odklonit zrak na cestu. Asi vás nepřekvapí, že připomínala silnici někde v Bangkoku při dopravní špičce. Auta se navzájem oslňují světly, mezi nimi pobíhají jejich posádky a střídavě vytahují věci z kufrů, konzultují to s řidiči, kteří se mezitím starají, aby jim jejich miláčky neodřeli, zatímco jejich další miláčkové prohrabují kufry. Mezi tím vším se neustále pohybují řidiči kufrů na kolečkách a nosiči krabic.

„Ha, nezklamaly“, řekl jsem si a na tváři se mi objevil úsměv. Slovo „student“ je odvozeno od „studentský život“, takže potkat dvojici nebo trojici slečen s lahví vína v ruce bylo víc než milé (ne)překvapení.

Za zády se mi ozvalo: „Jé, hele, koukej!“. „Tak to je přísný, vole.“ Neohlížím se, neřeším, jen si opět povzdechnu: „když všichni, tak všichni“. Míjím slečnu s telefonem u ucha, která se tak trochu z důvodu svého vzrůstu hbitě rozhlíží a říká něco ve smyslu: „No, já jsem tady, jak jsou ty stromy, tam skoro až na konci, jak je …“. To je to, na co všichni čekáme. Na co se všichni tak strašně těšíme. Celé prázdniny. Studentky prvních ročníků.

Mladé, zmatené, nezkušené (co do studijních záležitostí samozřejmě) studentky, které i přes všechny přípravné kurzy a akce spadly z monotónního středoškolského života do světa akademického a tápou.

A vy už víte, že následující týdny pro vás budou obdobím, kdy budete odpovídat dotazy typu: „Prosím tě, nevíš, kde je tady učebna …?“, „Vyznáš se tady? Nevíš, co znamená, když … ?“ či „Prosím tě, mám tady … , to jako znamená, že … ?“. Vy, byť budete mít za sebou sebenudnější nebo naopak sebenáročnější (a to po prokalené noci bývají velmi často) přednášku, prostě vám to nedá a z posledních sil vcelku slušně odpovíte. Možná ještě přihodíte něco typu: „To je támhleta učebna. A doporučuji si sednout dopředu, vzadu není nic slyšet.“, „Občas se do toho musí trochu kopnout. Ale spíš bych doporučil kafe v bufetu.“ nebo velmi časté: „Tady na to klikneš a může si vybrat jídlo. Doporučuju …“.

Kromě toho, že třetí případ může skončit společným obědem je vám k dispozici naprosto dokonalá odměna: její úsměv. Je vědecky dokázáno (a pokud ne, tak na tom jistě tajné armádní laboratoře po celém světě již nějakou dobu tajně pracují), že úsměv je jedna z nejskvělejších věcí vůbec.

A pokud se vás některá slečna zeptá: „Prosím tě, a co je vlastně to účko?“ nasadíte úsměv pro změnu vy a slečnu samozřejmě s dalšími dvěma nebo třemi spolubydlícími nebo spolužačkami pozvete na nějakou tu „Semmester Welcome Party“. Studium na vysoké není žádná flákárna a člověk se mu musí naplno věnovat hned od prvního dne studia.

Chtěl bych tímto poděkovat jednomu mému příteli, který mě inspiroval k napsání tohoto článku. Pane kolego, díky!

Druhák na UPOLácké informatice: „Vydrž, Prťka, vydrž!“

Opravdu – s několikaměsíčním zpožděním jsem se konečně dokopal k sepsání mých studijních zážitků za další část mého studia. Dlouho jsem totiž přemýšlel, jak tento článek nazvat, aby bylo jasné, jak tvrdé období to mám za sebou.

Pokud vám někdo bude tvrdit, že Olomoucká informatika je lehká, dejte mu facku. Pokud bude tvrdit, že je těžká, dejte mu ji taky. Ve druháku se totiž potvrdilo, to jsem tušil už od několikátého týdnu v prváku.

Olomoucká informatika není ani lehká, ani těžká. Ona je, řekl bych, náročná. To ovšem neznamená, že strávíte tři čtvrtě zkouškového pod hromadami skript a knih. A to nejen proto, že na velkou část našeho učiva skripta vůbec nejsou a knížky leda v angličtině. Na něco takového na informatice prostě nenarazíte. Sice ano, bez učení to prostě nejde na žádné škole, ale na informatice nejde o to, kdo toho kolik umí, ale jestli tomu rozumí. Dokonce mě až překvapilo, kolikrát jsem od zkoušejícího slyšel něco ve smyslu: „No, dobrý, dobrý, vy to sice moc neumíte, ale vidím, že tomu rozumíte, podejte mi index, A“.

Nicméně pro mě osobně byla zkoušková období odreagovačka. Těšil jsem se na ně víc než malý Honzík na Vánoce. Krušné byly totiž oba semestry jako takové.

Třináctitýdenní peklo

To, že budu muset zase začít dělat domácí úkoly, s tím jsem se smířil již v prváku. Tehdy mě ale nenapadlo, že díky nim nebudu mít čas na nic jiného.
Můj denní režim vypadal opravdu tak, že jsem vstal, vcelku jedno kdy, sbalil se, šel do školy, tam vytáhl notebook a dělal úkoly než mi začala nějaká výuka. Úkoly jsem dělal i o pauzách mezi hodinami, a ještě klidně i pár hodin po skončení poslední hodiny. Když mě to přestalo bavit, nebo mě ze školy začali vyhánět, šel jsem domů, najíst se, pokusit se opět pracovat a následně padnout hlavou na klávesnici. Množství zkonzumované kávy a energetických nápojů vzrostlo (obzvláště  v letním semestru) o několik tisíc procent oproti obvyklému množství. Každý den jsem stříhal metr a počítal týdny a dny, kdy už to konečně skončí.

Když už jsem měl školy opravdu plné zuby, dělal jsem zápočtové úkoly do „Webové prezentace“ nebo „Základy tvorby webových stránek“

Druhák se totiž stal ročníkem „B předmětů“, tedy povinně volitelných. Pro nás aplikované, kteří jinak byli více tlačení do programování, byla většina předmětů teoreticko-informatických právě jako B. Takže nám těch povinných (ty, co byly na pomezí teoretické a aplikované informatiky) už pak moc nezbylo.

Já, který se o teoretickou informatiku zajímám, jsem si pozapisoval pár těchto předmětů. Avšak spolu s nimi pochopitelně i ty programátorské. Mezi nimi jsme měli na výběr ze tří jazyků – C++, C# a Java a pro hodně odvážné předmět PRCL (hodně pokročilé „Programování v Common Lispu“).

C++ jsem měl po oba semestry zapsané jako předmět, který budu v případě nouze odepisovat jako první. Nicméně díky téměř nulové absenci a nějaké té aktivitě v hodinách jsem tak dostal oba zápočty za účast, bez nutnosti vypracovávat nějaký projekt. Na předmětu se mi ale líbilo, jakým způsobem byl jazyk C++ odlišován od jazyka C, neboť všichni tyto dva velmi rozdílné jazyky ztotožňují.

Kurz C# byl strašný. 90% hodin, pokud vůbec byly, tak vyučující trávil proklikáváním se ve Visual Studiu a nebo vysvětlováním, že pole se indexuje od nuly. Tak, jak jsem C# nikdy neměl moc rád, tak tento dvousemestrální kurz mi ho znechutil ještě více. Každopádně vedlejším produktem ze zimního semestru byl můj zápočtový projekt, „hra“ Tamagoči, jedno malé bezvýznamné plus.

Poslední z vyučovaných jazyků byla Java. Doktor Krajča má ve zvyku být na studenty tvrdý a nemilosrdný, takže každý týden úkol na několik (ne-li desítek) hodin byl samozřejmostí, takže jej absolvovalo jen pár vybraných studentů (a to většinou ti, co odmítli dělat ročníkový projekt v C#). Kromě toho, že jsme byli seznámeni se spoustou praktických „funkcí“ (vlastní Swing komponenty, databáze, základy reflections API, …), tak jsme byli také silně tlačeni do kvality kódu. Což při porovnání kódu ročníkového projektu studenta, co ho psal v Javě, a toho, co ho psal v C#, bylo značně poznat.

Definice, věta, důkaz

Z předmětů teoretické informatiky bych rád zmínil Algoritmickou matematiku 3. Ta navazovala na 1 a 2 a znalosti rozšiřovala o obecné záležitosti ohledně složitostí a návrhu algoritmů. Celkem na pohodu a praktický předmět, doporučuji.

Paradigmata programování 3 byl předmět zpočátku velmi těžký, ale kdo jej nevzdal, dostalo se mu spousty moudrých rad a mimo jiné jsem – alespoň já – pochopil, proč do nás celý prvák vlastně tak intenzivně valili Scheme a Lisp (a proč je Lisp na katedře tak oblíbený).

Jeden z nejděsivějších předmětů za celý ročník bylo bezpochyby Paralelní programování. Kdo se už někdy setkal z vícevláknovými aplikacemi, vůbec se nebude divit, proč se tomuto předmětu říkávalo „Paranormální programování“. Svou koncepcí předmět tak trochu připomínal Počítačové sítě. Přednášky tak trochu o ničem, nebo jen teoretická příprava na zkoušku a (alespoň já) jsem se málokdy chytal. Na cvičení po nás chtěli něco vypracovávat, opět – téměř nikdo nevěděl, nestíhalo se, přetahovalo se, protože co se nestihlo na hodině, to znamenalo přijít o cenné body k zápočtu. Oba předměty jsem tak měl započteny s odřenýma ušima, ale obě zkoušky naopak dopadly celkem dobře. Každopádně jsem rád, že oba tyto předměty už uvidím až před státnicemi.

Odvahu na Matematickou logiku a Geometrii pro informatiky jsem nesebral (byť tyto předměty víceméně každý, kdo se neřadí mezi ty, co jsou rádi, že ještě studují, nějak udělal) a tak jsem zůstal jen u Geometrického praktika. Spolu se zápočtem jsem si odnesl také znalost programování v OpenGL a rozpracovanou 3D bludišťovku, na které nadále pracuji a bude brzy vydána.

Když už jsme u těch teoretických předmětů – nemůžu opomenout noční můru všech (především aplikovaných) informatiků – Formální jazyky a automaty. Znal jsem základy, vyznal se v matematických předpisech, byl si vědom důležitosti znát přesně definice a vůbec – učivo jsem z velké části chápal, ale i přes to jsem jak zápočet, tak zkoušku (díky drobnostem, samozřejmě) udělal tak tak. Paradoxem je, že spolužáci, kteří nadávali od půlky první přednášky, že se to nedá, studenti, kteří se na škole sotva drží a které měl tento předmět vyfiltrovat, ho tak nějak udělali téměř v pohodě (s o několik stupňů lepší známkou než já).

Kredity budou stačit

Ve výsledku nás tak měly Formální jazyky a automaty spolu s Operačními systémy 1 (které jsem udělal nějakým zázrakem, protože jsem absolutně neměl čas vypracovávat (ne povinné, ale silně doporučené) úkoly z cvičení) a Ročníkovým projektem důkladně profiltrovat, neboť se nás do druhého ročníku probojovalo až moc. Nevím, zda-li se tak podařilo, to se asi uvidí až příští rok, až budou tyto předměty opakovat, ale obávám se, že úspěnost studentů byla vysoká. Takže nás budou sekat na něčem letos.

Já jsem díky bohu zvládl předměty všechny, a žádný jsem si nakonec neodepsal nebo nevzdal. A jsem za to rád. I když vím, že jsem rok žil jen školou a spánkem, vím, že mi to něco dalo. A věřím, že 85 kreditů je adekvátní ohodnocení vynaloženého času a úsilí.

 

Deskovka Dameo, můj ročníkáč

Před pár dny pro mě úspěšnou obhajobou ročníkového projektu zkončilo období terroru jménem „druhák na olomoucké informatice“, o tom však více v samostatném článku, který se připravuje.

Nyní je důležité, že můj projekt byl oficiálně přijat komisí a já jej tak můžu uveřejnit.

O co šlo?

Našim úkolem bylo sestavit kompletní aplikaci realizující deskovou hru (tedy něco podobného jako např. Solitare ve Windows). Deskovou hru příbuznou hře „dáma“. Z nabídky možných zadání her (Dameo, Havajská dáma, Fríská dáma, parašutistická dáma) jsem si vybral hned tu první – Dameo.

náhled


K aplikaci byly specifikovány určité požadavky (například umělá inteligence (počítačový hráč), možnost ukládat hru do souboru, možnost pohybovat se v historii tahů, a podob.) takže ve výsledku se z projektu měla stát opravdu kvalitní a plnohodnotná aplikace. V mém případě se tak opravdu stalo, ale předcházela tomu opravdu spousta, spousta, spousta a ještě jednou spousta práce.

Pánové, byl to porod

Projekt byl rozdělen do dvou semestrů, v prvním se mělo vytvořit jádro aplikace, které se poté v letním semestru mělo obalit ještě pár věcmi, mezi nimi uživatelským rozhraním (tedy „aby to i nějak vypadalo“).

Vzhledem k tomu, že jsem zimní semestr měl značně nabitý už tak, na „ročníkáč“ se dostalo až k jeho konci a především asi v první půlce zkouškového. Celkem to mohl být tak asi jeden celý měsíc práce, který jsem do něj investoval.

V letním semestru byla situace ještě horší – čas nebyl opravdu žádný. To dokonce takovým způsobem, že se na Dameo dostalo až v druhé polovině zkouškového, po splnění všech zkoušek. Další měsíc práce.

V součtu jsem do projektu investoval dobré dva měsíce práce. Dva měsíce. Celou jednu šestinu roku mě to stálo.

Tak na co čekáme? Pojďme si Dameo zahrát!

Let’s play

Nemohu si odpustit pár implementačních detailů. Aplikace byla vytvořena v programovacím jazyce Java – je tedy multiplatformní (takže bude fungovat jak na Windows, OS X, tak i na linuxu). Ale z toho vyplývá, že aby jste si Dameo mohli spustit, musíte mít nainstalovanou podporu Javy, tzv. běhové prostředí JRE. To je nutné si stáhnout z oficiálních stránek společnosti Oracle a nainstalovat. Zvolte verzi pro váš operační systém a pokud používáte 32 bitový, volte variantu „x86“, pro 64 bitový pak pochopitelně „x64“.

Poté už stačí jen Dameo stáhnout a normálně spustit. Není nutné nic instalovat, rozbalovat nebo tak něco. Prostě poklepe na stažený soubor a už hrajete. Samozřejmě uživatelé debian-like linuxových distribucí (neboť já se mezi ně řadím) si mohou stáhnout „instalačku“ (deb balík) a ten nainstalovat a mít tak Dameo na stálo v systému.

Dameo ke spuštění

 

Dameo.deb

Vzorce, rovnice a výrazy přes internet? Pomocí mého Editoru rovnic Online!

Také už se vám někdy stalo, že po vás někdo chtěl, aby jste mu něco vysvětlili přes ICQ/facebook chat? Nějaký příklad, nebo tak něco?

Uplně vidím, jak mu tam píšete „a1 na2 + a2 na 2 / (a1 – a2) na2“, pak si uvědomíte chybu a doplníte „to a1 na2 + a2 na 2 mělo být taky v závorce“. Takhle s ním komunikujete pár desítek minut a hlava se vám div nezavaří při transformování z chatu do matematického zápisu a natož, aby jste uvažoval, co s ním a jak jej upravovat či počítat.






Tomu je nyní konec! (Fuj, zní to jak Horst Fuchs z Teleshoppingu, ale nemohu si pomoct ;-)).  Nyní přichází edrovonl, tedy Editor rovnic online, ve kterém si vcelku pohodlnně to, co jste předtím svému kolegovi posílali ručně přepíšete do speciálního jazyka (který není ninak těžký – velmi se podobá přirozenému jazyku) a vašemu kolegovi pouze pošlete odkaz na vámi zapsaný výraz/rovnici.






Jak snadné!

Tohle umí už jen Wolfram Alpha.

Nemusíte se bát, že by na vás byl edrovonl nedostačující. Je dimenzován pro potřeby jak těch nejjednodušších výrazů a rovnic (tak dobře, „měla babka čtyři jabka a dědoušek jen dvě“ edrovonl neumí :-)) tak až na úrověn základů vysokoškolské matematiky (operátory jako suma, limita, integrál, produkt, a podob.).

No a mě nezbývá nic jiného než vyvěsit odkaz na jeho spuštění:

 

Editor rovnic Online ZDE

Sakra, jak já to dělám?

To se i já divím. Další semestr, další zápočtové, další zkouškové mám za sebou a vše z toho úspěšně.

Jako vždycky jsem si našel chvilku, abych vám popsal, jak probíhal předchozí semestr a vše s ním spjaté.

Informatická propedeutika 2, tedy standartní bloková výuka hned v prvním týdnu byla pro nemoc zrušena a to včetně zápočtového úkolu. Nicméně kredity zůstaly zachovány. Chudáci ti, co si ji nezpsali. To ale byla asi jedna z posledních dobrých zpráv na následujcí týdny.

Kromě propedutiky jsem měl také zapsané všechny ostatní B předměty (povinně volitelné) doporučené na zimní semestr druhého ročníku, takže rozvrh jsem měl opravdu nabitý. Ve škole sice jen 3 dny v týdnu, ale to téměř bez přestávek od rána (dopoledne) až do pozdního odpoledne, či večera.

Ze začátku semestru jsem hodně bojoval s Paradigmaty programování 3. Makra mi moc nesedla, (díky nim jsem taky dostal ze zkoušky B), trávil jsem nad úkoly do tohoto předmětu značnou část svého volného času. Poté už to celkem ušlo, člověk se naučil, že pokud programuje příklad a má víc než 4 řádky, nemá cenu v něm pokračovat a může ho rovnou smazat, protože by byl určitě špatně.

Když jsem nějak dohnal bodový skluz s Paráči (a že to byl opravdu boj), vrhnul jsem se na Ročníkový projekt. Neměl jsem moc čas studovat rozdíly mezi možnými variantami zadání (konkrétně impmentance deskových her Dameo, Fríská Dáma, Hawajská Dáma nebo Parašutistická Dáma), tak jsem sáhl hned po prvním. Jazyk implementace pro mě byla jasná volba – Java.

V porovnání se zbývajícími dvěma jazyky (C# a C++), které jsme měli na výběr (Common Lisp neuvažuji), jsem věděl, že právě Javu budu umět po absolohování semestru ze všech nejlíp. Na C++ jsem věčně dělal, že něco dělám, což se mi vrátlo formou zápočtu za aktivní účast, a na C# jsem se chodil akorát vyspat po náročném dni nebo, pokud jsem se na to zmohl, programovat úkoly do Javy.

V Úvodu do progrmaování 3 – Java jsme totiž opravdu proletěli velmi praktické věci (ano, pravda, vědět, že v C# se pole indexuje od nuly je taktéž velmi praktické ;-)) takže tvořit v ní pak slušný ročníkový projekt opravdu nebyl problém.

Nehledě na to, že vyučující neznal slova hezčí než: „No, to ujde“, „To je hnus“, „Todle je na poblití“, „a todle rači ani nečtu“ a navazoval tak na tradici předmětů Paradigmata programování, které si kladly za cíl učit nás slušnému programování.

Java logo
Ano tento šálek kávy mi dal opravdu značne zabrat

Jako další významný předmět bych jmenoval Počítačové sítě. Předmět, kterého jsem se opravdu velmi obával. Na síťařinu jsem nikdy nebyl, takže při životě mě držely mé (základní) znalosti o počítačových sítích ze střední. Na přednášky chodilo jen pár lidí, kteří poté měli Javu (a ani z daleka ne všichni), na cvičeních, byť byla zadání online, nikdo nic nevěděl, svépomocí jsem se ale nějak dobojoval k zápočtu.

Na zkoušku jsem se učil několik dní a s tím, že tak na třetině otázek mě vyhodí, u třetiny mu něco řeknu a tak na necelou jednu třetinu otázek jsem si i věřil. Vytáhl jsem si otázky z třetiny druhé a odcházel jsem s C.

Algoritmická matika byl také poměrně dobrý předmět. Začaly se brát více teroreticko-informatické záležitosti, více do algoritmů. Ze začátku to bylo super, celkem jednoduché učivo aplikované na mě známých problémech (Problém batohu, Dijkstrův algoritmus, …) přednášek jsem chápal, na cvičení se chytal. Ke konci jsem však na přednáškách spával a cvičení opouštěl v půlce, takže byla příprava na zkoušku o to těžší. Tahal to ze mě až z paty, ale prý jsem to chápal, každopádně A mě velmi překvapilo.

Třešničkou na závěr byla úplně obyčejná Matematika 2. Celou dobu semestru byla na cvičeních totální nuda, víceméně opakování ze střední, na tabuli jsem oči zvedl tak dvakrát za přednášku, prostě nuda. Bohužel na zkoušce jsem si vytáhl učivo poslední přednášky na které jsem pro jistotu nebyl vůbec a které jsme na střední brali jen tak okrajově, natož abych si pamatoval vzorečky a znal definice, takže jsem opakoval. Aby toho nebylo málo, na druhý pokus jsem si vytáhl naopak otázky skvělé, ale našel v mých znalostech par děr a tak jsem mírně smutný odcházel s C.

Díky množštví B předmětů byl můj rozvrh chudý na C (nepovinné) předměty. Pokračoval jsem tak pouze v SWM2 předmětem Sowtare pro matematiky 3, který jsem z půlky strávil přetahováním cvičení ze sítí a z druhé děláním něčeho, jakože aby se neřeklo. Na zápočtu po nás chtěl vyřešit nějakou složitější diferenciální rovnici, což nakonec dopadlo tak, že jsem zkopíroval jeho ukázkový kód a jen jej upravil.

No a o Webové prezentaci jsem se již rozepsal ve zvlášť článku Sedím na SLO/WP a strašně se nudím….

Jak říkám, po dobu semestru, a vůbec téměř do teď jsem neměl téměř volný čas, v podstatě pořád jsem dělal něco do školy, a když ne, pracoval jsem na Ročníkovém projektu. Byl to záhul, ale stálo to za to. Něco jsem se naučil, nasbíral jsem plno kreditů a teď vzhůru do nejnáročnějšího semestru za celé bakalářské studium.