January 1, 2025 - Stanislav Nechutný -
Jsem bakalář z FIT VUT
Po třech letech na této škole jsem úspěšně zakončil bakalářský stupeň a pokračuji na magisterské studium. V posledním semestru jsem již neměl žádné klasické předměty, ale pracoval pouze na bakalářské práci a připravoval se na státnice. Samozřejmě byla spousta volného času, takže jsem trávil hodně času v práci, ale i cestoval. Práci na bakalářské práci jsem věnoval 8-12 hodin týdně a s posudkem oponenta, ani obhajobou nebyl žádný problém.
Téma mé bakalářské práce byl překlad podmnožiny jazyka PHP do C++. Nejedná se o klasický překladač, který by vegeneroval zdrojový kód přeložitený do samostatně spustitelného binárního souboru, ale výsledek je stále silně provázán s interpretrem PHP. Zamýšlený use-case je implementace výpočetně náročné operace v PHP z důvodu jednoduchosti psaní kódu. Následně se provede překlad a vygenerovaný kód je doplněn o potřebné konstrukce, aby ho bylo možné zkompilovat do sdílené knihovny (.so/.dll) a zavést jako rozšíření do PHP - stejně jako třeba mysql, imap, gd… Funkce původně napsaná v PHP je nyní dostupá z interpretovaného kódu jako původní, ale odpadá potřeba provádět lexikální analýzu, parsovat zdrojový kód a interpretovat ho. Místo toho se vykonávají již konkrétní instrukce optimalizované překladačem a použity datové typy získané statickou analýzou.
Během semestru jsem několikrát demonstroval postup v práci svému vedoucímu doktoru Zbyňku Křivkovi, který byl vždy spokojen. Komunikace s ním byla vždy bezproblémová a mohu ho doporučit i dalším studentům, kteří zamýšlejí diplomovou práci z oblasti překladačů. Během semestru jsem se zúčastnil se svou bakalářskou prací také konference Excel@FIT, což popisuji v samostatném článku.
I když jsem na práci dělal průběžně a měl jsem poměrně velký náskok, tak stejně poslední 2-3 týdny před odezvdáním byli kritické. Spousta myšlenek co ještě popsat a času málo. Finální výsledek včetně jazykové korektury jsem měl dokončen 3 dny před finálním odevzdáním. Bohužel jsem jej ve spěchu zapomněl zaslat vedoucímu, což mi také bylo vytknuto v posudku. Druhý den ráno, po dokončení finální verze a elektronickém odevzdání, mi došla velmi zajímavá odpověd na dotazy zaslané jednomu z tvůrců podobného řešení. Byla velká škoda, že se mi informace z této zprávy dostali až takto pozdě a tak jsem alespoň originální znění emailu vložil do práce a aktualizoval elektronickou verzi.
Na státnice jsem se začal učit zhruba měsíc předem. Většinou večer, po práci, 2-3 hodinky s kamarádem jsme vždy prošli 3 okruhy. O víkendu jsem občas vyrazil s tabletem a poznámkami do parku na Kraví hoře, nebo v Lužánkách. Bylo to příjemné učení a okolí ani moc nerozptylovalo. Vypracoval jsem si okruhy, na které se má komise nejspíš bude ptát, ale raději se naučil vše. Jak se ukázalo, tak to nebylo špatné rozhodnutí, protože někteří členové komise, třeba i Křivka, se ptají opravdu i na věci, které byste nečekali - relační databáze apod.
Na sobotu před státnicovým týdnem jsme založili ve studijní fb skupině událost “Příprava na státnice v Lužánkách”, na kterou nakonec přišlo cca 8 lidí. Prošli jsme okruhy, které někomu nebyli jasné a dali znalosti dohromady. Celou neděli jsem věnoval učení.
Má zkouška byla až ve středu, ale v pondělí jem v obleku vyrazil do školy podívat se na zkoušku ostatních studentů. Zašel jsem se podívat na dva lidi a celkem mě to uklidnilo a přestal jsem být tolik vystresovaný. Prvnímu se nepodařlo obhájit bakalářskou práci, ani složit státní závěrečnou zkoušku. Ptal se doktor Křivka na jazyk UML, ale student měl absolutně nulové znalosti. Stále se pokoušel mluvit o ERD které do UML nepatří. Zkoušející se pokoušel po okruhu skákat a nalézt něco, čeho by se student chytil, ale bez šance.
Druhým byl kamarád, který i přes nepříznivé hodnocení E, E úspěšně obhájil bakalářskou práci a složil i závěrečnou zkoušku, kde se ptali na řízení přerušení. Vyrazili jsme to zapít i když bych se měl ještě učit. V úterý jsem se ještě učil a ve středu ráno vyrazil na svou zkoušku.
Na chodbě panovala mezi studenty přátelská nálada. Zkoušeli jsme na základ toho, kdo je cca na řadě s kladením státnicové otázky a jaké byli předchozí odhadovat, jaká bude nyní, ale úspěšnost byla mizivá. Během dve 2-3x vyšel předseda komise a vybral od studentů USB disky s prezentacemi pro obhajobu. S zhruba hodinovým zpožděním oproti plánu jsem se dostak dovnitř i já. Uvnitř již byl spuštěn první slajd mé prezentace pro obhajobu. Představil jsem se a začal popisovat co je předmětem mé bakalářské práce, co jsem řešil, jaká řešení jsem zvolil a proč. Pak už jen podtrhl proč je mé řešení jedinečné. Následovalo čtení posudku oponenta a vedoucího, které bylo pro mě veskrze pozitivní. Pustil jsem se do zodpovězení dotazu oponenta - jednalo se o otázku proč jsem zvolil překlad názvů proměnných místo generování z cesty v stromu identifikátorů a zda by to neřešilo řešený problém s oborem platnosti proměnných. Odpovědí bylo, že složitost kódu by byla zhruba stejná a nepomohlo by to nijak s řešením oboru platnosti, což popisuji již v bakalářské práci. Následně se strhla poměrně zajímavá diskuze s komisí, kterou zajímaly některé detaily a použitá řešení.
Po zodpovězení všech dotazů mě profesor Meduna požádal o opuštění místnosti, aby se mohli poradit o finální známce. Dovolil jsem si ho upozornit, že ještě neproběhla státní zkouška a probíhala pouze diskuze o bakalářské práci. Dostal jsem tedy otázku č. 8 - Minimalizace logických výrazů. Zprvu jsem začal být vystrašený, co jim k tomu vlastně povím… Na papírek s otázkou jsem si pak napsal několik bodů, o kterých zkusím mluvit - termy, algebraická minimalizace, booleova algebra, De Morganovy zákony, Karnaughova mapa, Vennovy diagramy, hazardy. Minuta uběhla velmi rychle a bylo třeba někde začít. Popsal jsem proč chceme provádět minimalizaci a jaká jsou kriteria pro hodnocení minimalizace. Pokračoval jsem algebraickou minimalizací a začal na tabuli vypisovat axiomy a teorémy pro minimalizaci. Popsal jsem jimi půlku tabule a zkoušející se mě zeptal, zda bych mohl minimalizovat a+not(a). To mi hned došlo, že jsem na tento axiom zapomněl, doplnil hned = 1 a připsal a . not(a) = 0. Byl spokojen.
Začal jsem dále mluvit o minimalizaci pomocí Karnaughovy mapy, kdy už vypršel čas. Nad rámec času jsem ještě nakreslil tabulku se 3 vstupy a předvedl jak získat výsledek v disjunktní formě. Na zmínku o hazardech a řešení v tomto postupu už ani nebyl čas. Poděkovali mi a byl jsem znovu požádán o opuštění místnosti. Debata o známkách byla velmi rychlá a byl jsem hned zavolán zpět. Známka z bakalářské práce mi zůstala ta, kterou navrhl oponent. Ze státní závěrečné zkoušky jsem pak dostal A.
Od státnic jsem rovnou zamířil na studijní ukončit bakalářské studium a rovnou se nechat zapsat na magisterské - obor Bezpečnost informačních systémů.