Specializacija proti posplošitvi

Računalničarji običajno zelo radi specializirajo tipe podatkov, medtem ko matematiki pogosto uporabijo nasproten pristop in posplošijo vse. Kaj mislimo s tem?

Če prosite matematike, naj rešijo problem, ki vključuje dneve v tednu, dneve v stoletju, igralne karte, čas ali domine, bo najverjetnejši odgovor, da bodo opazovali te objekte in ugotovili, da se jih da predstaviti s števili. Igralne karte, na primer, je mogoče oštevilčiti s številkami od 0 do 51. Dneve v stoletju je mogoče oštevilčiti. Matematiki bodo rekli: »Te stvari se da oštevilčiti – vsak izmed elementov je lahko edinstveno oštevilčen (in to oštevilčenje lahko obrnemo ter tako dobimo nazaj izvorni koncept). Torej elemente oštevilčimo in omejimo naše razmišljanje na števila. Na srečo imamo močne tehnike in dobro razumevanje števil in naše abstrakcije – način kako se lotevamo poenostavljanja teh problemov – je, da skušamo prej omenjene probleme zmanjšati na probleme, povezane s števili.«

Računalničarji se problemov običjno lotimo ravno obratno. Trdimo, da obstaja veliko operacij nad števili, ki preprosto niso smiselne za domine ali za dneve v stoletju. Zato pogosto nov specializiran tip podatkov, kot na primer Domine, ker lahko z njim omejimo, nadzorujemo in specializiramo operacije, ki so mogoče. Objektno usmerjeno programiranje je še posebej primerno, saj nam omogoča, da združimo metode in specializirane podatke v nov tip.


Oba pristopa predstavljata močni tehniki reševanja problemov. Pogosto pomaga tudi, da o določenem problemu razmišljamo iz obeh zornih kotov – »Kaj bi se zgodilo, če bi poskusil vse poenostaviti na nekaj osnovnih tipov?«, proti »Kaj bi se zgodilo, če bi za to stvar ustvaril nov tip podatkov?«

Pri vsej stvari je ironično tudi to, da nam včasin težji (ali bolj splošen) problem omogoča lažje programiranje rešitve, saj vsebuje manj posebnih primerov in s tem manj možnosti za napako.