( carlcolt | 2014. 03. 20., cs – 23:19 )

Nekem ez olyan mint az SQL-en kívüli világ DB-knél. A világ programozóinak nagy része az OOP-t és a procedurális programozást érti, ha elkezdesz valamit csinálni, vagy valakivel valamit csináltatni, csak akkor tudod pótolni később az idő- és emberhiányodat, ha aránylag könnyen találsz olyan fejlesztőt, aki érti hogy hogy kell folytatni (márpedig az átlagember számára a legolvashatóbb procedurális kód is kínai).

Másik megközelítésből, ami lazán kapcsolódik azért: egy procedurális vagy egy OOP kód sokkal de sokkal olvashatóbb és könnyebben módosítható mint egy funkcionális. Mit csinálsz, ha neki kell állnod debuggolni, és tele kell nyomnod a kódot egy rövid időre echoAndExit()-ekkel és logLine()-okkal? Vagy hogy tartósabbat mondjak, optimalizálnod és cache-elned kell. Mit kell csinálnod, ha egy funkcionális programozó olyan kódjába futsz, ahol büszke arra, hogy 2 sorban leírta azt, amit procedurálisban 10 lenne, és abba kell beleírnod két furcsa elágazást meg műveletet, amit procedurális nyelven nyilvánvaló, hogy hova kell írnod, de funkcionális nyelvben kb az egészet szét kell hozzá bontani (de előbb meg is kell érteni, ami nagyjából annyit takar, hogy az agyad lebontja valami algoritmikusra és végigjátszik egy folyamatot, jéé, hisz ez pont a procedurális programozás).

Csak hogy egy OOP-beli példát is mondjak. Van egy osztály amiből öröklődik 20 másik, van egy kiirFormazva() nevű függvény, és a 18 (előtte napi tudásunk szerint 20) származtatott osztálynak megfelel a kiirFormazva() függvény ősosztálybeli változata, de a 2 másikban totál újra kell írni. Ez egyik napról a másikra derül ki, és sok másik helyen használod ezen osztályokat és a kiirFormazva() metódusukat. Hogy tervezel meg egy funkcionális programot úgy, hogy hozzá se kelljen nyúlni ilyenkor semmi máshoz, csak a két származtatott osztály kiirFormazva() metódusához (vagy azzal ekvivalens munkát igénylő dologhoz)? Ha hozzányúlsz, hány embert ismersz, aki érteni fogja mit csináltál ott? OOP-nél midnenki aki velem dolgozik, érti hogy ott mi történt.

Ennek ellenére vannak területek, ahol jó (pl. mesterséges intelligencia, absztraktabb számítástudományi és matematikai feladatok (kutatás, ahogy fentebb is írták, "ami jó, az megy majd az OOP és scriptnyelvekbe is")), de ahol sűrűn változó inputok és outputok vannak (==versenyszférában GUI-k), ott mentsen meg tőle az Isten.

Még az egészhez annyit teszek hozzá, hogy sokakkal ellentétben mindigis csapatjátékos voltam kódolásban, minden bonyolultabb sorba kommenteket írok évek után is. Ha regexpről vagy 2 egyszerűbb kifejezésnél bonyolultabb elágazásról vagy ciklusról van szó, példákat írok kommentbe mi megy át és mi nem megy át ott, stb. Sőt, az igazat megvallva remélem, hogy van a pokolban egy speciális bugyor azoknak, akik bonyolult regexpeket írnak a kódjukba komment nélkül.