Back to site
Since 2004, our University project has become the Internet's most widespread web hosting directory. Here we like to talk a lot about web servers, web development, networking and security services. It is, after all, our expertise. To make things better we've launched this science section with the free access to educational resources and important scientific material translated to different languages.

10 programskih jezika vrednih pažnje


Kratko poređenje 10 programskih jezika koji nisu mejnstrim


Autor: Fabio Cevasco

Ako programirate iz zabave ili za profit, šanse su da znate C, C + +, Java, PHP, Perl, Python ili Ruby. Ovi programski jezici su opšte poznati i u različitoj meri korišćeni u komercijalnim aplikacijama. Barem neki od njih mogu se sigurno smatrati mejnstrim, iako je ta reč postala toliko korišćena u pogrešnom smislu da je izgubila originalno značenje, ako je ikada imala.

Ako zarađujete za život programiranjem, obično je jedan od ovih jezika taj koji plaća račune. Međutim, pravi hakeri često naginju ka drugim pravcima, istražujući i otkrivajući različite paradigme i metodologije, ponekad do te krajnosti da ih samo oni razumeju .

„Najočiglednije zajedničke 'lične' karakteristike hakera su visok nivo inteligencije, obuzimajuća radoznalost i nadarednost za intelektualne aprstrakcije. Takođe, većina hakera su "neophiles"(neofili), podstaknuti i zahvalani novinama (naročito intelektualnim novinama). Većina su takođe i relativni individualisti i anti-konformisti“

– Eric S. Raymond, The Jargon File

Čak i ako ste posebno posvećeni jednom od gorepomenutih jezika, normalno je da budete radoznali koji sve jezici još postoje. Kako se kraj godine bliži, ja razmišljam o učenju, ili bar upoznavanju sa nekim manje poznatim, više eksperimentalnim, programskim jezicima. Kao novogodišnju odluku sam prvobitno planirao da naučim neki drugi programski jezik, što je prilično uobičajeno kod programera. Ispostavilo se da je najteži zadatak bio izabrati određeni jezik: kako ih je mnogo, teško je odlučiti se.

Ovaj članak govori o 10 mogućih kandidata, što je daleko manje od potpune liste. Programski jezici opisani u daljem tekstu se dosta razlikuju jedni od drugih, ali svi oni imaju jednu zajedničku stvar: svi oni stimulišu moju radoznalost na svoje, veoma različite, načine.

Haskell


Pokušavao sam da naučim Haskell ranije. Tiho sam počeo da se davim u mnoštvu članaka, uputstvima, sažecima, čak i u knjigama o ovom fascinantnom naučnom jeziku koji se trudi da dostigne funkcionalnu jednostavnost, a da pri tom ostaje izuzetno koristan, praktičan i efikasan. Nažalost, još uvek nisam u mogućnosti da u potpunosti shvatim neke od njegovih najvažnijih pojmova, kao što je monad,ali to još uvek me ne odvlači od želje da naučim taj jezik.

Ako se nikada niste susreli sa Haskell-om ranije, mislim da je Evolucija jednog Haskell programera zabavno i informativno štivo. Iako je sa ciljem da bude duhovit na neki način, vrlo je i važno i poučno: to je jedna od najkompletnijih kolekcija različitih paradigmi i programskih pristupa koje Haskell omogućava.

Pored toga što je veoma elegantan, pragmatičan i ima skoro magičnu sintaksu, ono što me zaista intrigira kod ovog jezika je to šta nudi u smislu mogućnosti: Caka? Vrlo je verovatno da se veoma razlikuje od bilo kog drugog jezika na koji ste možda ranije naišli, i to je verovatno razlog zašto neki ljudi smatraju da se teško uči i savladava. Imajući to u vidu, ako ste u potrazi za izazovnom (ali veoma korisnom, po mom mišljenju) novogodišnjom odlukom, definitivno biste trebali da izaberete ovu.

Da biste počeli ...


Erlang


Erlang je konkurentni programski jezik razvijen od strane Ericsson-a prvobitno za njihove aplikacije u realnom vremenu. Podrazumeva se da sa izrečenim, Erlang deluje kao najprirodniji odgovor na sve konkurentne probleme na koje možete naići u vašem životu programera. Razvijanje softvera sa naglaskom na konkurentnost poseduje osećaj prirodnog i lakog u Erlang-u, a performanse sistema programiranih u Erlang-u mogu biti bez premca.

Nekolicina zanimljivih aplikacija je razvijena na ovom jeziku, kao što su:
  • CouchDB, popularno distribuirana, dokumentovano-orijentisana baza podataka
  • Yaws, web server visokih performansi
  • čak i Facebook Chat
Cena koju plaćaju početnici Erlang-a je kako Damien Kac (tvorac CouchDB i Erlang entuzijasta) ističe:
  • Nezgodna sintaksa, inspirisana Prolog-om
  • Neobični uslovni izrazi
  • Teške operacije sa string-ovima
  • Nema klase ili namespace-ova
... ova lista postaje veća. Damien-ov članak je interesantan za čitanje, dovoljno da udalji bilo koga od učenja ovog jezika, ako ga pročita površno. S druge strane, on poseduje neprocenjivu riznicu za novajlije koji žele da se pripreme pre nego što se krenu u izazov učenja Erlang-a ne bi li izgradili svoju sledeću skalabilnu, istovremeno i industrijski dokazanu aplikaciju.

Da biste počeli ...


Io


Io je relativno novi programski jezik autora Stiva Dekortea koji se nedavno izbavio iz Google-ovog zaborava (ako ste pokušavali da ga tražite na Google-u pre nekoliko meseci, niste mogli ni da pronađete njegovu početnu stranu) zahvaljujući svojoj kratkoj referenci. Nema najbolji naziv za programski jezik, to je sigurno, ali je definitivno novina u pogledu načina na koji radi.

Njegova neobična, minimalistička, ali opet elegantna i moćna sintaksa podseća na Smalltalk, ali ovaj jezik ide mnogo dalje od toga. Io je objektno-orijentisan, zasnovan na prototipima i porukama, i potpuno reflektujući programski jezik. To znači da možete da koristite poruke kao u Smalltalk-u, kreirate objekte kao u JavaScript-u i da se svaki delić vašeg koda može pregledati i prebacivati okolo kako god želite.

Ako mislite da Ruby omogućava ukrasne (i potencijalno prljave) trikove kao što su metaprogramiranje i majmunsko krpljenje, Io to radi na potpuno drugom nivou, praktično bez nametanja ograničenja programeru. Zaista je neverovatno da su njegova gramatika i sintaksa toliko minimalne da ih možete naučiti za bukvalno 10 minuta. Nakon toga, možete da počnete sa eksperimentisanjem, prvo u njegovom izuzetno malom jezgru, a zatim sa njegovim proširenim bibliotekama i vezivanjima.

Io zaista ima dosta potencijala. Doduše, još uvek je mlad i u fazi razvoja, ali i već prilično efikasan i pogodan za realne zadatke koji zahtevaju veliku brzinu i konkurentnost. Realizuje se u C-u, ali Ola Bini je počela da dizajnira sličan jezik koji se zove Ioke za Java Virtual Machine.

Da biste počeli ...

PLT Scheme


Naišao sam na PLT Scheme web sajt u toku pretraživanja za različitim Lisp flavors jezicima pre godinu dana. U to vreme, bio sam odlučan da naučim začetke Lisp-a i počeo sam da čitam nekoliko članaka i knjiga o ovom starom i još uvek popularnom jeziku.
Iako sam prvobitno odbijen određenom Lisp-ovom prostom literaturom, koja odbacuje Scheme skoro kao jeretički pokušaj da revitalizuje jedan drevan, ali poštovani, jezik. Ubrzo sam saznao da je Scheme, PLT Scheme posebno, definitivno vredan pažnje i interesovanja.

Kao ​​tehnički pisac, odmah sam postao naklon PLT Scheme vodiču, jednom od najjasnijih i najbolje organizovanih primera dokumentacije za programski jezik koji sam ikada našao.
Priručnik je izuzetno izrađen kao priručnik o prvim koracima i knjiga referenci u isto vreme, a da pri tom ostaje prijatan za čitanje: retka osobina u tehničkoj dokumentaciji. Najbolje od svega je što je besplatno: jednostavno nemate izgovor da ga ne pročitate.

Pored odlične dokumentacije, PLT Scheme izgleda kao sveže i moderno sprovođenje jednog od dva najvažnija dijalekta Lisp-a. On je višeplatformski, ima obimnu kolekciju paketa i veoma aktivnu zajednicu iza njega.
Posle mog prvog pokušaja da naučim Haskell, osetio sam se primoranim da isprobam PLT Scheme i odmah sam osetio da je mnogo lakši i korisnički prijatniji za učenje, delom zbog DrScheme namenski stvorenom alatu optimizovanim za vaš početak i osećaj prijatnosti u vezi jezika. Upozorenja? Nema ih, osim ako imate averziju od zagrada, to je to.

Da biste počeli ...

Clojure


Clojure je najnoviji i najznačajniji pokušaj da se Lisp vrati u život, spreman da se suoči sa novim izazovima za IT sisteme u novom veku: konkurentnošću i skalabilnošću. Zato što radi na Java Virtual Machine, dobijate Java-inu mogućnost za korišćenje i razmenu informacija besplatno, na Lisp-ov način. Iako sam malo oklevao da se bavim bilo čime vezanim za Java-u danas, Clojure-ov pristup je čini privlačnom.

Za razliku od drugih Lisp-ova (i Scheme-a) koje ste možda ranije sreli, Clojure dolazi sa nekim zanimljivim dodacima: Uprkos svemu tome, Rich Hickey postajao je sve popularniji, kako u Lisp, tako i u Java svetu zbog stvaranja tako zanimljivog i dobro osmišljenog jezika. Za razliku od mnogih novih (i starih) programskih jezika, tek treba da pronađem jedan blog ili članak koji ozbiljno kritikuje Clojure na bilo koji način.

Da biste počeli ...

Squeak


Squeak je postao jedan od najpopularnijih Smalltalk implementacija na raspolaganju. Korišćen je u nekim veoma interesantnim projektima:
  • EToys, dečije orijentisano, ali moćno razvojno okruženje ugrađeno u Squeak, je bilo uključeno kao deo obrazovnog softvare paketa OLPC.
  • Sea­side predstavlja moderan i vrlo produktivan mrežni okvir koji radi na Squeak-u.
  • Cro­quet je razvojno rešenje za izgradnju složenih, višekorisničkih virtuelnih svetova.
Ako pitate Ran­dal Schwartz-a , on će vam objasniti zašto treba Squeak i Smalltalk bar pogledati. Lično, dok sam privučen jedinstvenom pristupu Smalltalk-a prema programiranju i njegovom prijateljskom sintaksom, još su mi osećanja nedefinisana zbog načina na koji funkcioniše. Squeak i Smalltalk uopšte rade iznutra (bukvalno), na virtuelnoj mašini napisanoj u samom Squeak-u. To znači da:
  • Vi pišete svoj kod unutar Squeak-a
  • Vi otklanjate greške, vršite inspekciju i interakciju svog koda unutar Squeak-a
  • Pokrećete svoj kod unutar Squeak-a
  • Možete instalirati Squeak na bukvalno bilo kojoj platformi, uključujući mobilne telefone, prilično lako
Sve živi u Squeak-u. Veoma je čudno to zamisliti, a da zapravo ne pokušate, zato predlažem preuzmite ga i isprobajte: definitivno će biti neobično, ali intrigantno iskustvo.

Smalltalk dovodi programiranje na sasvim drugačiji nivo, što je prosto nezamislivo za druge jezike. Zauzvrat, on traži da u potpunosti prihvatite Smalltalk-ov način funkcionisanja, prema kojem eksterni editori teksta, eksterne verzije kontrole sistema i drugi uobičajeni alati poznati tradicionalnim programerima jednostavno gube svoju svrhu.

Da biste počeli ...

Ocaml


Kao i Smalltalk, OCaml sve više pažnje privlači sada nego što je nedavno u prošlosti. Naravno, ne planiraju svi da ga nauče ovih dana, ali nakon čitanja ovog članka , priznajem, bio sam nestrpljiv da ga pošteno isprobam.

Uprkos statičnosti, OCaml nudi neke od karakteristika koje su uobičajene u dinamičnijim jezicima kao što je Ruby, kao što je ­­­­“duck typing”, mogućnost stvaranja domensko-specifičnog jezika i čak proširenje jezičke sintakse prilagođenim operatorima i konstruktorima.

Dodatno, projekat OCaml Bat­ter­ies In­cluded je nastao kao pokušaj da spoje standardni skup najčešće korišćenih biblioteka zajedno sa jezgrom jezika. Čak i ako je ovaj projekat još uvek u alfa fazi, definitivno izgleda obećavajuće .

Da biste počeli ...

Factor


Factor je Forth-u ono što je Clojure prostom Lisp-u: reinkarnacija drevnog jezika u modernoj i praktičnoj formi. U konkretnom slučaju, iako pozajmljuje od Lisp-a i Self-a takođe, Factor zadržava glavne karakteristike svog pretka: stek-baziranu, sukcesivno povezanu notaciju sa sufiksom.
Dok je ovo dovoljno da odbijem neke ljude, ako kopate dublje otkrićete da Factor nudi sve najvažnije funkcije dostupne u savremenim programskim jezicima: odnošenje smeća, dinamično kucanje, objekat sistema, ... oni su samo predstavljeni na drugačiji način:

"Učenje Factor-a je teško. Jedan od razloga za to je jer se Factor veoma razlikuje od drugih programskih jezika. Programeri su danas navikli da koriste imperativne programske jezike u kojima se čuvaju podaci i cirkulišu u navedenim promenljivama (ili funkcijskim pozivima koji imenuju svoje promenljive). Factor je sušta suprotnost. Mnogo koda ima tendenciju da bude napisan u funkcionalnom stilu, šta više, promenljive su retke, samo su navedene u malom broju reči. Niko ne namerava da promeni bilo šta od ovoga, to je funkcija, a ne greška!"

– Daniel Ehrenberg, Learning Factor

Kao Haskell, Factor zahteva potpuno drugačiji pristup programiranju od onoga na šta ste se možda navikli, ali kada pređete preko toga, može biti koristan kao bilo koji drugi jezik, ako ne i više. Furnace veb okvir, koje pokreće Concatenative (sukcesivno povezan) wiki, u potpunosti je izgrađen u Factor-u i radi na Factor web serveru.

Da biste počeli ...

Lua


Lua ("Mesec" na portugalskom) je lagan i brz jezik za skriptovanje koji može biti lako ugrađen u drugim sistemima. U poređenju sa drugim jezicima pomenutim u ovom članku, definitivno je manji stranac u gomili: ako znate mali deo C-a ili Java-e, Vi ćete biti u stanju da razumete (i eventualno napišete) 80% od Lua koda bez čitanja jedne linije dokumentacije.

Uprkos svojoj jednostavnosti Lua se smatra paradigmičnim jezikom koji podržava imperativ, funkcionalnim čak i sa objektno orijentisanim pristupima. Preciznije, Lua-ine tabele pružaju jednostavan ali moćan način za stvaranje nizova, heševa čak i klasa (ili bolje, prototipova). Jednostavno (i mnogobrojno) nasleđivanje ostvaruje se kroz metatabele, koje omogućavaju pozive ka nedefinisanim funkcijama da budu prebačene u matične tabele.

Lua-ini programi se ne interpretiraju na tradicionalan način: kompajliraju (prevode) se po bajtovima i potom se izvršavaju u Lua-inoj Virtual Machine. Kao rezultat toga, Lua-in kod ima tendenciju da se izvrši mnogo brže nego kod drugih jezika prevodioca, toliko brzo da je "brz kao Lua" postala široko korišćena fraza.
Lua je našao svoje mesto u ugrađenim aplikacijama i u razvoju igara, u osnovi svuda gde postoji potreba za brzim programskim jezikom koji je takođe veoma lako naučiti i proširiti sa C-om ili drugim jezicima.

Da biste počeli ....

Scala


Možda nećete biti srećni da vidite Scala-u na ovoj listi, umesto drugog veoma opravdanog i jednako moćnog jezika za Java Virtual Machine, kao što je Groovy . Iako nije bilo nikakve sumnje o tome da li treba uključiti Clojure, malo sam oklevao da uključim Scala-u. Na kraju, izabrao sam da to uradim samo zato što se Scala uklapa bolje u ovu listu od drugih jezika: kao što ste trebali primetiti do sada, nekako sam više sklon učenju funkcionalnih jezika nasuprot njihovim objektno orijentisanim kolegama.

Scala je i objektno orijentisan i funkcionalan jezik. On nudi najbolje od oba sveta: klase, osobine i mixin-e koji mogu biti poznati ljubiteljima OOP, ali i anonimne funkcije, lance funkcija sa vise argumenata i obrazac podudaranja koje mogu zadovoljiti Haskell entuzijaste. Pored toga, takođe je kompatibilan sa Java-om: pa ako koristite Java-u za rad, isprobavanje Scala-e za zadovoljstvo je definitivno najlogičniji sledeći korak, naročito ako želite da eksperimentišete sa funkcionalnim programiranjem u međuvremenu.

U poređenju sa učenjem potpuno funkcionalnog jezika kao što su Haskell, Clojure ili PLT Scheme, učenje Skala-e je definitivno lakše i ne stiče se osećaj nečega stranog.

Da biste počeli ...

Zaključak


Postoji toliko mnogo interesantnih programskih jezika da je veoma teško pratiti korak sa svima. Nadam se da ova lista može da vam pomogne da krenete u pravom smeru, koji god to bio.
Neki ljudi mogu da se raspravljaju oko same suštine ovog članka: zašto birati programski jezik? Zašto trošiti vreme i energiju na rad koji može da dovede do mnogo konfuzije i koji vas ne vodi nigde? Koja je svrha učenja nečega što Vam je totalno strano?

Programski jezik je na kraju samo sredstvo kojim završavate posao. Ako morate da napišete korisničku, desktop GUI (grafički interfejs) aplikaciju koja će se uvek pokretati na Windows-u i koji treba da se koristi Microsoft tehnologijama, Vi ćete odabrati C# a ne Haskell, nema sumnje. Pogotovo ako 500 programera u vašem preduzeću već razvijaju u C#-u, a Vi ne, činjenica je da oni biraju koji ćete jezik koristiti.

Ali šta ako možete da birate? Šta ako želite da razvijete sopstvenu štrebersku liniju koda ili aplikaciju da automatizuje određeni zadatak za Vas, a ne zato što Vam je neko drugi rekao da to uradite? Da li biste bili spremni da eksperimentišete sa nečim potpuno drugačijim i potencijalno teškim samo zbog učenja novih stvari.

Ako je odgovor da, onda biste trebali da pogledate listu još jednom. Ne sada, možda ne ni ovog meseca ili ove godine, nego kada budete osetili da je pravi trenutak za to, i dajte šansu nekom od ovih jezika. Može da se dogodi da se ne završi dobro (ja sam do sada pokušavao da naučim Haskell dva puta, ali bez uspeha), ali vam garantujem da će biti korisno, na duge staze.

Ako ste već savladali neki od ovih jezika, ili čak sve, budite sigurni da ima još mnogo jezika koji čekaju da budu otkriveni i da probude vašu maštu. Ili, ako želite, postoji i mnogo umova kojima su možda potrebne smernice u učenju i otkrivanju. Pomozite im. Pišite članke, uputstva, knjige, edukujte i propovedajte: na kraju krajeva, to će biti vaša najveća nagrada.




Published (Last edited): 18-09-2012 , source: http://www.h3rald.com/articles/10-programming-languages/