Gondolatok arról, hogy miért szeretek programozni
avagy mi a hasonlóság a következő emberek között: programozó, kutyatartó, autóvezető, pilóta, katonatiszt
Soós Sándor
okleveles programtervező matematikus
A gimnáziumi évek alatt ismerkedtem meg a számítógépekkel és a programozással. Akkoriban még a BASIC nyelvet tekintettük programozásnak, azóta ezt másképp gondolom, de erről majd egy másik alkalommal.
Azóta nagyon szeretek programozni, de soha nem gondolkoztam el arról, hogy ennek mi lehet az oka. Persze általában nem gondolkozunk azon, hogy valamit vagy valakit miért szeretünk, de most eszembe jutott valami, ami azt hiszem megmagyarázza, hogy az emberek (legalábbis én) miért szeretik a számítógépeket és azon belül a programozást. Ugyanakkor érdekes párhuzamot vélek felfedezni a kutyatartás, az autó-, vagy repülőgép-vezetés a katonatisztek élete, és a programozás között. Biztos vagyok benne, hogy első olvasásra nagyon furcsának tűnik a dolog, de azt hiszem a cikk végére világos lesz, hogy mire gondolok. Ha egyetértesz velem, vagy éppen ellenvéleményed van, szívesen elolvasnám a gondolataidat, ha megírod nekem e-mail-ben!
Azt hiszem, nagyon sok ember átéli azt az érzést (valószínűleg mindenki), hogy valamit szeretne elmondani valakinek, de a másik fél nem érti meg, vagy nem pontosan érti meg azt amit gondol. Ennek minősített esete, amikor nem csak el akarunk valamit mondani, hanem valamit meg kell értetnünk, vagy meg kell csináltatnunk valaki mással. Ilyenkor még súlyosabb következményei lehetnek annak, ha nem értjük egymást pontosan. Ha az ember gyakran kerül ilyen helyzetbe, például a munkája során beosztottaival, vagy feletteseivel kell kommunikálnia, akkor ez állandóan kellemetlen helyzetet, esetleg konfliktust okozhat. Ilyenkor nagyon hasznos megvizsgálni, hogy ennek mi lehet az oka. Először természetesen arra gondolunk, hogy bennünk lehet a hiba, nem tudjuk pontosan kifejezni a gondolatainkat. Ezen lehet javítani, megfontoltabban fogalmazunk, a fontos dolgokat írásba foglaljuk, stb. Sokkal nehezebb a helyzet, ha a hiba nem bennünk van, amikor olyan emberekkel kell kapcsolatot teremtenünk, akik a mienktől nagyon eltérő nyelvet beszélnek. A nyelvet itt most egészen tág értelemben használom, beleértem a tárgyaló felek teljes világlátását, életszemléletét is. Gyakori jelenség, hogy a másik fél pontosan érti, amit mondunk, de nem akarja megérteni. Most ezt az esetet is beleértem az "eltérő nyelv" fogalmába.
"Nos, pontosan ez az a konfliktus helyzet, ami teljes mértékben hiányzik a számítógépek világában. Amikor a számítógéppel kommunikálunk, akkor szó sem lehet vitáról. A számítógép mindig pontosan megérti, amit 'mondunk' neki, és kérésünkre végre is hajtja azt."
Persze az lehet, hogy ez nem azonos azzal, amit szerettünk volna, de akkor pontosan tudhatjuk, hogy mi nem fogalmaztunk pontosan, ezért csinált mást a számítógép, mint amit kigondoltunk. Azt hiszem, ezért szeretnek az emberek számítógéppel kommunikálni.
Szinte látom magam előtt, amint azt mondja az olvasó, hogy ez nem így van, mert sok esetben hiába mondom meg a számítógépnek egészen pontosan amit szeretnék, az mégis egészen mást csinál. Ez csak részben igaz, mert a számítógép ilyenkor is pontosan azt csinálja, amit neki csinálnia kell, ha az általunk adott parancsot kapja. Az persze előfordulhat, hogy a számítógépben futó program nem úgy értelmezi az általunk adott utasításokat, ahogyan szeretnénk. Ennek két oka lehet: vagy mi nem értelmezzük pontosan a kommunikáció szabályait, magyarul nem helyesen használjuk a programot, vagy mi mindent jól csinálunk, de a programban, vagy esetleg a hardverben van hiba. Ezeket persze emberek alkották, és ők követték/követtük el a hibát, így visszajutunk a bevezetőben említett esethez, két ember érti félre egymást.
Nézzük mi a helyzet a programozók esetében! Természetesen a programozó maga is felhasználója a számítógépnek, így igazak rá az előbb elmondottak, de amikor programot ír, akkor ennél is jobb helyzetbe kerül a bevezetőben említett probléma tekintetében. Ugyanis amikor programot írunk akkor sokkal mélyebb kapcsolatba kerülünk a számítógéppel, mint egy egyszerű felhasználó. Ez a kapcsolat annál mélyebb, minél alacsonyabb szintű programnyelvet használunk. Annál kevesebb közbülső réteg választ el minket magától a számítógéptől. A legszorosabb kapcsolatba akkor kerülünk a számítógéppel, ha gépi kódban programozunk. Ilyenkor semmilyen szoftverhiba nem állhat közénk és a számítógép közé. Minden hibáért csak magunkat okolhatjuk, hacsak nem akarjuk a hardverre, vagy a hardver mikrokódjára fogni a hibát, de ezek a hibák igazából a számítógép szerves részei, tehát ezekkel együtt kell elfogadnunk a számítógépet. Persze az más kérdés, hogy akkor ezt illik a tükröznie a dokumentációnak is!
Azt persze nem állítom, hogy a gépi kódú programozás a legtöbb boldogságot okozó programozási mód (tisztelet a kivételnek), hiszen a programozók nem számítógépek, így semmi nem indokolja, hogy ugyanaz legyen a kedvenc kommunikációs formájuk, mint egy számítógépnek, de az kétségtelen, hogy ez jelenti a legközvetlenebb kommunikációt a számítógép és az ember között. Nem véletlen, hogy egy makacs programhiba okának megkeresésekor sokat segíthet egy jó debugger, ami nem csak a forráskód szintjén, hanem a processzor regiszterei szintjén is lehetővé teszi a nyomkövetést. Szerencsére a mai korszerű programozási környezetek is visszatértek ehhez a funkcióhoz még a mindent elrejteni igyekvő Windows világában is.
Az igazán hatékony és sok örömöt rejtő programozást akkor érjük el, ha találunk egy olyan közös nyelvet, amit a számítógép is megért lehetőleg hibátlanul (értsd hibátlan és jól dokumentált a fordítóprogram), és mi is jól ki tudjuk fejezni magunkat benne. Hogy kinek melyik ez a nyelv, arról itt nem nyitnék vitát, gondoljon mindenki a neki legkedvesebbre. Persze az a legjobb, ha több ilyen nyelvünk is van, és mindig az adott feladat ismeretében választunk közülük.
És most érkeztünk vissza a cikk kiindulópontjához. Ha a programozó megtalálta ezt a közös nyelvet, akkor biztos lehet benne, hogy a partnere pontosan azt fogja érteni az általa elmondottakon, amit ő gondolt erről, és ennek megfelelően fog cselekedni. Ebben az értelemben talált egy olyan "társat", akiben biztosan nem fog csalódni. Ehhez társul a "közösen" végzett munka öröme és az elkészült végtermék sikere.
Ebben látom a párhuzamot a bevezetőben említett csoportokkal. A kutyatartó az eb betanításával tesz szert egy hű társra, az autóvezető és a pilóta a járművének alapos megismerése és a rendszeres karbantartás révén éri el azt, hogy pontosan az történjen az úton vagy a levegőben, amit ő szeretne. A katonatiszt a szigorú katonai szabályrendszer segítségével jut el oda, hogy akár sok száz, vagy ezer ember hajtsa végre hajszál pontosan a gondolatait.
Természetesen bármelyik foglalkozás esetében akkor lesz igazán boldog az ember, ha az emberek között is megtalálja azokat a társakat, akikkel jól meg tudja értetni magát, és mindig meg tudja érteni őket!