2003-10-02

A végtelen asszociáció is arra vezethet, hogy mindenről az jut eszedbe. Legyen az szex, csoki, ocsmányság, főnök, kaja, Isten, whatever. Végtelen asszociáció az is, ha állandóan a szexre gondolsz. Mert mindenről az jut eszedbe, még a szexről is. Sekélyes, de végtelen. Végtelen sorozat az 1, 1, 1, 1, 1, ... is. Csak egyhangú, unalmas, nincs semmi dinamikája, üteme, mintegy imamalom ismételgeti végtelenítve ugyanazt. A világ kezdetén és a vége előtti pillanatban is ugyanaz. Semmi sem változik, semmi sem újul meg. Nincs pergő ritmus, begyorsuló közelítés, vibráló közrefogás. Csak egyhangu monotónia.
Szóval temetitek a C++ -t. Mikor már elérte a work of art szintet. Először volt a sima C, pár generáció által felemelt és mennybe vitt, tökéletesített, K&R (Kernighan & Richie) féle. Nemsokára kiszorított mindenkit a hihetetlen rugalmasságával, spártai szigor nélkül. Olyan lecsupaszított és biztosan álló struktúrákkal, mint pointerjei, típuskonverziói vagy akár a union. A duff's deviceról* nem is beszélve. Ilyen rugalmasságot ki enged meg? Mint egy gótikus katedrális: egyszerű, magasztos, de részleteiben vízköpőnek álcázott ördögök (vagy ördögnek álcázott vízköpők?), rejtett szépségek, sötétben megbújó szörnyek. Aztán jött a C++, Stroustrup bővítése, aki a C-t temetni készülők elől fogta ki a szelet, OOP nyelvvé téve a C-t. És nemcsak azzá, még ki is bővítette olyan kedves kis dolgokkal mint a referenciák, a kissé szigorúbb típuskonverziók, és az inline változódeklarációk. Az OO részben többszörös öröklődés, virtuális ősök, placement new, kivételek, inline függvények. Az ínyenceknek ott vannak az auto pointerek, operator overloading, valamint a templatek [szándékosan írom angolul a terminus technicusokat, az eltések kapják be]. Kissé barokkos, nemde? Ekkor kezdett el burjánzani a nyelv, mindenki mindenféle buta container libraryt írt hozzá, amik kissé megerőszakolták a nyelvet és hihetetlenül nagy és érthetetlen programokat lehetett írni benne. Ez lett volna a rokokó? Sok csipke, színes kis mütyürök, grandiózus babaház cukormázzal leöntve. Undorító. Aztán jött Stepanov és kiűzte a kufárokat a templomból. Egyszerű volt az elve: szükség van a container librarykra, de szükség van az egyszerűségre is. A neoklasszicizmus kora. A formák leegyszerűsödtek, a régi cicomák, az undorító és a nyelvtől idegen formák száműzettek, helyükbe jött az STL. A template libraryk kora. Milyen egyszerű és milyen fennséges is: hagyjuk a fenébe a típusokat. A konténernek mindegy, hogy mit tárol, implementációjának ettől függetlennek kell lennie. És akár másik konténereket is tárolhat, miért is ne? A konténerekkel megvagyunk, node mit érnek ezek műveletek nélkül? Hagyjuk a fenébe az eddig megszokott unalmas szokást: a konténer ne implementáljon olyan műveleteket, amik elvileg függetlenek tőle és redundanciához vezetnek: ezért dobtuk ki a rokokó katyvaszt, ugyebár. Tegyék ezt meg az algoritmusok. Amik konténerek elemeivel végeznek valamit, függetlenül a konténertől és függetlenül az elemek típusától is. Sokan itt adját/adták fel. Pedig a java csak most jön. A pointerek zsenialitását terjeszük ki a konténerekre is. Legyenek ezek az iterátorok, akik a típusokhoz kötöttek, de a konténerekhez is. És az algoritmusok ezekkel operáljanak. És hogy a kép még szebb legyen, lehessenek "sima" pointerek is. Nem csodálatos? Stepanov akkurátus ember. Matematikus. Nem hagyja csak úgy félbe a dolgokat. Meg is csinálták az egészet. És működött. Hihetetlenül rugalmas és átlátható kiegészítés lett belőle. Annyira sikeres lett, hogy be is vették a C++ szabványba. Nem könnyű megérteni. Tiszta elme kell hozzá és a nyelv tökéletes ismerete. A C++ a mennybe jutott, a nyelvek királyaként ünnepelték a megújulása után.
Úgy tűnt semmi sem állhatja útját. Ekkor jött a Java. De ezt már holnap, Joey itt nyivog, hogy menjünk már.
___________________
*: Duff's device: gyakorlatilag a switch és a while nemkonvencionális ötvözése, bővebben a faq.orgon. Mindez '83-ban történt..

No comments: