Pre nešto više od pet godina sa nekoliko drugara otvorio sam školu računara i oo tada se vikendom u njoj drže kursevi programiranja namenjeni deci koja idu u osnovnu i srednju školu. Uče razne stvari, između ostalih i C#, algoritme, windows aplikacije …
I klinci postižu lepe rezultate kako na domaćim tako i međunarodnim takmičenjima (Imagine Cup). I to je cool, reći ćete vi. Ali šta je poenta?
Pa poenta je što je programiranje valjda jedina inžinjerska profesija koju i deca donekle mogu da razumeju. Mogu da razumeju nisam rekao mogu da profesionalno rade
. Npr kao kontrast ne mogu da razumeju kako mama ili tata projektuju električne ili mašinske instalacije, proračunavaju konstrukciju … I da naravno programiranje je zabavno
, i da vidiš odma rezultat svoga rada 
i možeš to odma nekom da prodaš
ili pokloniš 
.
Onda tu dolazimo i do onog poslovičnog klinca iz komšiluka koga svi angažuju za male pare (na mesto pravih profesionalaca) i koji tu stalno pravi neke probleme
. Ja kao građevinski inžinjer i moj drugar (porodica takoreći
) antropolog smo karakteristični, značči karakterističčni, primer toga
(off the record moj drugar antropolog dobija velike pare
). Ljudi, realno, imperativno programiranje, pa čak i na objektima bazirano nije computer science.
Ali programiranje postaje computer science. Čak i u mainstream jezik poput C#-a uvedeni su kompleksni featuri, a dalji razvoj predstoji.
Na velika vrata ulazi F#, funkcionalni programski jezik sa izuzetno moćnim type inference mehanizmom, funkcijama kao objektima prvog reda, komponovanjem funkcija konceptima poput computation expressions, function currying, forward pipe operators, pattern matching (switch statement on (a lot of) steroids)…
Ono što napred nije pomenuto je (almost) imutable state. No funkcionalni programski jezici su tu od praistorije računarstva, nastali uporedo sa imperativnim te je logično zapitati se šta je sad tu odjednom tako važno što IT industrija u poslednjih 50 godina nije primetila? Imutable state u kombinaciji sa deklarativnom prirodom jezika (pomislite samo na SQL) sa sobom nosi potencijal automatske ili približno automatske paralelizacije koda od strane kompajlera, što je danas, kada svaki novi PC ima procesor sa minimum dva jezgra, poprilično važno.
F# ima snažan community i na F# forumu su dosta jake teme. To ni malo ne čudi obzirom da je funkcionalno programiranje kao paradigma dugo i puno prisutno u akademskoj zajednici, a da F# nudi pored featura jezika izuzetne performanse kao i korišćenje svih .NET biblioteka klasa.
Na temu F# vodio sam jednu chalk & talk sesiju na msforge user grupi. Održao sam i predavanje na PMF-u gde sam prezentovao funkcionalne aspekte ovog jezika (ops zaboravih da kažem da F# sadrži i imperativne kao i objektne koncepte
). Ovde možete naći primere i slajdove.
do čitanja,
ZBL