GO: A linguagem de programacao do Google

Adriano Popovicz - Paulo Mauricio Haddad Filho

GO é uma linguagem de programação de código aberto criada pela empresa Google. Lançada em 2009, ela possui um foco em programação concorrente, onde o sistema operacional visa executar várias tarefas ao mesmo tempo, aproveitando o tempo em que o processador ficará ocioso. Seu código foi baseado em funções do sistema operacional Inferno, e seus criadores são: Robert Griesemer, Rob Pike e Ken Thompson

Robert Griesemer é um cientista de computação. anteriormente ao Go, ele trabalhou na engine JavaScript V8 da Google, a linguagem Sawzall, na maquina virtual Java HotSpot, e no sistema Strongtalk.

Kenneth Thompson é um cientista da computação, conhecido pela sua influência na criação do sistema operacional UNIX, pela invenção da linguagem de programação B, antecessora da linguagem de programação C.

Robert C. Pike é um engenheiro de software e escritor, ele foi responsável pelo projeto dos sistemas operacionais Plan 9 e Inferno, e da linguagem de programação Limbo, quando trabalhou na equipe que desenvolveu o sistema Unix, nos laboratórios Bell.

Go é uma linguagem de programação compilada, isto garante uma vantagem em relação a programas interpretados, já que ao compilar um programa o compilador analisa o código procurando erros de sintática, mas também de semântica, evitando que erros sejam encontrados quando o código esta em execução, e também possuem a vantagem de serem convertidos para linguagem de maquina que tendem a serem mais rápidos do que linguagens interpretadas.

Go apesar de ser uma linguagem compilada possui vantagens vistas em linguagens interpretadas. Um exemplo de praticidades de linguagens interpretadas que o Go possui é na declaração de variáveis, que pode ser dado com ou sem a inferência de tipos, como pode ser observada na imagem abaixo:

A principal mentalidade quando a linguagem Go foi criada foi a intenção de dar aos programadores uma outra opção de linguagem de alto desempenho além do C, pensando nas necessidades mais modernas como a concorrência e evitar uso de gerenciamento de memoria em código, dando também um suporte simplificado a concorrência.

Comparado a outras linguagens que utilizam, o Garbage Collector, uma função que tenta recuperar recursos de memoria que estavam sendo utilizados por objetos que não estão mais sendo utilizados pelo programa, no Go possui uma vantagem as implementações em outras linguagens já que no Go ele é uma função que está presente no conceito da criação do programa sendo assim uma função presente no Core do sistema, gastando assim menos recursos do que a implementação em outras linguagens

Sua sintaxe é bem parecida com a linguagem C, sendo programada de forma estruturada mas possuindo características de linguagens interpretadas, uma das diferenças entre as duas, é que GO não usa parênteses nas funções for e if. Suas declarações são feitas em forma de Pascal limpo.

Outras empresas além da Google fazem uso do Go, como por exemplo a Microsoft no seu serviço de nuvem Azure, e o software de containers Docker que foi escrito em Go.

Características únicas:

Alguns exemplos de códigos na linguagem GO:

Olá, Mundo!
package main

import "fmt"

func main() {
	fmt.Println("Olá, Mundo!")
}

ECHO
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)
}

Curiosidades: