Původ
Cieľ projektu
Za posledných desať rokov sa neobjavili žiadne veľké systémy, avšak technológie ubehli veľký kus cesty. Je tu niekoľko trendov:
⇒Počítače sú extrémne rýchle, ale programovanie je stále pomalé.
⇒Manažment závislostí je obrovská časť vývoja softwaru, ale dnes sú "hlavičkové súbory" tradícii jazyka C čo je v protiklade k čistej analýze závislostí a rýchleho kompilovania
⇒sú tu rastúce námietky proti ťažkopádnym systémom typu Java a C++, Go núti písať ľudí dynamicky podobne ako v Pythone alebo JavaScripte
⇒Niektoré základné pojmy, ako garbage collection a paralelného .výpočtu nie sú dobre podporované populárnimy systémovými jazykmi.
⇒Nástup viac-jadrových počítačov vyvolal strach a zmätok.
Veríme, že to stojí za to skúsiť to znova s novým jazykom, spolu, garbage collected, s rýchlou kompiláciu. A s ohľadom na dole uvedené body:
⇒Je možné zostaviť robustný Go program v priebehu niekoľkých sekúnd na jednom počítači.
⇒Go poskytuje model pre softvér, ktorý umožňuje ľahkú vývojovú analýzu závislostí
⇒Systémové typy jazyka Go nemajú žiadnu hierarchiu, takže nemusíte tráviť čas definovaním vzťahov naprieč typmi. Go má taktiež statické typy čím sa jazyk pokúša vytvoriť ako typické OO jazyky.
⇒Go plne podporuje garbage-collector a poskytuje základnú podporu pre súbežné vykonávanie a komunikáciu.
⇒Svojim dizajnom navrhuje ako pristupovať k budovaniu softvéru na viac-jadrových procesoroch
Pôvod mena
“Ogle” by bolo dobré meno pre Go debugger (GoOgle)
Názov “6g”
6g kompilátor (rovnako aj 8g a 5g), sú názvy podľa tradície plánu deviatich C kompilátorov, popísaných v dokumente Plan 9 C Compilers v druhej tabuľke. Čislo 6 označuje architektúru pre amd64 (x86-64) zatial čo g znamená Go.
História projektu
Robert Griesemer, Rob Pike a Ken Thompson začali robiť náčrt cieľov na bielu tabuľu pre nový jazyk 21 Septembra roku 2007. Počas pár dní vytvorili z náčrtu plán, v ktorom mali reálne predstavy o tom, čo by chceli spraviť. Pokračovali ďalej v návrhu popri svojej vtedajšej práci. V januári roku 2008 začal Ken pracovať na kompilátoru, ktorý mu mal pomôcť vyskúšať jeho myšlienku - generovať C kód na výstupe. Do polovice roka sa stala z myšlienky práca na plný úväzok, a ken usúdil že je čas pokúsiť sa o výrobu plnohodnotného kompilátoru. V máji 2008 Ian Tailor začal nezávisle pracovať na GCC front end kompilátore pre Go pomocou pripravenej špecifikácie. Russ Cox sa pripojil na konci roku 2008 a pomohol zrealizovať prototyp knižníc.
K projektu prispelo aj mnoho dalších svojimi nápadmi a kódami.
Dôvod vzniku nového jazyka
Go vznikol z frustrácie s existujúcimi jazykmi a prostredím pre programovanie systémov. Programovanie začínalo byť príliš obtiažne, možnosť výberu jazykov bola čiastočne na vine. Na výber bola buď efektívna kompilácia, efektívne prevedenie alebo jednoduché programovanie. Všetky tri spoločne však neboli v žiadnom jazyku. Programátori ktorý si vybrali bezpečnosť a efektívnosť často siahli po Pythone alebo JavaScripte, v menšom rozsahu po Jave.
Go sa pokúša skombinovať ľahké programovanie a jeho interpretáciu, dynamické typy z účinnosťou a bezpečnostnou statických typov a kompiláciu jazyka. Tiež sa snaží byť moderný s podporou pre siete a viac-jadrové počítače. A nakoniec, je navrhnutý pre rýchlosť kompilovania,skompilovať robustnú aplikáciu by malo trvať maximálne niekoľko sekúnd jednému počítaču. Pre splnenie týchto cieľov musí riešiť niekoľko jazykových otázok: expresívnosť ale ľahkosť typov systému, súbežnosť a garbage-collection, stabilné špecifikácie závislostí, a daľšie. Tieto cieľe nemôžu byť riešené cez knižnice alebo nástroje. Dnešná doba si sama vyžiadala vznik nového jazyka.
Jazyk Go pokračuje v ceste :
Go sa pridružuje (základnou syntaxov) k rodine jazyka C, s podstatou prispeli aj Pascal/Modula a Oberon (deklarácie a balíčky), a niektoré dalšie myšlienky z jazykov inšpirované Tony Hoareovimi CSP ako Newsqueak a Limbo (súbežnosti). Go je však nový jazyk na všetkých úrovniach. V každom ohľade bol navrhnutý s myslením na to, čo robia programátori a kým spôsobom, a hlavne vytváraný pre väčšiu efektívnosť, čo robí z ťažkej práce zábavu.
Použitie
Kto používa Go ?
Go je experiment. Veríme odvážny užívateľa ho prijmú, vyskúšajú a budú používať. Nie každý programátor, ale dúfame, že sa ich nájde toľko, že bude môcť vývoj úspešne pokračovať.
Google a Go
V súčasnej dobe existuje niekoľko programov vyvíjaných bežiacich pod Go. Napríklad server golang.org je napísaný komplet cez Go, čo v súčastnosti je to len godoc dokumentový server bežiaci vo výrobnom nastavení.
Spojenie Go a C/C++
Existujú 2 implementácie kompilátora Go, 6g(a príbuzné, nazývané gc) a gccgo. Gc používa Rozdielne konvencie volania a linkovania, a preto môže byť spojený len z jazykom C používajúcim rovnaké konvencie. Tam je podobný kompilátor ako v C, ale iný ako v C++. Gccgo je Gcc front-end ktorý môže, s obavami, byť použitý z GCC kompiláciou C alebo C++ programmy.
Cgo program poskytuje mechanizmus pre "foreign function interface" umožňujúce bezpečné volania C knižníc z jazyka Go. SWING rozšituje túto možnosť pre C++ knižnice
Typy
Go a Objektová Orientácia
Go je a nieje OO. Aj keď Go má typy a metódy a umožňuje objektovo orientovaný štýl programovania, nemá žiadnu hierarchiu typov. Pojem "rozhranie" v Go poskytuje iný prístup, preto veríme v jednoduché použitie a v niekoľko základných smerov. Je tam niekoľko spôsobov pre odvodenie typov na iné typy čo je vo výsledku niečo podobné, avšak nie totožné, ako dedičnosť. Okrem toho sú metódy Go všeobecnejšie ako v C++ alebo jave: môžu byť definované pre akékoľvek druhy dát, nielen štruktúr.
Preťaženie metód a operátorov
Go nepodporuje overloading. Zachytávanie metód je jednoduchšie vtedy, keď niesú zhodné. Skúsenosti z inými jazykmi nám vravia, že rôzne metódy z rovnakým menom ale odlišnou signatúrou boli občas užitočné, ale môžu byť v praxi taktiež mätúce a krehké.
Mnoho ďalšieho sa dozviete na oficiálnych stránkach golang
golang.cz
Prezentácia Go na google IO11 Writing Web Apps in Go
Komentáře
Přidat nový
Pro přispívání musíte být přihlášen
Zapsal tito100 - 13.07.2011 17:41
Jazyk je takpovediac multiplatformový. Podporuje plán 9, čo znamená že je kompatibilný z deviatimi najčastejšími typmi procesorov. Je však treba pre každý procesor vykonať zvlášť kompiláciu. Mala by však prebehnúť bezproblémovo. Ja to kompilujem na Win-e, rovnako je však podpora pre linux a maxos, pre windows nieje kompilátor plne dokončený, nestretol som sa však zatiaľ zo žiadnou chybou.
http://godashboard.appspot.com/project
tu nájdeš zoznam rôznych projektov. Sú tam hry, stránky, aplikácie a podobne.
Zapsal Firejs - 13.07.2011 10:12
Vypadá to zajímavě, ale chci se zeptat zda někde není seznam aplikací.. ne jen webových ale i klasických - prostě nějaké výsledky. A taky mě zajímá jak je to s různými platformami - win, lin, mac. Díky.



