Go (linguagem de programação)

Origem: Wikipédia, a enciclopédia livre.
Ir para: navegação, pesquisa
Disambig grey.svg Nota: Para Go, veja GO.
Go
Paradigma compilada, concorrente, imperativa, estruturada
Surgido em 2009[1]
Última versão 1 (28 de março de 2012)
Criado por Robert Griesemer, Rob Pike, and Ken Thompson[1]
Estilo de tipagem: Estática[2]
Compiladores gc, gccgo[3]
Influenciada por C, Pascal, Modula, Oberon, Newsqueak, Limbo[4]
Licença: BSD[3]
Página oficial http://golang.org/

Go é uma linguagem de programação criada pela Google e lançada em código livre em novembro de 2009. É uma linguagem compilada e programação concorrente,[4] baseada em trabalhos feitos no sistema operacional chamado Inferno.[5] O projeto inicial da linguagem foi feito em setembro de 2007 por Robert Griesemer, Rob Pike e Ken Thompson.[4] Atualmente, há implementações para Windows, Linux, Mac OS X e FreeBSD.[3]

Descrição[editar | editar código-fonte]

A sintaxe de Go é semelhante a C; uma variação é a declaração de tipos, a ausência de parênteses em volta das estruturas for e if. Possui coletor de lixo. Seu modelo de concorrência é baseado no CSP de Tony Hoare,[4] além de possuir características do cálculo pi, como passagem por canal.

Algumas funcionalidades ausentes são tratamento de exceção, Herança, programação genérica, assert e sobrecarga de métodos.[4] Os autores expressam abertura para discutir programação genérica, mas argumentam abertamente contra asserções e defendem a omissão de herança de tipos em favor da eficiência.[4] Ao contrário de Java, vetores associativos são parte intrísceca da linguagem, assim como strings.

Implementações[editar | editar código-fonte]

Atualmente, há dois compiladores para Go. 6g e ferramentas complementares - conhecidos em conjunto como gc - são escritos em C, usando yacc e bison para análise sintática. Além do gc, há o gccgo, um compilador de Go com front-end C++ (utilizando um analisador sintático descendente recursivo) associado ao back-end padrão do GCC.[2]

Exemplos[editar | editar código-fonte]

Abaixo, segue-se o Programa Olá Mundo em Go:

package main
 
import "fmt"
 
func main() {
    fmt.Printf("Olá, Mundo!\n")
}

Outro exemplo, uma implementação do echo do Unix:[6]

package main
 
import (
    "os"
    "flag" // analisador sintático da linha de comando
)
 
var omitNewline = flag.Bool("n", false, "don't print final newline")
 
const (
    Space   = " "
    Newline = "\n"
)
 
func main() {
    flag.Parse() // escaneia a lista de argumentos e configura as bandeiras
    var s string = ""

    for i := 0; i < flag.NArg(); i++ {
        if i > 0 {
            s += Space
        }

        s += flag.Arg(i)
    }

    if !*omitNewline {
        s += Newline
    }

    os.Stdout.WriteString(s)
}

Disputa sobre o nome[editar | editar código-fonte]

Poucos dias após o lançamento da linguagem, Fancis McCabe, desenvolvedor da linguagem chamada Go!, solicitou uma mudança de nome da linguagem do Google, para evitar confusões. McCabe criou Go! em 2003, mas não registrou o nome.[7]

Referências

  1. a b Della Valle, James (12 de novembro de 2009). "Google apresenta linguagem GO". INFO Online Editora Abril [S.l.] Consult. 12 de novembro de 2009. 
  2. a b "FAQ" (em inglês).  Parâmetro desconhecido |acessomesdia= ignorado (|acessodata=) (Ajuda); Parâmetro desconhecido |acessoano= ignorado (|acessodata=) (Ajuda)
  3. a b c "Installing Go" (em inglês).  Parâmetro desconhecido |acessomesdia= ignorado (|acessodata=) (Ajuda); Parâmetro desconhecido |acessoano= ignorado (|acessodata=) (Ajuda)
  4. a b c d e f "Language Design FAQ" (em inglês).  Parâmetro desconhecido |acessomesdia= ignorado (|acessodata=) (Ajuda); Parâmetro desconhecido |acessoano= ignorado (|acessodata=) (Ajuda)
  5. "5.c - go - Project Hosting on Google Code".  Parâmetro desconhecido |acessomesdia= ignorado (|acessodata=) (Ajuda); Parâmetro desconhecido |acessoano= ignorado (|acessodata=) (Ajuda)
  6. "A Tutorial for the Go Programming Language" (em inglês).  Parâmetro desconhecido |acessomesdia= ignorado (|acessodata=) (Ajuda); Parâmetro desconhecido |acessoano= ignorado (|acessodata=) (Ajuda)
  7. Claburn, Thomas (11 de novembro de 2009). "Google 'Go' Name Brings Accusations Of 'Evil'". InformationWeek (em inglês). United Business Media [S.l.] Consult. 12 de novembro de 2009. 

Ligações externas[editar | editar código-fonte]