Pogledajte određenu poruku
Staro 20. 01. 2013.   #6
ajankovic
Aleksandar Janković
Qualified
 
Avatar ajankovic
 
Datum učlanjenja: 16.10.2010
Lokacija: Bg-Sd
Poruke: 165
Hvala: 70
54 "Hvala" u 36 poruka
ajankovic is on a distinguished road
Default

Citat:
Posto ga ti poznajes, mozes li navesti razloge tj njegove prednosti i zasto bi ga neko pozelio koristiti i u kojim ambijentima?
U suštini mislio sam da je dovoljno da sami pogledate oficijalnu dokumentaciju ako vas interesuje ova tema da se ne bi svelo na puko prevođenje sa engleskog. Ali evo mojim rečima šta mi se najviše dopada onako iz glave:

Prvo i osnovno odlična dokumentacija. Bez dokumentacije je bilo koji projekat osuđen na propast.

Statički kompajliran jezik - Kompajliranjem dobijaš jednu izvršnu biblioteku. Nemaš problema sa zavisnošću od verzija biblioteka i softvera na deployment mašini. Pošto je program kompajliran u mašinski jezik to podrazumeva i velika ubrzanja u izvršavanju koda u odnosu na platforme sa virtualnim mašinama, a ujedno i zauzimanje manje memorije. Kompajliranje je toliko brzo da postoji alat koji soruce file odmah izvršava. Odnosno alat samo u pozadnini brzo kompajlira source i izvrši rezultat.

Garbage Collector - Programi nemaju problema sa curenjem memorije.

Dobra osnovna biblioteka - Skoro sve bazične oblasti su pokrivene osnovnom bibliotekom. Ovde prevashodno mislim na rad sa stringovima koji su glavna boljka programa koji su bliži mašini. Možete da pogledate spisak osnovnih paketa u dokumentaciji http://golang.org/pkg/.

Dobri alati za rad u razvojnom okruženju - Sa jednom komandom možete da svučete eksternu biblioteku, kompajlirate i uključite je u svoje razvojno okruženje. Npr. "go get github.com/orfjackal/gospec". Najbitniji aspekti razvoja na ovoj platformi su pokriveni "go" alatom. Ovo je iz mog ugla velika prednost. Platforma je dizajnirana za jednostavno korišćenje, a nije nastala kao skup različitih tehnologija koje moraju da se savladaju. Možete da pogledate spisak komandi go alata ovde http://golang.org/cmd/go/.

Strong type system - Barem iz mog ugla je ovo prednost. Veliki broj grešaka se otkloni pri samom činu kompajliranja. Bagovi se svedu na funkcionalne probleme koji su ionako posao developera.

Sintaksa i dizajn jezika - Generalno ovo je obimna tema i nemam vremena da iznesem sve što mi se sviđa i da objasnim svaku stavku. Ali mi se čini da je jezik oslobođen suvišnih teorijskih koncepata. Izabrani su samo oprobani koncepti koji su se pokazali dobro u praksi.

Na primer funkcije su građani prvog reda da se tako izrazim. Sviđa mi se to što se error handling zasniva na povratnim vrednostima a ne na izuzecima. Funkcije mogu da vrate više vrednosti. Prednost po mom mišljenju je i to što objektno orijentisano programiranje nije implementirano na klasičan način. Nema hijerarhije tipova. Meni to mnogo olakšava rad i čini rešavanje problema jednostavnijim bez komplikovanih struktura. Nasleđivanje je urađeno putem kompozicije.

Idiomatski je dobro osmišljen jer osnovne programske strukture kao što su uslovno granjanje, ponavljanje, kanali, rad sa podacima itd. su veoma često korišćene na sličan način i prepoznatljive od projekta do projekta. Jednostavno postoji samo jedan dobar način da se nešto sintaksno odradi. Ovo veoma pomaže u snalaženju u tuđem kodu.

Do kog nivoa su išli da omoguće čitljiviji kod je i sledeći primer. Siguran sam da vam je poznato da u programiranju važi pravilo 20/80 za odnos pisanja i čitanja koda. Zato u go alatima postoji alat koji svaki source fajl formatira po utvrđenom standardu tako da svaki kod liči jedan na drugi. Tako se postiže bolja čitljivost koda bez obzira na developera. Odnosno nema rasprave da li idu tabovi ili spejsovi .

Takođe preuzet je i C stil pisanja koda što čini samu sintaksu prepoznatljivom velikom opsegu developera.

I već spomenuta ugrađena konkurentnost sa ugrađenim strukturama podataka koji olakšavaju sinhronizaciju između konkurentnih procesa.

I da ne dužim dalje ima još dosta stvari koje mi se sviđaju. Možemo slobodono da prodiskutujemo o svemu ako vas interesuje. Ja sam stekao utisak da više može da se tumači kao poboljšan C nego da je glavni konkturent dinamičkim jezicima. Iz mog ugla mislim da su napravili dobar kompromis između približavanja mašini i apstrakcijama na višim nivoima programiranja. Osnovna vodilja nisu bili teorijski već praktični koncepti. I takav pristup mi odgovara.
__________________
ajankovic.com]
ajankovic je offline   Odgovorite uz citat
3 članova zahvaljuje ajankovic za poruku: