Diogo Besson :: tecnologia

Google Go. A linguagem de programação do Google.

Google Go. A linguagem de programação do Google.

Google Go. A linguagem de programação do Google. Será que a linguagem de programação do Google vai deslanchar? Até agora não vimos isso acontecer. O que mais o Google pode nos oferecer?

No dia 10/11/2009 , o Ricardo Liyushiro enviou essa notícia sobre a criação da linguagem Go para seus seguidores através do Twitter. Interessou bastante, pois como todo mundo sabe, o Google possui uma simbiose saudável com os desenvolvedores e usuários de informática através do oferecimento de serviços como o Wave, o g-Talk, o Gmail e etc, em troca de novas oportunidades, publicidade e obtenção de informações de marketing.

Na mesma hora resolvi brincar um pouco com esse novo brinquedo, mas antes de contar minha experiência é preciso trabalhar algumas outras histórias.

O Google Go foi criado em setembro de 2007 por Robert Griesemer, Rob Pike e Ken Thompson com implementações para Linux e Mac (que são quase a mesma coisa) tendo como proposta principal ser uma linguagem de código aberto, compilada, de gerenciamento automatico de uso de memória (coletor de lixo) e concorrente (com suporte a gerenciamento de tarefas e computação paralela), além de ser (pelas palavras do Google) uma linguagem simples, rápida, segura e divertida.

Não confundir com a linguagem Go!, criada em 2003 por Francis McCabe e Keith Clark, que por uma inacreditável coincidência do acaso, além do nome, também tem a mesma proposta.

Agora que estamos cientes de alguns fatos históricos (bons ou ruins, não interessa agora…), vamos por a mão na massa.

Instalação do Google Go

Pra mim, foi um suplício.

Estou rodando um test server aqui com Ubuntu 9.10 de arquitetura 64bits. Não sei se o sistema operacional teve a ver com a minha total incompetência em rodar a instalação do compilador de primeira, mas vamos lá…

Seguindo o tutorial Instalando Go, fornecido pela documentação da linguagem, vi que haviam duas possibilidades de instalar o compilador. A primeira era fazer tudo na unha e a segunda era instalar o gcc, também conhecido como GNU Compiler Collection que é um compilador bom-bril que suporta várias linguagens.

Claro que eu não tive muita paciência pra procurar pelas preferências dos beta testers no próprio google e já saí logo fazendo tudo na unha. O que, no final, mostrou-se muito bom, pois depois tive uma série de dificuldades de compatibilidade com o meu GCC em um momento posterior, além é claro da perda absurda de tempo para instalar o pacote completo dentro do servidor.

O primeiro passo é criar variáveis de ambiente no seu usuário para que o google Go possa ser facilmente encontrado. Isso é padrão pra maioria das linguagens e, pra quem já instalou o JDK no linux, essa parte tira-se de letra.

Pré requisito: Você precisa ser um sudoer no ubuntu server, ou seja, precisa estar com uma senha que permita que sejam executados comandos de administrador durante a instalação.

Para criar as variáveis de ambiente corretas, deve-se configurar o arquivo .bashrc da seguinte maneira:

1-) Criar a variável $GOROOT.

– crie uma pasta chamada /google e outra usando /google/bin usando mkdir;
– abra .bashrc com o nano, vi ou qualquer outro editor que seja seu favorito. O arquivo .bashrc geralmente fica dentro de /home/nome_do_usuario;
– No final deste arquivo, digite: declare -x GOROOT=”/google/go”
– Na próxima linha insira: export GOROOT

Esta variável define o caminho raiz do seu compilador google go, ok?

2-) Criar a variavel $GOOS

Essa variável define seu sistema operacional e aqui eu acho um erro de planejamento. Por que diabos essas configurações não são detectadas automaticamente???? Nem o google explica…

Ainda em .bashrc, digite:
declare -x GOOS=”linux” (se vc estiver usando um sistema operacional linux)
declare -x GOOS=”darwin” (se vc estiver usando um MAC OS X 10.5 ou 10.6).

Na outra linha digite:
export $GOOS

Pergunta:

Por que um começa com cifrão e outro não?

Resposta:

Porque o valor de um apresenta uma barra, um numeral ou um caracter especial e o outro não…

PS:

Não testei nada do Mac, portanto, desconsiderem o que eu disser aqui sobre esse sistema operacional, ok?

3-) Criar a variável $GOARCH

Essa variável dá informações sobre a arquitetura da sua máquina.

O meu Ubuntu não rodou usando a configuração apropriada para 64 bits, nem com reza brava, então eu utilizei a de 32 mesmo e cantou lindo.

Se você usa 64 bits, em teoria, deveria adicionar no .bashrc as seguintes linhas:

declare -x $GOARCH=”amd64″
export $GOARCH

Se você usa 32 bits, também na teoria, deveria adicionar no .bashrc :

declare -x GOARCH=”386″
export GOARCH

Atenção: ao usar 386, NÃO coloque cifrão!!!

Você só terá certeza quando puder iniciar a instalação e, entre tentativa e erro, puder alterar o valor dessas variáveis pra ver o que acontece.

4-) Criar a variável $GOBIN

Essa variável mostra o caminho do BIN da sua pasta google. No tutorial, ela surge como uma variável de criação opcional, mas não é. Crie a variável e você evitará problemas, então vamos lá.

Lembra que você criou anteriormente uma pasta chamada /google/bin ? Então agora é a hora de apontar o dedo pra ela.

digite no .bashrc:

declare -x GOBIN=”/google/bin”
export GOBIN

5-) Colocar as variáveis no $PATH do servidor

Isso é útil para que os caminhos sejam vistos de qualquer local do sistema operacional.

Ainda no .bashrc digite:

PATH = $PATH:$GOROOT:$GOBIN:/google/go/src:.

Não esqueça o ponto no final

/google/go/src é a pasta que vai ser criada com o fonte a ser compilado. Vários arquivos vão para este estoque durante a instalação e você irá perceber que coloca-lo no $PATH neste momento é algo muito útil durante a instalação.

Salve tudo e faça um logout. Depois entre novamente com seu usuário para que ele carregue as regras.

digite:

$ env

Com esse comando você pode verificar se todas as variáveis de ambiente setadas estão funcionando corretamente.

Tudo ok? Então vamos aos arquivos do Google Go

1-) Use o apt-get ou o easy_install para baixar o Mercurial

eu utilizei: sudo apt-get install mercurial

2-) Após instalar o Mercurial, esteja certo de que a pasta /google/go NÃO EXISTE AINDA, pois se ela já existir o treco dará um erro na criação…

digite então:

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

Pra alguns sistemas operacionais, o bendito HG necessita da senha do sudo.

Isso é uma droga, porque ele vai criar todos os arquivos e vai dar (como aconteceu aqui) a posse da pasta e de todos os arquivos para o usuário ROOT e para o grupo ROOT

Caso isso aconteça, após a descarga dos arquivos do Google Go, você precisa entrar como root e alterar o proprietário para o nome e grupo do seu usuário usando o comando chown.

Veja algo sobre chown aqui.

Ou digite chown –help ou man chown para ler as especificações desse comando.

3-) Instalando.

O google Go necessita do compilador do C e de várias bibliotecas

Pra ser mais exato, os requisitos são:

– GCC
– As bibliotecas do C
– O  Bison
– O Make
– Um editor de textos ed, nano, vi…

No OS X, tudo pode ficar instalado através do Xcode, Porém, no Linux a coisa funciona um pouco diferente.

Use, então:

sudo apt-get install bison gcc libc6-dev ed make

4-) Vamos compilar e fazer os testes

$ cd $GOROOT/src
$ ./all.bash

Certifique-se de NÃO estar logado como root. Isso é fundamental, pois como root nada vai funcionar direito…

Se tudo correr bem, você verá a seguinte mensagem:

— cd ../test
N known bugs; 0 unexpected bugs

 

Se tudo correr mal, você pode recorrer aos Go Issues do Google. Lá muitas pessoas estão prontas para ajudar e também para serem ajudadas, pois nem todos os sistemas operacionais são iguais e poderá haver divergência de procedimentos ao tratar uma ou outra situação.

Um exemplo disso é que eu estava tendo uma dificuldade e o pessoal de lá me orientou a atualizar os arquivos que foram baixados pelo repositório.

usei:

hg pull

hg update

E resolvi a situação.

Para verificar comandos uteis do Mercurial, entre aqui.

 

Deu tudo certo (finalmente). E agora?

Agora você pode testar suas habilidades de programador e compilar uns programinhas.

Existe esse “Alô Mundo” aqui que eu consegui compilar numa boa usando 8g e 8l.

O código é o seguinte:

[sourcecode language=”powershell”]

package main

import fmt "fmt" // Pacote que implementa o I/O formatado

func main() {
fmt.Printf("Alô Mundo, Hello world; or Καλημέρα κόσμε n");
}

[/sourcecode]

Você também pode utilizar outros exemplos e seguir os tutoriais de Google Go diretamente da fonte.

 

A minha impressão do Google Go

Nem vou levar em conta a briga do pessoal do Google Go com o pessoal do Go!, que por si só já é a sacanagem do século, mas creio que essa linguagem tem potencial apesar de ser imatura.

Tive muitas conversas com especialistas em sistemas, incluindo João Rubira, Eduardo Schulze, Helyelton Dias e Wellington Vieira e constatamos que essa mistura de C com Phyton, Java, Pascal e outras só pode ser visto como um avanço se existir algum considerável ganho em relação à usabilidade e performance, coisa que o Google Go ainda não mostrou, pelo menos pra mim.

Acho que tudo que temos a fazer é esperar pra ver em que hora a linguagem vai alcançar a maturidade e começar a ser aceita como uma ferramenta lógica realmente útil.

Outros links:

http://golang.org/

http://golang.org/doc/effective_go.html

http://golang.org/doc/install.html

 

um abraço ao visitante,

Diogo Besson

.

Leave a Comment

O seu endereço de e-mail não será publicado.