Programski jezik budućnosti


#1

Oko kojeg ste programskog jezika najviše uzbuđeni i mislite da će biti vrlo bitan i popularan u budućnosti? Čini mi se da je to malo kontroverzna tema u programerskoj zajednici zadnje vrijeme i imamo dosta novih i staro-novih kandidata koji se trenutno natječu za popularnost s “klasičnim” popularnim jezicima (Java, JavaScript, C++, Python, Ruby).

U novom ruhu

JavaScript ES6/7, tj. ECMAScript 2015/2016 iliti JavaScript^2 koji osim modula, klasa i sl. često-traženih mogućnosti, donosi i nekoliko dosta zanimljivih mogućnosti iz asinkronog svijeta kao što su generatori, obećanja (engl. promises) i async/await za vrlo ljudski-razumljiv način pisanja korutina.

Naravno, JavaScript još uvijek pati od nemogućnosti statičnog kompajliranja (još uvijek se veselimo kad u browseru vidimo kakav Doom ili Windows 95 uz uspuhani procesor, što je daleko od “nativnih” mogućnosti) i lagano-prenosivih izvršnih datoteka koje jezici poput Go-a imaju, što navodi neke pojedince na prelazak na druge jezike.

Elixir je novo Ruby-oliko pakiranje Erlanga. Nudi navodno dosta humanu sintaksu poznatu Ruby programerima koja donosi sve lude mogućnosti paralelizacije iz Erlanga. Dobio sam dosta preporuka za ovaj jezik od poznanika, iako je ekosustav još dosta mlad, čini se.

###Statični programski jezici

Tu ima nekoliko zanimljivih kandidata. Jezici koji su napokon donijeli poštene upravitelje paketa (engl. package managers) u svijet statičnih jezika (CMake za C++ nije baš oličenje ugode korištenja). Također, gotovo bez iznimke nude i dobre priče za paralelizaciju i nekakve korutine (gorutine, rorutine? …). Go mi se osobno čini dosta privlačan zbog veličine ekosustava i dobrih primjera praktične primjene. No sintaksa i Go-a i Rusta mi nije baš primamljiva. Imam osjećaj da bi se nakon Pythona, Rubyja, čak i Jave mučio i u osnovnim stvarima.

  • Go – dijete iz Googleovih hodnika, vrlo racionalan razvoj, skroman korak naprijed u odnosu na C što se teoretskih mogućnosti tiče, ali se zato cijela sintaksa navodno može držati u glavi
  • Rust – malo hrabrija alternativa Go-u iz Mozzilinih odaja, ali ne toliko popularna (i Servo, Rustova killer aplikacija “samo što nije gotova” već godinama). Nekoliko utjecajnih Rubysta i Pythonaša je odmah uskočilo u ovaj jezik, tako da već postoje dobre među-jezične integracije.
  • Crystal – naizgled bolja sintaksa, nije baš popularan za sad

###Funkcionalni programski jezici

Filozofski i teoretski jako čisti i skladni, harmonija koda za harmoniju uma itd. Znam ljude koji su oduševljeni njima, čuo sam od ljudi koji rade s npr. Haskellom svakodnevno u većim firmama da zna biti vrlo problematično kada se treba prilagoditi sustavima iz stvarnoga svijeta koji nisu toliko “funkcionalno čisti”. Mene osobno sintaksa malo odbija. Dosta mi je to malo Elispa što moram znati za podesiti Emacs :slight_smile:

  • Clojure – Lisp za JVM, radi čak i na frontendu kao ClojureScript
  • Haskell – jezik izašao iz akademije koji proživljava novu renesansu i ljudi ga počinju koristiti u pravim sustavima

Pobjednik?

Koja su vaša mišljenja o ovim jezicima? Imate li već nekog favorita kojeg izučavate u slobodno vrijeme ili čak koristite na poslu? Sanjarite li o nekom drugom jeziku kojeg nisam ovdje naveo? Može li se uopće predviđati koji će od ovih jezika zaživjeti u budućnosti? Treba li ih naučiti sve ili niti jednog?


Implementacija znanstvenih radova i DeepMind neuralni stog
#2

Uz Javascript ja bih dodao Typescript. Nije da me nešto posebno “uzbuđuje” kao jezik, ali sviđa mi se što

  • ima solidan user-base
  • nekoliko velikih igrača ga je prihvatilo
  • statically-typed
  • kompajlira se u Javascript
  • kompjalirani Javascript je relativno straightforward Javascript i skoro da je 1:1 u odnosu na originalan kod (tako da je lako debugirati konačni javascript i rezonirati u glavi s Typescript kodom kojeg si pisao)

Od preostalih navedenih jezika – Go, naravno :slight_smile:


#3

Da, Typescript je isto zanimljiva opcija.

Koje je sad uopće stanje s konvergencijom Typescripta i JavaScripta ES6/7? Recimo oba jezika imaju klase – jesu li kompatibilne ili su to sad kao dvije odvojene grane? Može li se koristiti Typescript s ES6 async mogućnostima uz nešto tipa babel? To bi onda bile neke .ts Typescript datoteke koje bi se kompajlirale u .js datoteke koje bi Babel onda transpajlirao u ES5 za starije browsere. Zvuči kao neki jako čitki Gulpfile :slight_smile:


#4

Naravno to je Mona :slight_smile:

Jk, to je moj hobi projekt, funkcijski jezik s low-level featureima, recimo kombinacija Rusta i Haskella koliko god to čudno zvučalo.

Mislim da je kombinacija funkcijskog pristupa, statičkih tipova, i mogućnosti low-level kontrole - u smislu da nemamo GC, nego statičke garancije po pitanju memorije i drugih resurasa - smjer u kojem konvergiraju ideje o “dobrim principima” u programiranju. Ideje sad, praksa za koje desetljeće :wink: