Sunday, December 28, 2008

Demoliranje kauča

Jutros kad sam se probudio, jedna od prvih stvari koje su mi pale na pamet bilo je demoliranje kauča. Naravno, do toga sam došao razmišljajući o relacionim bazama podataka, a kasnije sam shvatio da je sve to tijesno vezano sa Platonovom filozofijom.
Dakle, stvar je u sljedećem - svi znamo da u programiranju, matematici i raznoraznim drugim životnim sferama mi susrećemo promjenljive i konstante. Jasno, ono što se mijenja su promjenljive, a konstante se ne mijenjaju. Inače, valjda, ne bi ni bile konstante. E sad, u matematici je razlika prilično očigledna - svi znamo da su brojevi 1, 2, 3 i tako dalje konstante, da se promjenljive označavaju raznoraznim slovima i tome slično. Mali trik je što ponekad i konstante mogu da budu označene slovima (npr. slovom a u nekom zadatku označimo nešto što jeste konstanta, ali nas zaboli uvo koja je to tačno konstanta), ali to je otprilike to. S druge strane, zamislimo sad slučaj iz relacionih baza podataka da npr. imamo tabelu sa spiskom svih studenata nekog fakulteta. Šta se dešava kad se neki student ispiše, pa izbrišemo njegovo ime? Sad opet imamo neku tabelu, ovaj put kraću za jedno ime. Ta tabela očigledno nije ona ista tabela od maloprije (jer ima red manje), ali s druge strane očigledno da je to ista tabela jer i ono i ovo je tabela sa spiskom studenata tog konkretnog fakulteta. Dakle, šta se do đavola dešava s tom tabelom? Mijenja li se ona ili ne?
Postoje naravno i mnogo drastičniji primjeri, ali nećemo sad ulaziti u njih da se ne rasplinjavamo. Poenta je da je nekad lako razgraničiti promjenljivu i konstantu, a nekad opet nije. Evo - posmatrajmo promjenljivu x. Neka ona trenutno ima vrijednost 3. I ako nam neko kaže "Ajde promijeni vrijednost promjenljive x u 4", nema nikakvih problema. Ali ako nam neko kaže "Promijeni broj 3", možemo samo da ga pogledamo bijelo i pozovemo kola za ludnicu. Kako možemo da promijenimo broj 3? Ako ga "promijenimo", to onda više nije broj 3 nego nešto sasvim deseto. Neko će reći - "Pa možemo da napišemo broj 3 na papiru, pa ga izbrišemo ili podebljamo ili nešto slično." Da, ali, dozvolićete, zapis broja tri na papiru nije sam broj tri nego upravo što rekosmo - zapis. Švrljanjem po papiru vi mijenjate zapis, a ne sam broj tri, koji zapravo i ne postoji u konkretnom obliku, već samo kao ideja.
Čovjek koji je, bar što se tiče relacionih (a i objektnih) baza podataka riješio sve nedoumice oko ovakvih problemčića je Christopher J. Date, u svojoj monumentalno-briljantnoj knjižurini pod nazivom An Introduction to Database Systems (btw, ako slučajno naletite na nekog naduvanog programera koji se izdaje za stručnjaka za baze podataka, pitajte ga da li je pročitao tu knjigu, a ako nije, slobodno mu se nasmijte prezrivo u lice). Elem, dakle, oću da kažem sljedeće - C. J. Date je odlično opisao i riješio problem u bazama podataka. Tako da nama za ovaj ubogi blog ostaje samo da se pozabavimo promjenljivima i konstantama u stvarnom životu, ali naravno koristeći neke pojmove iz teorije baza podataka (može i pomoću pojmova iz klasičnog programiranja, ali baze podataka su mi bliže pa ću da se držim toga).
Spomenuo sam kako je apsolutno suludo pričati o "mijenjanju" broja 3 i kako on postoji samo kao ideja, dok su sva njegova pojavljivanja na monitoru, na papiru i sl., samo slike tog broja. Ali šta je recimo sa kantom za smeće u vašoj kući? Da li je ta kanta konstanta ili promjenljiva? Sigurno ste u iskušenju da ko iz topa odgovorite "Kanta za smeće u mojoj kuhinji (ako tamo uopšte imam kantu a ne recimo kesu) je nesumnjivo konstanta!". Međutim, javlja se isti problem kao sa tabelom studenata - ako vi sad čekićem razbijete tu kantu u paramparčad, to i dalje ostaje kanta za smeće iz vaše kuhinje, albeit totalno rasturena. S druge strane, vaša malopređašnja predivna neoštećena kanta za smeće sada više ne postoji. Odnosno, ne postoji u fizičkom obliku, ali očigledno da postoji kao ideja. VI znate za tu kantu, VI je se sa sjetom prisjećate (i pitate se što ste li je rasturili samo zato što vam je to neki imbecil naredio na svom idiotskom blogu), dakle - IDEJA te kante postoji.
Sad vam je otprilike jasno gdje nastupa Platon. Njegova nesumnjivo genijalna i revolucionarna tvrdnja o svijetu ideja savršeno objašnjava sva pitanja o tome da li mi u stvarnom životu nalijećemo na promjenljive ili konstante. Zbog teorije o Idejama, Platona smatram najvećim filozofom svih vremena (mada se ne razumijem nešto u filozofiju) i svako ko kritikuje tu teoriju nema apsolutno blagog pojma ni sa čim. Elem, šta bi sa tim svijetom ideja? Pa, to je nešto kao mjesto gdje se nalaze sve moguće konstante - brojevi, kante za smeće, kauči u raznim varijantama, kompletni i demolirani, svi ljudi u svim mogućim formama itd. Sve materijalno što mi srećemo u našem ovozemaljskom životu jesu zapravo promjenljive koje za vrijednosti uzimaju konstante iz svijeta ideja.
Evo kako stvari funkcionišu - zamislite sebe kao osobu. Vi ste u svakom slučaju jedinstveni. Vi imate svoje JA i to JA je različito od onog JA koje imaju drugi ljudi. To je ono što vas jedinstveno određuje i što bi se u bazama podataka nazvalo primarnim ključem. Malo banalnija varijanta je npr. vaš matični broj. Svi ljudi imaju različite matične brojeve i kad znate neki matični broj, postoji tačno jedna osoba na koju se taj broj odnosi. Tj., matični broj bi bio primarni ključ za svijet ljudi. Neki ljudi mogu da imaju isto ime, ali ne i matični broj. Slično, npr. za neke predmete bi njihov serijski broj mogao da bude primarni ključ itd. Naravno, nama nije toliko bitno da precizno navedemo te primarne ključeve - bitno je da znamo da oni postoje. E sad pogledajmo šta se dešava s kaučem u vašoj dnevnoj sobi i šta biva kad vam neko kaže da demolirate kauč. Kauč U Dnevnoj Sobi je promjenljiva. Njegova trenutna vrijednost iz svijeta ideja može da bude npr. zeleni trosjed ili nešto slično. Ako vi demolirate kauč, vi zapravo ne uništavate svoj zeleni trosjed - vi jednostavno umjesto jedne konstante iz svijeta ideja u svoju promjenljivu Kauč U Dnevnoj Sobi uvrštavate drugu konstantu (u ovom slučaju, to je jedna vrlo demolirana konstanta). Prilično utješna misao za sve one koji su nekad nešto slomili, zar ne?
Vi sad možete da budete lukavi, pa da postavite sljedeće pitanje: "A šta ako ja svoj kauč iz dnevne sobe prenesem u spavaću? Da li je to isti kauč?" Odlično pitanje! Odgovor naravno postoji, ali nije ga baš najjednostavnije objasniti. Ako kauč iz dnevne sobe prenesemo u spavaću, tada promjenljiva Kauč U Dnevnoj Sobi ima kao vrijednost specijalnu konstantu (neki bi rekli NULL, ali to ipak nije to) koja označava da tu zapravo nema kauča. S druge strane, promjenljiva Kauč U Spavaćoj Sobi naprasno kao vrijednost dobija onaj kauč koji ste prenijeli iz dnevne sobe. Naravno, ovakav izbor naziva promjenljivih nije baš najsretniji, upravo zbog ovog primjera. Dakle, bolje objašnjenje bi bilo da npr. i kauči, baš kao i ljudi, imaju identitet, da imaju nešto što ih jedinstveno određuje. Možemo npr. da posmatramo kauč sa tim-i-tim serijskim brojem i da imamo promjenljivu Kauč Sa Tim-I-Tim serijskim brojem. Sada lako vidimo da intervencije u smislu promjene lokacije predmeta uopšte ne mijenjaju dotični kauč. Međutim, taj kauč je takođe podložan demoliranju, a to već jeste nešto što ga "mijenja". Odnosno, kako smo prije objasnila, ne mijenja ga, već umjesto njega stavlja drugi, demolirani, kauč.
I konačno - šta je sa ljudima? Iz prethodnog izlaganja je valjda očigledno da ste vi, iako naizgled konstanta, zapravo promjenljiva. Mijenjate se, starite, otpadaju vam zubi i drugi dijelovi tijela. Na kraju, kad odapnete, briše se vaša promjenljiva. S druge strane, rađanje nekog derišta predstavlja uvođenje nove promjenljive, koja će naravno vrijednost da uzima iz skupa mogućih ljudi, koji je podskup skupa Ideja.
Za kraj - jasno je da nema sve iz skupa Ideja fizičku reprezentaciju. Kauči, demolirani ili ne, uglavnom imaju. Ali u svijetu ideja imate i neke superopake ideje kao što su skup svih skupova, brijač koji brije one koji se ne briju sami itd., dakle stvari koje ni teoretski ne mogu da postoje. Eto.

1 comment:

Unknown said...

a da jednostavno u tabelu uvedemo polje deleted(destroyed ili "promjenjiva razlupana u dijelove") i postavimo joj vrijednost deleted=true .isto vazi i za kauc koji je premjesten u drugu sobu...

Related Posts Plugin for WordPress, Blogger...