Melyik szakon végeztél?

Sokan meg szoktak rajta rökönyödni: villamosmérnökként végeztem. De én valahogy mindig a határterületen lavírozgattam. Még mielőtt a BME-re jöttem, folyton azon gondolkodtam, hogy villamosmérnök vagy informatikus legyek, végül aztán az előbbi mellett döntöttem.

Tanultál külföldön is?

Külföldön nem tanultam, igazából kár is, hogy kihagytam.

Melyik szakirányon végeztél?

Az ötéves képzésen még két szakirány volt, a főszakirányom az EET-s mikroelektronika, a mellék- pedig a műszaki akusztika volt.

Amikor még egyetemista voltál, tartottál már korrepetálást vagy neked volt szükséged rá?

Volt olyan, hogy összeültünk tanulni. De a tanulás nálam inkább egyéni elfoglaltság. Eléggé olvasva tanulós voltam. Este tízkor elkezdtem könyvből tanulni mondjuk éjjel kettőig, aztán aludtam egy nagyot. Nekem ez bevált.

Melyik volt a kedvenc tárgyad?

Akkoriban a Digit, mert azt nagyon kevés tudással is tudtam hasznosítani. Besétáltam az Árwillba (elektronikai szaküzlet – a szerk.), hogy kérek ilyen-olyan kaput, és el tudtam kezdeni például egy digitális órát összeforrasztgatani. A Digit olyan élő dolognak tűnt.

Volt olyan tárgy, ami nem ment? És amiből megbuktál?

A számtudot nem szerettem, mert nekünk villamosmérnökin egy félévbe volt besűrítve. Furcsa volt, hogy például nyilvános kulcsú titkosításokról tanítanak nekünk. Nem értettük, mi közünk van ahhoz villamosmérnökként.

No meg aztán az Akusztikai mérések. Azon először körülbelül egy percet töltöttem a vizsgán. Végigolvastam a feladatsort, aztán beadtam. Minek üljek ott. Már amikor fölszálltam reggel a buszra az egyetemre menet, tudtam, hogy meg fogok bukni, mert nem volt nálam számológép. Akár vissza is fordulhattam volna.

Tehát előfordult, hogy úgy mentél vizsgázni, hogy nem minden tételt tanultál meg?

Nem emlékszem olyanra, hogy kétszer egymás után megbuktam volna valamiből. Másodjára mindenből átmentem. Általában, ha egyszer már egyest kaptam valamiből, akkor utána egy hétig arra tanultam, nehogy másodjára is úgy járjak.

Ki volt a kedvenc tanárod?

Vitéz Andráshoz nagyon szerettem bejárni, nála Informatika 2-t tanultam. Meg nagyon bírtam Orosz Lacit. Igaz, volt olyan, hogy hozzám vágta a krétát, amikor dumáltam az előadáson, de tök érdekes és hasznos órái voltak. A mi egyetemünkön kívülről, nagyon tetszenek még Gerald Sussman előadásai. Ő több híres könyvet is írt, mondhatni ott volt a programozás kitalálásának elején. Van az a „varázslós” könyve, a Structure and Interpretation of Computer Programs, és az ahhoz kapcsolódó előadásokon nagyon tetszik a stílusa.

Mi a legfurcsább dolog, amit egy hallgatótól kaptál?

A jelenlegi egyik demonstrátorunktól, Kővágó Zolitól OHV-ban Brainfuck kódot kaptam, amit utána be kellett gépelnem, hogy láthassam, mit ír ki. „Az előadó egy őrült.”

Mi volt az első nagyobb projekted?

Commodore64-en volt egy Boulder Dash nevű játék, amiben egy hangyával, Rockforddal kellett kövek között szaladgálni, és gyémántokat gyűjteni. Nagyon szerettem azzal játszani. Amikor először lett PC-m, akkor szembesültem vele, hogy nem lehetett normális klónt találni. Mindegyik egy kicsit más volt, más szabályok szerint működött. Máshogy estek a kövek, máshogy mozogtak az ellenségek. Na nem nagyon, de épp annyira, hogy egy gyakorlott játékosnak zavaró legyen. Ekkor már tudtam programozni, és elkészítettem a saját verziómat, amit aztán többször is újraírtam. A mostani változat pontosan ugyanúgy működik, mint az eredeti, még a játék belső fizikája is. Kiegészítettem pályaszerkesztővel, visszajátszási lehetőséggel, videómentéssel, effektekkel. Meg a kiegészítőket is próbáltam minél jobban beleépíteni az én változatomba. Ezt a programomat használják többen is egyébként, van egy fórum, ahol a játékosokkal tudok beszélni.

Milyen nyelven írtad?

Az elején Pascallal próbálkoztam, aztán C-ben folytattam. Jelenleg nagyjából át van írva C++-ba. A tiszta forráskód most nagyjából 50-55 ezer sor, de nagyon változó a kód minősége. Fejlesztés közben az is előfordult, hogy az eredeti játékot fejtettem vissza debuggerben. A gépi kódot kellett megvizsgálnom, mert volt, aminek a működését annyira nem tudtam kísérletezéssel lekövetni, hogy nem volt más megoldás, mint megnézni az eredeti játékot assembly szinten. Van olyan része most is a játéknak, ahol egy az egyben az assembly kód van átültetve C-be, hogy pontosan úgy működjön, mint a régi változat. Ezzel rengeteg időt töltöttem, és nagyon sok olyan kutatómunka van benne, ami által konkrét forráskód, közvetlenül legalábbis, nem keletkezik.

Milyen nyelvekkel foglalkozol még a C mellett?

Igazából a C++-t és a JavaScriptet tudom komolyan venni, mással ritkán foglalkozom.

Milyen nyelvhez írnál compilert?

C-be talán bele mernék kezdeni, C++-ba már nem. Scheme-hez írtam már interpretert, és az végülis egy használható nyelv, nem csak játék, mint a Brainfuck. Az se olyan bonyolult, hogy ijesztő legyen belekezdeni.

Mesélj a programozói agymenéseidről?

Egy időben a Boulder Dash klónommal nagyon sok időt eltöltöttem, most meg inkább kisebb dolgok vannak csak. Például ha van egy nagy házi ötlet, amit találok és kiadnék egy tárgyon, akkor azt megcsinálom. Vagy ha látom a neten, esetleg egy könyvben, hogy bizonyos nyelven csinálnak valamit, akkor kipróbálom, hogy C++-ban meg lehet-e csinálni, és hogyan. Pl. a C#-os property-t nagyon szépen meg lehet csinálni C++-ban is.

Mi volt a legnagyobb szoftverfejlesztési hiba, amit elkövettél eddig?

Szerintem rendszergazdáskodás terén nagyobb hibákat követtem már el. Partíciós tábla lenullázást, meg hasonlókat.

De inkább mesélek egy érdekes hibáról, amit sikerült megtalálnom. A tanszékünknek van egy nagyon híres, saját fejlesztésű áramkörszimulátor programja. Egy projekt kapcsán azt kellett továbbfejlesztenünk. Megkaptam a forráskódot azzal a megjegyzéssel, hogy van benne egy memóriakezelési hiba, ami miatt a legegyszerűbb szimulációk is néha elszállnak, először azt kellene megkeresni. Ez egy olyan bug volt, amire másfél hónap után sikerült csak rálelni. A hibát egy deklarálatlan függvény okozta, amely ráadásul lényegében ki volt iktatva, csak egy „return 0”-ból állt, mert már nem használták semmire. Deklaráció híján nem tudta a fordító a hívás helyén, hogyan kell átvenni tőle a visszatérési értéket, így hibás gépi kódot generált. A hibajelenséget a forráskód szintjén nem is lehetett már megérteni, csak a generált assembly kódot vizsgálva, meg a processzor regisztereit a nyomkövetőben. Maga a program egyébként viszonylag régen készült, nem is a szabványosított C-ben, emiatt dőlt a fordítóból a warning, ezért is siklottam el a deklarálatlan függvényt jelző hibaüzenet fölött is.

Milyen cégeknél dolgoztál?

Mondhatni semmilyennél, mert rögtön egyenesben maradtam az egyetemen, mint doktorandusz, és már akkor oktató lettem, először fél- majd teljes állásban. Máshol sosem voltam főállásban, persze egyetem alatt itt-ott dolgozgattam. Kisebb áramköröket csináltam, például kaputelefont. Most meg webfejlesztéssel foglalkozom.

Mit tanácsolsz, milyen területtel érdemes foglalkozni az egyetem alatt és után?

Erre adok egy kitérő választ. Szerintem nem kifejezetten arra kéne rámenni, hogy egy konkrét technológiát kitanuljon az ember. Mivel gyorsan változik minden, az a fontos, hogy aki érdeklődik a szakma iránt, ne veszítse el az érdeklődését. Hajlandó legyen új dolgokat megtanulni, vegye a fáradságot és egy-két hét munkát, és tanuljon bele abba, amibe kell. Az InfoC megírása előtt kezdő PHP-s voltam, a JavaScript-hez pedig egyáltalán nem értettem.

„Czirkos cica haj, hová lett a vaj?” Mesélnél ennek a történetéről?

Egyszer kaptam Facebook-on egy ilyen üzenetet. Amit igazából nem is tudom, mennyivel később találtam meg, mert olyan küldte, akit nem volt ismerősöm. Így bekerült az „Other” mappába, amiről nem érkezett értesítés. Nem is válaszoltam rá, mert igazából idiótaságnak tartom. Eltelt pár hét, és láttam BMEme-n, hogy ő továbbra is viccesnek tartja a dolgot. Vagy lehet, hogy ő is akkor találta meg ezt az üzenetet, mert ő se tudott róla, hogy ezt írta. A saját nevét persze cenzúrázta. Azt értem, hogy az én nevem nem lehet kikockázni, mert akkor elveszik a poén lényege – de azért mégis. Szoktam érteni a viccet, de ez annyira nem tetszett.

Darth Vadernek vagy Luke Skywalkernek drukkoltál?

Egyiknek sem, mert tudtam, hogy mi fog történni. Amikor kicsik voltunk az öcsémmel, megszereztük videókazettán a klasszikus részeket, és kb. két héten keresztül, vagy lehet, hogy még több ideig, minden nap megnéztük mind a három részt. Reggel felkeltünk, reggeli, aztán jött az Új remény, Birodalom visszavág. Aztán ebéd, mert akkorra lett dél, végül délután még megnéztük a hatodikat, a befejező részt. Ezt így két héten keresztül. Akárhányszor tetszett egyébként, de nem annyira voltak már benne meglepetések a végére.

Most is csináltok ilyen napot, hogy felkeltek és ezzel indítotok?

Nem, most már nem szoktunk ilyet csinálni, pedig biztos vicces lenne.

Más filmmel is csináltatok maratont?

Nem, ez volt az egyetlen, amit tényleg olyan mennyiségben néztünk, hogy két héten keresztül ezt csináljuk. Amit még nagyon sokszor láttam, az a Vissza a jövőbe trilógia. Azt is akárhányszor meg lehet nézni, de ott se drukkolok se Marty-nak, se a dokinak.

Akkor ez a kettő a kedvenc filmsorozatod?

Igen, ezt a kettőt nagyon szeretem, de ilyen filmeket még tudnék mondani. Moszkva tér, Garden State.

Qpáztál már?

Hallgatóként nem, de oktatóként igen. Például a tanári sörcsapra hívtak múltkor, de Qpa csapatban nem voltam. Nekem jobban is tetszik a sörcsap, mint a feladatok, mert ezt érdekes dolognak tartom, hogy az ember ül valahol „fogadósként”. A sörcsapnál ez ugyanúgy megvan, mint a teázóban, ahol dolgoztam. Jönnek az emberek maguktól, és akkor lehet velük foglalkozni, sört csapolni nekik.

Mit csináltál a teázóban, pincérkedtél?

Igen, olyasmi. Qpán kellene ilyet csinálni, hogy az ember leül teázni és beszélgetni. Vicces lenne, hogy ott ülök egy szobában egész nap, és én nem megyek sehova, de az emberek jönnek-mennek. Ez nekem nagyon tetszik. Majd egyszer kellene nyitni valami teázó-palacsintázó helyet is.

Hogy kerültél a teázóba?

A volt gimimtől ötven méterre nyílt egy teázó, ahova a nyitás másnapján betévedtünk, mert megláttuk, hogy ott van valami újdonság. Ott léptem elő, ahogy az ottaniak mondták, legszemtelenebb vendégből alkalmazottá.

Mi a kedvenc ételed?

Olasz és indiai. Amikor kicsi voltam, nagyon szerettem a sajtos tésztát. Csak tészta meg reszelt sajt. Ez olyan volt, mint a Star Wars-os maraton, mondtam, hogy én ebből bármennyit tudnék enni. Fogadást kötöttünk anyámmal, hogy meddig bírom, meg fogom-e unni, és nyertem, mert kb. egy hét után után ő mondta, hogy már valami mást ad nekem enni, nehogy bajom legyen tőle, hogy csak azt eszem.

Miért döntöttél a vegetáriánus életmód mellett?

Úgy öt-hat éve ráuntam a húsevésre. Volt egy időszak, amikor egyre kevesebbet húst ettem, mert sok más vega kaját kipróbáltam, főként indiait. Ha nem eszel egy hétig húst, majd leraknak eléd egy jó zsíros pörköltet, akkor azt mondod, hogy kösz, nem. Minél kevesebb húst eszel, annál kevésbé akarsz utána azt enni. Egyszerűen elkezded és úgy maradsz. Van, hogy nehéz ügy, mert sokszor éttermekben mirelit rántott karfiolon és gombán kívül nincsen semmi vega étel az étlapon.

Szeretsz főzni?

Amikor Amerikában voltunk, akkor sokat főztem, de alapvetően otthon nem nagyon. Ritkán szoktam, de szeretek. Mindent szívesen megcsinálok.

Mit csináltál az USA-ban?

Háztartásbeli voltam. A barátnőm a Morgan Stanley-nél dolgozik, és ott van egy gyakornoki program. Aki szeretne ott maradni náluk nem csak gyakornoki állásban, annak el kell végeznie egy tanfolyamot, ami tizenöt hét hosszú. Az első fele New Yorkban van, a második pedig Londonban. Amikor ő úgy döntött, hogy menni akar, ezt úgy oldottuk meg, hogy én is mentem vele, mert a szállodai szoba ki volt fizetve.

Úgy alakult, hogy egész idő alatt New Yorkban voltunk. Ő járt az órákra, ami kb. egy teljes állásnak, vagy inkább még többnek megfelelő idő volt, mert naponta kilenc-tíz órát ültek előadáson, vagy projektmunkákat kellett csinálniuk. Én meg jártam bevásárolni, főztem, mostam. Akkor írtam a C++11 tárgy jegyzeteinek nagy részét, és megcsináltam azt is, hogy az InfoC portál több tárgyat tudjon kezelni. Ez tavaly tavasszal volt.

Pompák

Pompák

Van háziállatod?

Nincs, csak rózsaszín párducaim vannak.

Hány darab?

Ne írjuk le. Na jó, kb. 80 vagy 100, nagyon sok. Gyűjtöm őket. Hint: vizsgákon plusz pont.

Fun facts

Gumicukor vagy csoki? Csoki
Ét, fehér vagy tej? Bármilyen
Sós vagy édes karamella? Édes
Kedvenc édesség? Diós dolgok
Inkább küzdenél meg 1 lóméretű kacsával vagy 100 kacsaméretű lóval? Sárkánnyal VR sisakban már megküzdöttem többször is.
Kedvenc játékok? Boulder Dash, UFO: Enemy Unknown (OpenXCOM)
Kedvenc mesehős? Pink Panther
Kedvenc oprendszer? Linux Mint, OpenBSD
Kedvenc sorozatok? Scrubs, CSI, Big Bang
Kedvenc tea? Pu er
Miért te vagy a C++ sensei? Azért igyekszem képben lenni.
Mikortól hívhatunk jogilag Dr. Czirkos Zoltánnak? 2012 nyara óta.
Milyen fantasy/sci-fi univerzumban élnél a legszívesebben? Asimov robotvilága
Mire gondolsz először, amikor azt hallod, hogy dinamikusan foglalt függvénypointer tömb? Deklarálj függvényt, ami ilyennel tér vissza!
Terjednek rólad rémhírek? Mert egyelőre csak csupa jót hallani. nemmer egy angyal w0k

Ez az interjú eredetileg az Impulzus Blogon jelent meg, melyet itt tekinthetsz meg. Az első részt elolvashatod az A rekurzió kedvéért c. cikkben.

Fotók – Gál Efraim