Hlavní navigace

Go - nový programovací jazyk od Googlu

12. 11. 2009 10:35 (aktualizováno) | Martin Popelák

Původně jsem chtěl napsat příspěvek o 2 přednáškách na téma Google Wave z Google Developer Day, ale když jsem se dnes ráno dozvěděl, že Google vydal nový open-source programovací jazyk, tak jsem se rozhodl, že ho vyzkouším a napíši o něm.

Instalace (Debian Squeeze/amd64)

Nejdříve je potřeba přidat do .bashrc proměnné $GOROOT, $GOOS, $GOARCH a $GOBIN

#GO export GOROOT=$HOME/go export GOOS="linux" export GOARCH="amd64" export GOBIN=$HOME/bin export PATH=$HOME/bin:$PATH

Následně jsem si nainstaloval verzovací systém Mercurial pomocí příkazu

sudo aptitude install mercurial

a naklonoval zdrojové kódy Go.

hg clone -r release https://go.googlecode.com/hg/ $GOROOT

Jestliže máte nainstalovány všechny potřebné balíčky (bison, gcc, libc6-dev, ed), tak stačí již jen zkompilovat pomocí

cd $GOROOT/src ./all.bash

Pokud vše proběhlo bez problémů, tak by se vám měl objevit na posledním řádku výstup: 0 known bugs; 0 unexpected bugs

Hello World

První program je jen základní helloworld.go.

package main import fmt "fmt" // Package implementing formatted I/O. func main() { fmt.Printf("Čauda, Go\n"); }

Ten jsem zkompiloval, nalinkoval a spustil.

6g helloworld.go 6l helloworld.6 ./6.out

Proč Google vydal nový programovací jazyk?

Podle oficiální dokumentace v něm jsou naprogramovány některé interní servery (otázka je jaké a k čemu slouží) Googlu, i když je zatím brán pouze jako experiment.

Go se snaží zkombinovat rychlost vývoje dynamických programovacích jazyků jako je například Python s výkonem a bezpečností statických typovaných jazyků jako je C nebo C++ (zkompilovaný kód je zatím údajně o 10–20% pomalejší než C).

Mně osobně syntaxe Go nezaujala a vzhledem k tomu, že zatím není k dispozici žádný rozsáhlejší tutoriál, který by prakticky ukázal výhody Go, tak mě narozdíl od jiných technologii Googlu, nijak nenadchnul.

Zdroje:

http://golang­.org/

www.techcrunch­.com/2009/11/10/go­ogle-go-language/

http://lwn.net/Ar­ticles/361390/