DevProTalk

DevProTalk (http://www.devprotalk.com/index.php)
-   Programiranje (http://www.devprotalk.com/forumdisplay.php?f=23)
-   -   Go Programski Jezik (http://www.devprotalk.com/showthread.php?t=11380)

ajankovic 17. 01. 2013. 18:39

Go Programski Jezik
 
Za one koji ne znaju ekipa iz Googla je pre par godina lansirala Go programski jezik. Go je uspeo da dostigne verziju 1 i trenutno predstavlja stabilnu platformu za razvoj softvera.

Već duže vreme pratim događaje i članke vezane za Go jezik i na osnovu raznih izvora mislim da sam uspeo da steknem utisak o prednostima i manama ovakvog pristupa programiranju. Odvojio sam vremena da ga savladam i sada smatram da se zasniva na odlično osmišljenim konceptima i predviđam da će vremenom postati "mainstream" i preuzeti udeo u tržištu od glavnih konkurenata.

Zato me najviše interesuje da li ima istomišljenika ili onih drugih ovde na forumu, odnosno u Srbiji? Kakvo je vaše mišljenje i iskustvo?

I generalno kakvo je stanje sa primenom novih tehnologija u Srbiji ili izučavanjem u školama? Da li vidite primenu za ovakvu tehnologiju u svojoj firmi? Da li mislite da bi teško nalaženje radne snage predstavljao nepremostiv problem?

Za najbolji način da se upoznate sa Go jezikom možete da posetite http://tour.golang.org.

misk0 17. 01. 2013. 23:05

Osim toga da sam cuo da postoji i da Google stoji iza - ne znam nista vishe. Ni u mom okruzenju ga niko ne koristi.

Posto ga ti poznajes, mozes li navesti razloge tj njegove prednosti i zasto bi ga neko pozelio koristiti i u kojim ambijentima?

BraMom 18. 01. 2013. 11:19

Programski jezici postaju "mainstream" ne toliko zbog lepote sintakse ili ne znam čega, već uglavnom jer ih pogura neki spoljni faktor. Npr. ako programiraš za Windows verovatno ćeš završiti na c# .net varijanti ili na c++. Ako programiraš za iOS Objective C je prvi izbor. Ruby je bio Ruby i 90-ih ali bez odličnog frejmorka za web ne verujem da bi postao toliko popularan... Stoji i kontra argument, da nisu dobri ne bi ih izabrali Microsoft, Apple... Međutim na takve odluke više utiču poslovni neko tehnički razlozi.
Čini mi se da Go, za sad, nema takvu platformu koja bi pogurala prihvatanje jezika (morao sam do rečnika da nađem srpsku reč za "adoption"). Google to može da promeni, npr. kada bi Go dobio super frejmvork za Android...

Što se tiče radne snage, mislim da bi većina c, c++, c#, c [šta god] programera moglo da se prilagodi dosta brzo. Nemoj da me držiš na reč ali ako bi mi bila ponuđena dva identična posla, osim razlike C, C++ vs Go, verovatno bih pre prihvatio Go, ako ništa drugo uvek bi imao priču, znate radim u onom novom jeziku...

Za škole stvarno ne znam, ali si mi izmamio osmeh :)

djipko 18. 01. 2013. 16:11

Sve cesce se cuje - "free lunch is over" ovih dana. Ta recenica se naravno odnosi na cinjenicu da vise ne mozemo da racunamo na to da ce procesori u nedogled postajati brzi. Mnogi pametni ljudi su to davno shvatili - i mnogi su se slozili da problem konkurentnog programiranja mora da bude resen na nivou jezika, i na tom polju je Go samo jedan od takmaca sa svojim goroutines (notable mentions: Rust, Erlang).

Kao sto BraMom kaze - sintaksa nije bitna - u eri desktopa bitne su bile biblioteke (npr frjmvorci) te su zato Java i C# danas toliko popularni. Ako pisemo kod za servere - bitan je runtime. Ovde danas malo sta moze da pridje Javi.

Imajuci ovo u vidu, novi jezik pred sobom ima velike izazove (da se tako izrazim)... Mora da ponudi runtime koji moze da se takmici sa najboljima (uzmimo Javu koja postoji 20 godina i videcemo da to nije nikako lak zadatak) i mora da olaksa konkurentnost (dakle pisanje koda koji je trivijalno paralelizovati na n procesora/jezgara bez brige o pratecim zanimacijama) do te mere da bude bolji od solidnih biblioteka pisanih na vec postojecim platformama (Hadoop naprimer...).

Ja bih rekao sledece - jezici koji nude konkuretnost kao deo jezika su definitivno buducnost, barem na strani servera. Kako istrazivanje bude napredovalo, sve vise ce se razlika praviti u zavisnosti od stabilnosti runtime-a/kvaliteta biblioteka. Go je medju prvima dosao na teren, ali utakmica tek pocinje, a konkurencija nije mala.

Sto se tice naseg obrazovanja - nisam veliki optimista, iz prostog razloga sto nam je IT industrija kromanjonska pa se takvi kadrovi i traze (cast izuzecima).

srdjan 18. 01. 2013. 19:44

Citat:

Originalno napisao djipko (Napišite 109701)
...jezici koji nude konkuretnost kao deo jezika su definitivno buducnost ... Sto se tice naseg obrazovanja - nisam veliki optimista, iz prostog razloga sto nam je IT industrija kromanjonska pa se takvi kadrovi i traze

Nismo džabe na faxu imali 4 godine samo Modulu-2, dolazi i naših 5 minuta!! :1059:

ajankovic 20. 01. 2013. 01:14

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 :D 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 20. 01. 2013. 01:16

Citat:

Programski jezici postaju "mainstream" ne toliko zbog lepote sintakse ili ne znam čega, već uglavnom jer ih pogura neki spoljni faktor. ... Međutim na takve odluke više utiču poslovni neko tehnički razlozi.
Slažem se u potpunosti. Samo ja ovde vidim poslovni pristup iz drugog ugla. Ako pogledaš moje izlaganje u prethodnom postu možeš da stekneš utisak da su kreatori jezika dosta radili na tome da se poveća produktivnost programera, jezik učini jednostavnijim za učenje i smanji broj grešaka. Od smanjenja vremena prilikom kompajliranja do čitljivosti koda svaka odluka i kompromis koji su doneli je po mom mišljenju bila sa ciljem napretka u sve tri ove oblasti. I mislim da ozbiljna IT firma ne može da zanemari uticaj ovih faktora na uspeh projekata.

Citat:

Kao sto BraMom kaze - sintaksa nije bitna
Syntax is not important ... unless you're programming or writing tools - Rob Pike :)

BraMom 20. 01. 2013. 14:16

I meni je zaličilo na Modulu, ali reko da ne otkrivam koliko sam star :). To je dobar primer odličnog jezika koji je nestao sa lica zemlje. Mislim da je imao i pristojno okruženja za razvoj u to doba, @Jablan je nosio neke diskete sa Top Speed kompajlerom...

Naravno da je programski jezik jako bitan programerima, uključujući i sintaksu, govorio sam o tome da to nije dovoljno da bi jezik postao "mainstream". Kao što kažeš direktna posledica "lepote" jezika je brzina kompajliranja, čitljivost koda... E sad "samo" da ga biznis malo pogura, npr. da iz nekog stora, marketplejsa ili čega već zove krenu da kaplju $$$ i tu smo.
Pretpostavljam da si u pravu i da nije tako lako odvojiti uzrok i posledicu, verovatno je istina negde na sredini. Moguće i da bi jedan "hit" mogao da poveća zainteresovanost publike za sam jezik, pa da se tako izrodi komjuniti/frejmork i tako zavrti priča.
Je l tako beše išlo sa Ruby on Rails pričom?

djipko 21. 01. 2013. 11:02

Citat:

Originalno napisao ajankovic (Napišite 109722)
Syntax is not important ... unless you're programming or writing tools - Rob Pike :)

Ovde sam mislio da nije presudna za to da li ce jezik kao jezik biti uspesan ili ne - mada verovatno ni to nije potpuno tacno... hmmm... recimo da ukoliko sintaksa jezika nije polje u kom on donosi inovacije - verovatno nece biti od znacaja za njegov uspeh. Bolje :) ?

tasmaniski 07. 04. 2013. 15:25

Airbnb Tech Talk: Brad Fitzpatrick - Go Programming Language


Vreme je GMT +2. Trenutno vreme je 16:36.

Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.

Mišljenja, saveti, izjave, ponude ili druge informacije ili sadržaji nastali na Sajtu su vlasništvo onoga ko ih je kreirao, a ne DevProTalk.com, tako da ne morate da se oslanjate na njih.
Autori poruka su jedini odgovorni za ovakve sadržaje. DevProTalk.com ne garantuje tačnost, kompletnost ili upotrebnu vrednost informacija, stavova, saveta ili datih izjava. Ne postoje uslovi pod kojima bi mi bili odgovorni za štetu ili gubitak koji je posledica bilo čijeg oslanjanja na nepouzdane informacije, ili bilo kakve informacije nastale kroz komunikaciju između registrovanih članova.
Web sajt može sadržavati linkove na druge web sajtove na Internetu ili neke druge sadržaje. Ne kontrolišemo niti podržavamo te druge web sajtove, niti smo pregledali bilo kakve sadržaje na takvim sajtovima. Mi nećemo biti odgovorni za legalnost, tačnost ili prikladnost bilo kog sadržaja, oglasa, proizvoda, usluga ili informacije lociranim na ili distribuiranih kroz druge web sajtove, niti za bilo kakvu štetu nastalu kao posledica takvih informacija. DevProTalk.com drži i čuva druga prava vlasništva na web sajtu. Web sajt sadrže materijale zaštićene copyright-om, zaštitne znakove i druge informacije o pravu vlasništva ili softver. Članovi mogu poslatu informacije zaštićene pravima vlasništva njihovih nosilaca i ona ostaju zaštićena bez obzira da li su oni koji prenose te informacije to naveli ili ne. Osim informacija koje su u javnom vlasništvu ili za koje dobijete dozvolu, nemate pravo da kopirate, modifikujete ili na bilo koji način menjate, objavljujete, prenosite, distribuirate, izvršavate, prikazujete ili prodajte bilo koju informaciju zaštićenu pravima vlasništva. Slanjem informacija ili sadržaja na bilo koji deo DevProTalk.com, Vi automatski dozvoljavate i predstavljate garanciju da imate pravo da dozvolite DevProTalk.com ili članovima DevProTalk.com bespovratnu, kontinualnu, neograničenu, globalnu dozvolu da koriste, kopiraju, izvršavaju, prikazuju i distribuiraju takve informacije i sadržaje i da iz takvih sadžaja koriste bilo koji deo u bilo koje svrhe, kao i pravo i dozvolu da koriste gore navedene sadržaje. Svi zaštitni znakovi (trademarks), logotipi, oznake usluga, firme ili imena proizvoda koji se pominju na ovom web sajtu su vlasništvo kojim raspolažu njihovi vlasnici.