NeoXon,
Ha jol tudom minden objektumra mutato pointer cimenek feloldasa plusz egy muveletet jelent a procinak. Bar a mostani architekturak direkt fenntartanak erre egy kulon regisztert, viszont ha sok valtozot hasznalsz pl. egy ciklusban, akkor konnyen szuk keresztmetszet lehet a regiszterek szama (6-8 darab van asszem)
Nem muszáj a regiszterekben tartani, lehet az L1 vagy az L2 cache-ben, onnan még mindig nagyságrendekkel gyorsabb hozzáférni, mint ha a memóriához kéne fordulni. Ettől függetlenül persze nem kell mindenhol az OO-t erőltetni, de van, ahol hasznos - sőt, sok helyen hasznos. Ha másért nem, azért mert fejlesztési időt spórolsz vele, aminek súlyos költségvonzatai vannak (ha te vagy a projektmenedzser. Ha a fejlesztő vagy és időre fizetnek, akkor persze nem te jársz jobban
). Vagy mert alapvetően IO-specifikus környezetben dolgozol (pl a web tipikusan ilyen), amikor úgyse a CPU lesz a szűk keresztmetszet.
Még egy példa arra, hogy sokszor akkor is majdnem OO megoldásnál kötsz ki, ha nem használsz OO nyelvet: C-ben egy volt kollegám fejleszt egy
nagyméretű gráfok analíziséhez használható könyvtárat, amibe besegítek. Semmi C++. Az összes függvénynevet és a statikus változókat prefixelni kell egy
igraph_
sztringgel, hogy ne legyen névütközés más könyvtárakkal a linkelésnél. Ezen felül gyakorlatilag minden függvényhívás első paramétere az a gráf objektum, amivel dolgozik a függvény. Ez meg már innentől kezdve majdnem OO+névterezés, csak itt éppen az első paraméterben átadott pointert kell feloldanom, nem az implicit
this
pointert. (Azért írjuk mégis C-ben, mert Python és R programnyelvekbe is beágyazható a library, és oda egyszerűbb C kóddal dolgozni, meg mert így lefordul Minixen is
Volt néhány algoritmus, ami úgy került be az igraph-ba, hogy eredetileg másvalaki írta C++-ban, és csak portoltuk C-re. Nem érezni szignifikáns sebességnövekedést a kétfajta változat között, persze lehet, hogy a C változatot lehetne még gyorsítani pár százalékkal, de ezek sokszor tipikusan olyan hekkelések, amik nem érik meg a belefektetett energiát.
Ettől persze még az eredeti kérdésre (
Nincs ez az OO szemlelet tulhype-olva manapsag?
) a válasz egyértelműen igen. Főleg mióta az OO-szemlélet olyan buzzword lett, amit már minden, programozáshoz nem értő menedzser is ismer