Go-kääntäjän asentaminen Ubuntuun

11.11.2009 16:33:24 — kennuhttp://flk.cc/gqTechnology

Kokeilin asentaa Googlen uuden Go-kääntäjän Ubuntu 9.10:een. Se sujui helposti asennusohjeiden mukaan. Go on saatavilla tällä hetkellä Linuxille ja Mac OS X:lle.

Tiivistäen tein seuraavat asiat: (rootilla oli jo ennestään /root/bin polussa)

  • sudo su -
  • apt-get install mercurial bison gcc libc6-dev ed
  • export GOROOT=/root/go
  • export GOARCH=386
  • export GOOS=linux
  • hg clone -r release https://go.googlecode.com/hg/ $GOROOT
  • cd $GOROOT/src
  • ./all.bash

Käytin GOARCH=386 koska Ubuntu-virtuaalikoneeni on 32-bittinen. Muuten tulee käyttää GOARCH=amd64 Googlen ohjeiden mukaisesti.

Asentamisen jälkeen voi tehdä tämänkaltaisen hello.go -ohjelman:

package main
import "fmt"

func main() {
  fmt.Printf("Hello World\n");
}

Sitten vain käännetään ja linkataan näin: (64-bittisessä ympäristössä 8g ja 8l korvataan 6g:llä ja 6l:llä)

  • 8g hello.go
  • 8l -o hello hello.8

Omasta näkökulmastani "goroutinet" eli useassa CPU-coressa yhtaikaa ajettavat aliohjelmat ovat ehkäpä Go:n mielenkiintoisin ominaisuus. Ne muistuttavat idealtaan Erlangin prosesseja eli mahdollistavat oikean rinnakkaisohjelmoinnin.

Oheisessa videossa on Rob Piken hyvä katsaus Go-kielen perusteisiin ja ominaisuuksiin.

5 comments · 1 person liked this story ·
5 Comments
Ossi 12.11.2009 11:55:21

Katsoin tuon videon ja lueskelin tutorialit. En oikein tajua, mikä tässä Gossa on niin hienoa. Se vaikuttaa todella keskeneräiseltä ja lähinnä servereiden tekemiseen suuntautuneelta kieleltä. Nopeat käännökset toki ovat hienoa, mutta silti.. .where's the beef?

Hölmöä myös, että ympäristöä ei ole saatavilla Windowsille.

Kennu 12.11.2009 14:20:10

Minusta pihvi on siinä, että moderneja natiiviksi binäärikoodiksi käännettäviä kieliä on hyvin vähän C:n ja C++:n (ja Objective-C:n :-) ohella. Tyypillisesti kaikki modernit kielet käännetään bytecodeksi ja ajetaan erilaisissa virtuaalikoneissa (Java, C#, Erlang, Python jne).

Käännetyn Go:n tehokkuus on videon mukaan 80-90% C:n tehokkuudesta, mikä on aika hyvä saavutus huomioiden sen kaikki ominaisuudet. C:ssähän (ja C++:ssa) on jäljellä kaikki ne ongelma-alueet, joita uudemmissa kielissä on korjattu, kuten esimerkiksi puuttuva garbage collection, liian jäykkä tyypitys ja hankala threadaus. Go taas korjaa nämä ja säilyttää kuitenkin tehokkuuden.

Ossi 12.11.2009 16:41:08

Ymmärrän edut C++:aan ja puhtaasti tulkattaviin kieliin verrattuna. Mutta onko oikeasti suoritetun koodin nopeus ainoa Go-kielen etu verrattuna vaikka Javaan ja C# / .Netiin? C# -ohjelmat ovat suorituskyvyltään hyvin lähellä C++ :lla tehtyihin verrattuna.

Ossi 12.11.2009 17:02:37

Slashdotista: From Golanf.org [golang.org] : "With Go we take an unusual approach and let the machine take care of most formatting issues. A program, gofmt, reads a Go program and emits the source in a standard style of indentation and vertical alignment, retaining and if necessary reformatting comments. [...] We use tabs for indentation and gofmt emits them by default. Use spaces only if you must."

http://developers.slashdot.org/comments.pl?sid=1439072&cid=30057728

Kennu 12.11.2009 18:43:32

On tuossa sellainen aspekti, että jollain se C#-virtuaalikonekin täytyy koodata :-)

Mitä ilmeisimmin Google haluaa tehdä Go:sta omien käyttöjärjestelmiensä low-level-kielen, jolla toteutetaan ne platformit Javan ja Pythonin alle.


You can use Markdown to format your comment:

  • > quoted text
  • *italic* text
  • **bold** text
  • `code block` (multi-line is ok, whitespace is preserved)
  • [link text](http://www.google.com "link title")

Separate paragraphs in your text with two newlines