Novi programski jezici na horizontu Istaknuto
Programski jezici doživljavaju renesansu u kojoj možete vidjeti evoluciju na djelu. Prije možda 10-15 godina još se moglo govoriti o karakteristikama pojedinih jezika kako bi se mogli međusobno razlikovati i poznavati njihovu najbolju primjenu. Danas je to malo teže jer svi kupe ideje jedni od drugih. Čak i C++ uz Javu 8 podržava tzv. lambda kalkulus, što je odlika funkcionalnih jezika kao što su Lisp, Haskell, ML i drugi.
Najdalje u preuzimanju dobrih ideja od drugih otišao je Python. Rad s listama i lambdama je već utemeljena praksa u ovom jeziku pa se dobila zanimljiva verzija OO, imperativnog i funkcionalnog jezika koja nalazi primjenu u različitim područjima znanosti, Big Data analizama, ali i za rješavanje trivijalnih stvari u svijetu administracije. Python je s vremenom postao standard.
Funkcionalne jezike izmislili su matematičari jer im je bila potrebna temeljna funkcionalnost kakvu nisu mogli dobiti u drugim jezicima. Primjerice, u jednostavnim jednadžbama kao što je ova:
X = 3
X + Y = 5
X će uvijek biti 3, a Y će uvijek imati vrijednost 2. U imperativnim jezicima kao što su Java, C, C++, Python, Ruby, PHP to se nikad ne može jamčiti. Svaka od ovih varijabli se može promijeniti u svakom taktu procesora. Ovaj fundamentalni problem u imperativnim jezicima se rješava tzv. lockovima kako bi se spriječila nekontrolirana promjena varijabli u programu. Lockovi su pak stvorili još veći problem skalabilnosti. Kad ih program koristi, broj istovremenih korisnika aplikacije postaje vrlo limitiran i izlaz iz ove situacije najčešće se traži kupnjom velike količine hardvera, što dalje poveća cijenu pokretanja cijele aplikacije u produkciji.
Kod funkcionalnih jezika nema dijeljenja memorije i oni posljedično ne pate od velikih problema sa skalabilnošću, koji su rak-rana imperativnih jezika. Onda ne čudi činjenica da je Chef svoj server prije nekoliko godina prebacio s jezika Ruby na Erlang, a Puppet prošle godine slično učinio sa svojim – s Rubyja su prešli na Clojure, nakon što su postigli ogroman uspjeh s projektom PuppetDB.
U toj tradiciji ne nedostaje pravih slučajeva uspješnih projekata gdje su pojedine tvrtke odlučile krenuti svojim putem i napraviti nevjerojatno skalabilne aplikacije u nekom od funkcionalnih jezika. Primjerice, Yahoo! Store bila je prva uspješna shopping cart aplikacija napisana u jeziku Common Lisp.
Evo pregleda nekih funkcionalnih jezika:
1. Clojure
Lisp na JVM-u. Postigao je nevjerojatan uspjeh u svakoj primjeni. Koristi se od analize podataka, statistike do BigData (Storm), web aplikacija, DevOps i integracije raznih sustava za spremanje informacija. Ima veliki potencijal i publiku koja je svakim danom sve brojnija. www.clojure.org
2. Elixir
Može se promatrati kao Ruby koji radi na Erlang VM-u. Tvorac ovog jezika jedan je od core Ruby programera. Relativno novi jezik, koji iza sebe ima već veliku zajednicu i vrlo uspješne komercijalne projekte. Ljudi ga obožavaju zbog sintakse koja ih podsjeća na Ruby, jer očito imaju problema probaviti sam Erlang koji se pak temelji na Prologu, logičkom jeziku koji zahtijeva mnogo dublji angažman da bi se koristio. www.elixir.org
3. Scala
Ovo je možda uz Clojure trenutačno najpopularniji jezik za funkcionalno programiranje. Ipak, mnogima se ne sviđa zbog kombinacije OO, imperativnog i funkcionalnog stila. Težak je za primjenu zbog svojih novih pravila za kombiniranje nasljeđivanja klasa. Ima veliki potencijal jer ga ljudi vole i ima brojnu zajednicu. U njemu je razvijeno dosta projekata, a jedan od najpoznatijih je Spark. www.scala-lang.org
4. Haskell
Rich Hackey, tvorac Clojure-a, je mišljenja da je Haskell prečist, bez sporednih efekata tako prisutnih u imperativnim jezicima. Od komercijalnih jezika Haskell se najviše pribiližuje idealu FP i zbog toga ima najveće barijere sa adaptacijom. Ne možete se smatrati dobrim Haskell programerom ako ne prodjete kroz glavobolju zvanu Category Theory.
www.haskell.org
5.Go
Za kraj, tu je jezik Go. Uz pomoć Kena Thompsona, Google je, čini se, napravio jezik o kojem su C programeri sanjali. U njemu je napisana time-series baza podataka InfluxDB. Radi fenomenalno brzo i nije potrebna nikakva instalacija jer program sadrži sve što mu treba. Treba ga samo preuzeti i pokrenuti.
golang.org
Tekst je preuzet iz časopisa VIDI, broj 227.