Kodiranje stvarnosti
Zanimljiva strana skriptnih jezika
Nedavno sam rješavao jedan relativno jednostavan programski zadatak. Trebalo je složiti hijerarhijsku strukturu prema podacima koji su bili spremljeni u tri kolone u tablici, pri čemu je svaka kolona odgovarala jednom nivou hijerarhije. Isti problem sam već tko zna koliko puta kodirao u raznim jezicima, a ovaj put sam koristio PHP. Problemu sam pristupio kao i obično, a onda me kolega uputio u puno jednostavnije rješenje koje mi nikad ne bi palo na pamet, jer razmišljam previše ne skriptno s obzirom da primarno koristim stronly typed jezike.
Počet ću sa primjerom podataka u tablici i željenom konačnom strukturom.
| column1 | column2 | column3 |
|---|---|---|
| grupa | jedan | x vrijednost |
| grupa | dva | y vrijednost |
Tablica prikazuje primjer podataka, a odmah pored je željena hijerarhijska struktura koju želimo dobiti. Nakon što smo podatke povukli iz baze, željenu transformaciju u PHP-u možemo izvesti u par linija koda.
foreach($rows as $row) { $tree[ $row['column1'] ][ $row['column2'] ] = $row['column3']; }
Strogo gledajući, nismo složili hijerarhijsko stablo, ali smo složili dvodimenzionalno polje u kome je prva dimenzija vrijednost prve kolone, a druga dimenzija je vrijednost druge kolone, što nas vodi do željene vrijednosti. Pokušajte složiti nešto slično u npr. Javi. Siguran sam da ćete potrošiti koju liniju koda više.
Skriptni jezici kao što je PHP ne zahtjevaju eksplicitnu deklaraciju varijabli. Dimenzije polja se mogu dodavati kad god vam zatrebaju isto bez posebnih deklaracija. Varijable nemaju eksplicitne tipove, pa ih možete u bilo kom trenutku prepisati vrijednošću potpuno drugog tipa i upravo zbog takvih sloboda se ovakva transformacija može izvesti u svega par linija koda, ali velika sloboda uvijek dolazi uz visoku cijenu.
Zbog toliko slobode, razvojne okoline teško mogu prepoznati tip podatka koji je trenutno spremljen u nekoj varijabli, pa onda i teško mogu pomoći prikazujući funkcije i metode koje bi se mogle pozvati u slučaju da je varijabla nekakav objekt itd. Sve ima svoju cijenu, pa i sloboda skriptnih jezika. Ipak, zanimljivo je vidjeti šta se sve može izvesti u par linija koda uz slobode skriptnih jezika kao što je u ovom primjeru PHP.
Sada se trudim razmišljati više skriptno kad radim u PHP-u, ali i u drugim skriptnim jezicima : )
| Isprintaj članak | Autor ovog članka je Aco, 27.11.2011 u 9:09 poslijepodne sati, u kategoriji Razne ostale zanimljive teme. Pratite članak uz pomoć RSS 2.0. Možete komentirati ili citirati na vašoj stranici |
prije 2 mjeseci
Dobro je prebaciti se iz jednog programskog jezika u drugi, iako ne nuzno uzeti taj drugi kao “glavni” jezik, nego barem prouciti koncepte i napraviti neke jednostavne projekte.
Staticki jezici kao java i c# imaju svoja ogranicenja, ali ona se svakako mogu i dosta saviti, tako da proucavanje nekog dinamickog (php, javascript, ruby, …) ili funkcijskog (f#, clojure, scala, …) u biti povecava produktivnost i prosiruje znanje onog glavnog, statickog jezika!
Druga bitna cinjenica u ucenju novih programskih jezika je mogucnost drzanja koraka sa razvojnom platformom, i time izbjegavanje “who moved my cheese” stanja.