25 éve vettem a kezembe az első, Basic-ról szóló könyvet, és kezdtem programokat irogatni, papírokra. És kartonpapírból kivágni számítógépeket. COCOM-listás időket írtunk.

Nagyon messze eljutottunk ez alatt az idő alatt. A ma általunk használt technológiákat, metodológiákat el sem lehetett képzelni akkor. Akkor még örültünk, ha a rendszeren, amin programoztunk, volt RENUMBER parancs, mert megkönnyítette az életünket, hogy arrébb tudtunk tenni egy kódrészt (az alternatíva az volt, hogy átugrattuk GOTO-val, ha “belenőtt” az előtte lévő kód). Azután jöttek a vizuálisabb szövegszerkesztők, és már nem kellett sorszámoznunk a programsorainkat. Nem sokkal ezután a GOTO-t kollektívan tisztátalannak nyilvánítottuk.

De nem azért kezdtem el írni ezt a bejegyzést, mert úgy akarok hangzani, mint nagyapó, akinek a gyerekkorában még a szivárvány is fekete-fehérben jött. Csak arra akartam rámutatni, hogy mindíg megunkévá tettük azokat a lehetőségeket az egyre újabb technológiákban, amik megkönnyítették az életünket, még akkor is, ha ez esetleg régebbi reflexek újragondolásával, feladásával járt. Feladtunk egy kis jót egy nagyobb jóért.

A szívemben én mindíg C programozó maradtam. Kernighan és Ritchie. i++ és ++i. Kisbetű, rövid kifejező változónevek, csillagcsillag. Ez persze nem jelenti azt, hogy ma bármit is C-ben írnék, vagy úgy érezném, hogy C-ben kellene írni, sokkal inkább jelenti a filozófiát, amit nekem a C képviselt és képvisel ma is: egyszerűség, érhetőség, hatékonyság, szabadság, rugalmasság, letisztultság, könnyedség, harmónia, és egy jó standard library.

A C++-ban azt utáltam, hogy csomó mindent kétszer kellett leírni. Tudjátok mire gondolok? Header file-ok és kód file-ok. Ha egy új függvényt akarsz írni egy osztályhoz, ugyanazt a sort be kell írnod a .h és a .cpp file-okba is, hogy ne legyen fordításkor hiba, mivel a C++ nem ismeri a reflection fogalmát, tehát nem tudja egy objektumról kideríteni, hogy milyen függvényei vannak, milyen paraméterekkel. Ennek persze teljesítményfokozási okai (is) voltak, de akkor is.

És a C++ nem hozott magával egy library-t. Jó, hozott, de milyet. Konkrétan a C library van benne, NEM objektumorientáltan. Van hozzá egy stream kezelő objektumhalmaz, amit szerintem senki sem használt sosem komolyan, mert mindentől eltérő teljesen elkefélt szintaxisa volt (cout << “Hello World”), egy String objektum, meg persze az STL, amiben van például Vector osztály, amire csak azonos típusú objektumokat lehet felfűzni, valamint azok leszármazottait, de mivel nincs reflection, nincs normális módod, hogy megállapítsd, mit is fűztél fel rá, és amúgy is valamivel kényelmetlenebb használni, mint a sima pointer tömböt, amibe legalább azt teszel, amit akarsz (feltéve, hogy amit akarsz, az egy pointer).

Azután jött a Java.

(folytatom)