OO programiranje je...

3 min

Ovo će da boli. Upozorenje: ukoliko OOP doživljavate kao dobre, temeljne principe, čitanje ovog članka može izazvati poremećaj sna ili emocija prema meni. Nema na čemu, u oba slučaja.

Razmišljajući tako o algebri, geometriji, lambda kalkulusu i programiranju, sinulo mi je. “Eureka”, uzviknuh i istrčah go iz kancelarije. Shvatio sam šta je OOP. Konačno.

Spremni?

OOP je isto što i Excel.

#micedrop #ovdesmozavrsili #idemkuci #zastosamgo #opaopaopp

OOP == Excel

Evo analogije. U OOP dobijaš klase: mešavinu podataka i funkcija. Bam, sruče ti to u lice, pa ti se snađi! Onda klase budu malo klase sa podacima, pa malo rade nešto na sebi, malo drugima, malo se presipaju, pa malo glume špagete ili su anemnično bolesne.

Excel je isto to: mešavina podataka i funkcija! Bam, otvoriš novi spreadsheet i izvoli, modeliraj. Malo nasleđuješ sa drugih, povezuješ, uvezuješe, pivotiraš.

U oba slučaja je jasan skučeni domet koncepta. To je kao da vam je neko dao (nezgrapan) alat i rekao vam da se snađete. Niko ne kaže kako ga koristiti. O, da, svako ima svoje mišljenje o tome; ali to je i dalje samo… mišljenje. Trla baba lan. Lako je imati mišljenje. OOP ne govori kako se treba koristiti.

Suštinski problem Excela, pardon, OOPa

Spremni?

Lako je pisati funkcije. Teško ih je uvezati.

To je problem koji se rešava, po meni, od 1930-tih. Ako misliš da filozofiram, zapazi koliko se novca zapravo troši na rešavanje uvezivanja; od BPM do pajplajnova u TenserFlow-u.

O čemu dalje razmišljam? Alan Kay. Kao što Tony Hoare žali nastanak null-a, tako i Alan, 30-tak godina kasnije, žali što je osmislio naziv ‘objekat’, jer ono usmerava fokus na pogrešnu stranu. Nastavlja i sa:

OOP to me means only messaging, local retention and protection and hiding of state-process, and extreme late-binding of all things.

Izdvajam početak i kraj ovog citata: slanje poruka i ekstremno kasno uvezivanje. A dok ovo pišem, Java kompajler u pozadini upravo ekstremno rano uvezuje funkcije koje nisu poruke. Supr.

Nek ide sve bestraga

Nije OOP nešto loše, da se razumemo. Isto kao što mogu da se naprave moćne koještarije u Excelu, slično radimo i u OOP, snalazimo se. On je takav kakav je. Problem je što gotovo da ne znamo za bilo šta drugo. Sve postaje OOP problem.

Šta je onda ispravno? Svako od nas je činio različite stvari u OOP koje su rešavale drugačije probleme. Iz ovih raznolikih pristupa razvijaju se dalje principi (Liskov, Demeter, SRP, SLA…) koji sintetizuju ono što je danas OOP. Ali niko od nas ne može da tvrdi da zna kako OOP treba da se koristi. Možda to znanje izvući socijalnom heuristikom? Socijalnom inteligencijom?

Problemu se, izgleda, mora prići s druge strane, koja je jasna, precizna i egzaktna. Programiranje mora da postane nauka.

Da li je to neko rekao “matematika”?

🧧
Nisam definisan svojim stavovima. Stavove usvajamo, menjamo, nadograđujemo, ali oni ne čine nas same. Manje je važno da li se slažemo, koliko da se razumemo.