Seminář C++ (ICP) – zhodnocení
By Bumerang
Můj první a jediný předmět ze skupiny PVT, tedy povinně volitelný technický. Vaším cílem za Bc. studium je absolvovat minimálně jeden předmět z této skupiny. Kromě C++ máte ještě na výběr seminář Java nebo seminář VHDL. Netřeba zdůrazňovat, že většina lidí si vybere buď C++ nebo Javu, VHDL přeci jenom není úplně konformní programovací jazyk.
V předmětu se nepíšou žádné testy, není v něm ani zkouška. Je zakončen „pouhým“ zápočtem. Všechny body leží totiž v projektu, jehož zadání je společné právě s Javou (ano, budu název tohoto jazyka prasit českým skloňováním). Naším letošním tématem bylo naprogramovat hru Dáma, včetně GUI, síťové hry, ukládání — prostě všech těch věcí, které v hrách obvykle jsou. Zadání mě potěšilo, protože minulý rok bylo potřeba implementovat „vysokoúrovňový simulátor Petriho sítí“. Projekt se řešil v týmech po dvou členech — a opět jsem měl štěstí na kolegu, který se hlavně na konci ukázal neuvěřitelně výkonným.
Trubka sem, tyč tam
Sami jsme si dělali návrh struktury programu, přičemž nám bylo řečeno, ať plně využíváme OOP a návrhové vzory. To nás ze začátku poněkud vystrašilo, protože jsme je tam neviděli. Ale jak se později ukázalo, vylezly nám z návrhu samy. Já jsem měl na starosti jádro aplikace + CLI verzi. Tady jsem si ověřil, jak krásně se programuje, pokud nemusíte přemýšlet nad strukturou celé aplikace. Prostě jen píšete metody. Za necelé tři dny jsem tak měl veškerou logiku aplikace hotovou. Jak se však ukázalo, náš návrh končil přesně pod napojením na GUI, což nám nakonec zabralo nejvíce času (patlali jsme se s tím až do posledních hodin termínu). Jako grafický framework jsme používali Qt 4.7. Bohužel nám k němu nikdo na přednášce ani přehledově nic neřekl, což je škoda. Nicméně na FITu se skrze všechny předměty tiše předpokládá, že se většinu věcí naučíme sami a hlavně že si většinu informací najdeme sami (čest výjimkám).
Termín odevzdání projektu se naštěstí posunul o jeden den. Proč říkám naštěstí? Den předtím jsme totiž už vážně přemýšleli o přesunu všech bodů na jednoho člověka, protože jsme ani za boha nemohli rozjet síťovou hru (data race všude kam se podíváš). Na tomhle místě bych rád opět vyzdvihl mého parťáka, který nakonec dokázal síťovou hru nakonec zprovoznit. Nicméně množství nejrůznějších callbacků a řízení volání funkcí stylem „odnikud nikam, nikdo nikomu“ mi bylo dost proti srsti. Nicméně se on se v tom orientoval a údajně v tom byl i systém. :) Hlavně že to fungovalo. :) Drobnou nepříjemností je, že na opravení projektu musíte čekat až do začátku června. Na druhou stranu, málokdo kdo odevzdal alespoň trochu funkční projekt, zápočet získal (doc. Janoušek prý umožňoval i dodělání projektu po termínu).
Ačkoliv jsem byl „varován“ předem o tom, že seminář Javy je organizován lépe, ani na okamžik jsem o svojí volbě nepochyboval. A jaká varování se ke mně dostaly? Například to, že v Javě musíte plnit v průběhu semestru malé úkoly. Že je to spíš nevýhoda? Nikolivěk, neboť vás donutí se věnovat projektu už v průběhu, takže vám na konci semestru nespadne na hlavu hromada nenaprogramovaných řádek kódu. Dostanete i zpětnou odezvu k vašemu návrhu, což je vynikající věc.
Zpětná odezva k projektu je něco, co mi tu citelně chybí. Projekt se sice obhajuje, ale celá obhajoba trvá několik minut, kdy ukážete několik funkcionalit a jde se dál. Doc. Janoušek sice potom projekt ještě kontroluje, ale nedělám si iluze, že zkoumá jeho návrh. (Kdyby to tak bylo, určitě bychom museli odevzdávat i diagram tříd.) Natožpak jestli prochází kód. Je to škoda, ale tenhle nešvar vás bude provází celé studium — nikdo vám neřekne, co jste vlastně udělali špatně (v projektech, na zkouškách je to něco jiného). Kdyby se tohle podařilo zvrátit, určitě by z této školy lezli programátoři na mnohem vyšší úrovni.
Střelba do nohy
Přednášky měl již z IJC známý Dr. Petr „PePe“ Peringer, což byl z jeden důvodů, proč jsem si předmět zapsal. Jeho styl přednášení mi zkrátka vyhovuje. Bohužel tento předmět by si zasloužil tříhodinové přednášky místo dvouhodinovek (narozdíl od většiny ostatních předmětů, které by si naopak zasloužily zkrátit). PePe už najel na novou normu C++11 (která má několik příjemných změn), takže výklad byl vskutku aktuální. Z přednášek jsem si odnesl přesně to, co jsem očekával — znalosti o fungování složitějších konstrukcí v C++. Tohle nemusí vyhovovat každému, ale já jsem jedině rád, když nějakému systému rozumím do hloubky. Právě tyhle znalosti vás totiž odlišují od těch standardních programátorů, kteří pak ani nedokážou zodpovědět jednoduchý dotaz o virtuálních funkcích.
Zdravím skalní příznivce C++
Touto zdravicí nás PePe počastoval při jedné přednášce s nízkou účastí — která se odehrávala v místnosti G202, což je učebna skoro jak ze střední školy. Příjemná změna. Můj závěr je nicméně takovýto: pokud vás C++ baví a chcete se o něm dozvědět něco dalšího od povolaného člověka, je tenhle seminář pro vás. Počítejte však s tím, že k projektu moc informací nedostanete. Jestliže je vám jedno, jaký jazyk si vyberete, běžte do Javy. Uplatnění najdete s každým (byť v odlišném segmentu).
Studentů prospělo: 79,05%