Ukoliko volite ovaj jezik i voljeli bi da vam kod izgleda ozbiljnije, svakako probajte primjeniti ove savjete. Najbolje od svega, na dobrom ste putu da pocnete razumjeti jezike koje koriste ozbiljna djeca: haskell, clojure ili ML. Ah da, Stop writing classes.
list comprehensions su jedina stvar koja je u pythonu ljepsa od rubyja
sto se tice funkcionalnog programiranja - jednostavno mi je zao sto nije popularnije i sto su ovi dosadni objektno orijentisani jezici mainstream
Tesko da ovo mozes uraditi sa list comprehensions, sem nekih jednostavnih iteracija, a da zadrzis njihovu primarnu namjenu: da ucine iteracije malo citljivijim.
Pocinje se popularizirati. Ipak FP zahtijeva poprilican mentalni shift pogotovo sto smo nauceni da razmisljamo kao hardver. Npr. ova prezentacija pokazuje da ako stanje pocnemo posmatrati s vremenskog stanovista, standardni pristup bas i nema previse smisla.
[quote=Sanel]
Pocinje se popularizirati. Ipak FP zahtijeva poprilican mentalni shift pogotovo sto smo nauceni da razmisljamo kao hardver. Npr. ova prezentacija pokazuje da ako stanje pocnemo posmatrati s vremenskog stanovista, standardni pristup bas i nema previse smisla.[/quote]
Da ā¦ mozda ce nasa djeca u starijim danima programirati u funkcionalnim programskim jezicima ali dok ova ogromna java / c# infrastruktura ne ostari i dok njeni proponenti ne izumru proci ce jedno 2-3 generacije
Tad cu nadam se ako ne mrtav, biti sretno penzionisan
Ja sam ucio FP na tezi nacin (Haskell). Mozda nije najjasnije. Predmet na faksu, slab asistent i onda zelja da se samo polozi ispit. Sve o cemu pisete sam cuo ali pola ne znam ni sta je. Mozda sada obnovim to sto sam nekad ākaoā znao, ako mi neko navede bar jedan razlog za ucenje istog. Kad kazem razlog mislim da mi nekad to moze koristiti u zivotu.
Hehehe, vjerujem da cisti funkcionalni jezici nikada nece zamijeniti ove jezike za siroke narodne mase; to bi ti bilo kao da ferrari ili bentley zamijene golfa ili focusa Mada mislim da ce se adaptirati u postojece, kao npr. Scala ili uvodjenje lambdi u C#/C++.
Haskell je kao Tai Chi: mozda ga nikada neces koristiti da nekoga razbijes (mada nije lose znati), ali je dobro za zdravlje. Salu na stranu, Haskell (kao i ostali FP jezici) uveliko uticu na to kako razmisljas, pises kod i generalno pristupas rjesavanju problema; na kraju uvijek mozes funkcionalno pisati u skoro svakom jeziku.
Evo slucaj koji sam nedavno imao: trebalo je klijentu isporuciti neki python program koji je radio neke netrivijalne stvari, u biti radio sve ono sto jedna baza radi, ali sa izricitim zahtjevima da se ne koristi baza zbog nekih legacy skripti. Za promjenu, probao sam da koristim FP sto je vise moguce; malo mi je vise vremena trebalo ali zato sam dobio sljedece:
puno kraci kod a kraci kod znaci manje bugova; nema klasa i slicnih gluposti; ciste funkcije koje rade samo jednu stvar; skoro sve petlje zamijenje sa map, apply, reduce, a manje petlji znaci manje bugova
besplatno testiranje: pokrenem python shell i testiram funkciju koju zelim bez da sada pisem testove i te zavrzlame; samom programu je inace trebalo poprilicno vremena da zavrsi dati posao
besplatni paralelizam: map = pmap i to je to
Nakon isporuke, kao i svaki klijent, doslo je masa dodatnih zahtjeva koji su bili izvan datog plana; da je kod bio napisan klasicnim OO pristupom, vjerovatno bi to prepisao 2-3 puta. Ovako, dodam novu funkciju, tu funkciju dodam u glavni dio koda i to je to. Interesantno je da je na kraju taj dio izgledao ovako:
Mene je shvatanje funkcionalne paradigme pomjerilo dosta naprijed. UpoÄetku nisam nikako mogao skuhati kako se to može programirati bez side effectsā¦ Sve mi se vrtilo oko promjenjivih.
A onda malo, pomaloā¦
SviÄa mi se ovo Å”to je Sanel poredio FP sa taichi - jem. Funkcije su kao dobri duhovi jezika - nekako ih ne primjeÄujeÅ” na prvu jer su nenametljive ( ako se ne radi o Äisto funkcionalnom jeziku .
Ima odliÄan (kultni ) post koji poredi objektne i funkcionalne svjetove na simpatiÄan naÄin: http://steve-yegge.blogspot.com/2006/03/execution-in-kingdom-of-nouns.html
E sad, Äisto funkcionalni jezik i nije baÅ” praktiÄan jer se neÅ”to mora deÅ”avati osim pukog vraÄanja rezultata. Ali kad funkcija vrati objekat, onda nastane igranka.