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.

Google Go: Dobar za šta?


Moji postovi na Google Go (deo 1 ) i ( deo 2) su definitivno iznervirali par ljudi. A ja volim dobar dialog kada su u pitanju ovakve ideje.

Jedno pitanje se prožima tokom cele rasprave, a to je Dobar za šta? A meni je veoma teško da pronađem adekvatan odgovor. Čak i osnovna stranica koja pripada Google Go-u sa često postavljanim pitanjima ima odgovore koji su nejasni.

Rekao bih da potoji mnogo nestratera koji stavljaju Go van prostora programskih aplikacija. Posle mojih argumenta koji ističu da on neće skoro zameniti Java, ljudu mi govore da nisam gledao pravu demografiju. Ti ljudi daju sugestije da je Go stvarno sistemski programer. Sistemsko programiranje je osnova C (i od skora C++) programera u poslednje 2 decenije. Ako radite stvarno sistemsko programiranje onda ste sigurno u jednom od ova dva tabora, uopšteno govoreći. Dok povremeno ovde i tamo možete biti i u istom timu.

Ok, moj zadatak je da to istražim. Pre svega, šta čini dobar sistemski programrski jezik? Evo nekoliko stvari koje bi trebalo znati:
  1. Može da funkcioniše u okruženju ograničenih sredstava
  2. Veoma je efikasan i potrebno mu je malo radnog vremena
  3. Ima malu radnu bublioteku ili je nema uopšte
  4. Dozvoljava direktan i sirov kontrolni pristup memoriji i kontrolu protoka
  5. Omogućava programeru da napiše delove programa direktno u skupini za jezike
Da li se Go stvarno uklapa u kutiju?
  1. Izražajni brojevi u kojima Go funkcioniše su u prosku 6x gori nego sa C++. Kada se uporedi test šta Go može da uradi, njegov najbolji test je jednak najgorem C++ testu. Ipak dao sam Go neke odlike da je u izvođenju sličan Java što se tiče aplikacija u okruženju (ima mnogo drugih nememorijskih, i ne CPU da se o njima ovde brine) sistemski svet je daleko stroži i siroviji o vremenu izvršavanja i potrošnji resursa. (+10/20 pts)
  2. Memorija Go-a i izvršenje otiska su veći od C ili C++, prema ovim podacima . Ipak idealan kanditat koji bi mogao da zameni bilo koji od ova dva jezika trenutno nije naišao. Interesantan eksperiment jeste: Ubacite Hello World u Go i C++. Go’s kompajler & povezni izlaz: 38K, C++ kucka na 6K, oko 84% manje. (+10/20 pts)
  3. Ako se uključi skupljač smeća prolazno veme Go je svakako veće nego C/C++. A i sigurnost je sigurno svakako veća. I da zapečatimo: Go skupljač smeća sada sigurno nije najsigurnija opcija. ( Da budem iskren, Go skupljač smeća je #1 stvar na listi Go tima koju bi trebalo odraditi) (+15/20 pts)
  4. Kada je direktna i sirova kontrola moguća, Go tu dobro prolazi. Možete ovo iskorititi da proverite strukturu prolaznog vremena. (+20/20 pts)
  5. Sličan je Java prirodnom interfejsu (JNI) ali striktno povezan, dakle da je moguće. (+20/20 pts)
Ako ima 20 poena po odgovoru, budimo ljubazni i dajmo Go 75/100 moguću ocenu tamo (solidno “C” na američkoj skali ocenivanja…fuj,fuj..). Ako ste C/C++ programer i ako već an ovakvom ocenivanju imate 100/100 koji je vaš moiv da pređete na ovo? Imajte na umu da svi programeri ne ulaze odmah u štos sa svakim novim sistemom na prvu loptu. Prošle su godine pre nego što je C++ našao svoje mesto među gomilom koja voli C. Uzimajući u obzir potrebni kredibilitet da bi se postigao visoki kvalitet, čist-metal sistemi programiranja, i ja bih bio skeptičan kada se na ovom polju pojavi nešto novo.

Konačno potegnimo argumente o sintaksi, još jednom, jer ipak mislim da je to srž problema. Pre nego započnemo rekao bih vam da ja lično nemam nikakav problem sa sintaksom Go-a. U celoj mojoj dugoj istoriji komjuterskog štrebera, susrećao sam se sa nebrojeno mnogo novih kompjuterkih jezika, tako da dodavanje još jednog novog ne bi bio nikakav problem uz odgovarajuću kompenzaciju. Ali iz mog iskustva kao jezičkog podučivača, jezička familijarnost jeste barijera za mnoge korisnike, a i Parkinsonov zakon trivijalnost.

Po Parkinsonovom zakonu pojedinci u proseku provedu mnogo više vremena raspravljajući o nevžnim, trivijalnim stvarima (što potpuno razimem), a mnogo manje vremena raspravljajući o bitnim ( što stvarno ne razumem).Ovo je praktino tačno sa programskim jezikom i sintaksom . Video sam otpor kada se predavala Java C++ devedesetih godina prošlog veka. A to i nije bio neki veliki skok. Menjanje C++ sa Go će biti komplikovanije nego C++ sa Java, i ta otpornost je važna za stopu prihbatanja.

Ne volim činjeniu da će Go zameniti C++ programski jezik. Kada bih tažo novi alat za moju kutiju, ne mislim da bih kupio ovaj novi koji Google nudi.

Sve ovo me tera da se počešem po glavi i počnem pevati:

“Go! Fuj! Jea!

Za šta je on dobar?

Apsolutno nizašta

I kažite to opet!”




Published (Last edited): 14-08-2012 , source: http://www.lessonsoffailure.com/software/google-go-good-for-nothing/