Játsszunk programozást!
Az 1980-as években Magyarországon a legtöbben még csak olyan számítógépes játékokat játszottunk, mint a híres Adventure, a grafika nélküli, de nagyon vicces kalandjáték, amiben egy labirintusban kellett összegyűjteni a kincseket rengeteg feladat megoldásával. A feladatok megoldása és a veszélyek elkerülése általában nagyon kézenfekvő volt, de mindig olyan, hogy bármi másra előbb gondoltál volna, mint arra, amit tenni kellett.
Aztán az évtized közepe-vége felé nálunk is megjelentek a PC-k, kezdetben az olyan egyszerű grafikájú játékokkal, mint az 1984-es Tetris, ezek egyáltalán nem voltak viccesek, viszont pörgősek és erősen addiktívek voltak. (Hasonló elvű és sikerű játékok már korábban is voltak, például a Pac-Man vagy a Minesweeper.)
De én nem a játékokról akarok írni. Míg a két játéktípus hívei egymáson röhögtek, addig voltak olyanok, akik mindkét társaságon, mert egyáltalán nem játszottak. Például volt egy ilyen kollégám, egy bizonyos Roderick Johnson, aki azt szokta mondani, hogy a legjobb számítógépes játék a programozás. És tényleg: amikor programozol, akkor egy virtuális térben (a számítógép memóriájában) tervezel virtuális lényeket, meg azt, hogy mit tudnak majd azok egymással csinálni, ugyanakkor a kis elemeket, amiket megírtál, ugyanúgy kell összeilleszteni, mint valami puzzle-ban. Mindez pörgős és izgalmas, lehet próbálgatni a félig kész darabokat, és ha valami nem működik, akkor a bajt ott fogod megtalálni, ahol a legkevésbé számítasz rá. Végül, ha kész vagy, valami érdekeset fogsz látni (hallani) a képernyődön (hangszóródban). Szóval a kalandjátékok és az építős játékok minden eleme megvan a programozásban.
Volt egy pár év, amikor Magyarország (vagy talán az egész világ?) még nem döntötte el, hogy a kis polgáraiból homo informaticusokat akar-e nevelni, akik legalább annyira értik, hogy micsoda egy számítógépes program, mint amennyire a világ egyéb dolgaiban tájékozódni tudnak, vagy pedig olyan analfabéta felhasználókat, mint amilyeneknek például a mai okostelefonok készülnek. Bevallom, én az előbbiben reménykedtem, de az utóbbi vált valóra. Két okból reménykedtem az előbbiben: egyrészt, mert a programozás, mint Rod barátom mondta, a legjobb számítógépes játék, és mindenféle képességet jól fejleszt, másrészt pedig azért, mert akkor talán lett volna esélyünk arra, hogy ne legyünk teljesen kiszolgáltatva a szakképzett informatikusoknak (a „guruknak”), és azok nem gombolhatnának le bármennyit bármiért bárkiről.
Én azóta is mindig keresem az alkalmat arra, hogy legalább néhány fiatalt meggyőzzek erről, és megmutassam nekik a legjobb számítógépes játék nagyszerűségét. Ez lenne ennek a sorozatnak a célja is. Nézzünk körül a számítógép virtuális terében. Nem a hardverben, arról nem lesz szó, hanem ott, ahol mi magunk virtuális lényeket tudunk létrehozni, és ahol ezeket a lényeket rá tudjuk venni, hogy kommunikáljanak egymással és a külvilággal (elsősorban a billentyűzettel vagy az egérrel és a képernyővel), vagyis velünk. Milyenek lehetnek ezek a lények, és mit tudnak csinálni? Milyen programozási nyelveken milyen darabokból tudunk összerakni egy programot, és hogyan?
Donald Knuth, a programozás művészetének királya egyszer azt mondta, hogy a programokat nem a számítógépeknek írjuk, hanem egymásnak. Igaz, hogy amikor egy programot elindítunk, akkor a számítógép elolvassa, feldolgozza, és nagy örömünkre végrehajtja a benne leírtakat, de sohasem jutnánk el eddig az örömteli pillanatig, ha előtte nem mentünk volna végig a fejlesztés mindenféle állomásán, amit legtöbbször nem egyedül végzünk el, de még ha egyedül csináljuk, akkor sem egy szuszra. Sokszor félbehagyjuk, és amikor újra nekiülünk, értenünk kell, hogy mit csináltunk addig. Ezért – bizonyos határok között – sokkal fontosabb a programok áttekinthetősége és érthetősége, mint a hatékonyságuk. A mai világban maguk a számítógépek, amikor a programjainkkal megismerkednek, először is hatékonyabbá teszik őket (ezt úgy hívják,hogy optimalizálják azt, amit beírtunk nekik). Ráadásul a mai hardverviszonyok között a hatékonyság igazából csak azoknál fontos szempont, akik mondjuk egy nagy terhelés mellett dolgozó szerver működését szabályozó rendszerprogramokat írnak. Arra aztán biztosan nincs szükség, hogy egy normális homo informaticus ilyenekkel bajlódjon.
Ebben a szellemben fogunk a következő résztől kezdve megismerkedni néhány olyan eszközzel, amik segítenek kihasználni a számítógép virtuális valóságának végtelen sok lehetőségét.
A szerző nyelvész, az MTA Nyelvtudományi Intézetének főmunkatársa.