A linguagem GO

O começo de tudo

O panorama das linguagens de programação tem mudado drasticamente nos últimos anos. Essa coisa toda de linguagem de programação de alto nível começou com a linguagem C No clássico o trabalho do Brian Kernighan e Dennis Ritchie – The C Programming Language

logotipo GOLANG

Evolução do panorama

Posteriormente surgiram linguagens mais sofisticadas como Java, C# (.Net com um conjunto variado de linguagens suportadas na plataforma), JavaScript (dominando o cenário na WEB), TypeScript (trazendo tipagem forte para o JavaScript – patrocinado pela Microsoft). A Apple também não ficou atras e lançou recentemente uma Linguagem chamada Swift com tipagem forte que usa o LLVM – mesmo compilador usado pela National Instruments no LabView. Esta linguagem é uma grande evolução em relação a anteriormente usada pela Apple, Objective C. Swift merece um post exclusivo para discutir as vantagens implementadas.

Neste post falaremos da linguagem GO patrocinada pelo Google e de código livre. Ela surgiu em 2009 e gera código nativo nas plataformas Windows, Linux, FreeBSD e MAC OSX. A sintaxe é semelhante a linguagem C com algumas variações na gramática que estão relacionadas a declaração de tipos e ausência de parênteses nas estruturas FOR e IF, por exemplo. Ela também possui coletor de lixo (garbage colector) e um modelo de concorrência robusto. Não possui programação genérica, nem herança, nem tratamento de exceção com try catch. Também não aceita sobrecarga de métodos. Você pode, porém, usar programação funcional com clausuras. Vetores associativos fazem parte da estrutura da linguagem (algo parecido com o feito no Javascript). GO também suporta UTF-8 e pode converter de UTF-16 também.

Os compiladores GO usam a infraestrutura GNU, largamente usada em todas as plataformas.

Um programa GO começa com a declaração do pacote ou seja espaço de nomes (namespaces). Em seguida vem as declarações de importação de pacotes.

O programa principal deve declarar o método via palavra reservada func e o nome deste método deve ser main.

Em seguida usamos as estruturas da linguagem juntamente com os pacotes importados para criar as funcionalidades desejadas.

package main

import "fmt"

func main() {
    fmt.Println("Hello, 世界")
}

As estruturais existentes são aquelas típicas de sequência, seleção e repetição e como já foi provado bastam essas estruturas para resolver qualquer problema de computação.

A clausura ajuda não questão de guardar estado e permitir implementação da abordagem funcional.

Existe um site bastante útil que mostra as características da linguagem através de exemplos

A instalação da linguagem no ambiente MAC OSX da Apple é bastante simples. O mesmo ocorre no ambientes Linux e FreeBSD. No Windows você pode usar o arquivo .msi adequado a sua plataforma (32 ou 64 bits). Veja este link para Download

A propósito a linguagem GO dera código bastante eficiente e também possui pacotes nativos para lidar com o sistema de arquivos com os processos, com o ambiente e com as interfaces de rede. Você pode implementar um servidor HTTP em poucas linhas de código, como mostrado no exemplo abaixo.

Uma coisa muito em importante sobre GO é o fato do Docker usar a linguagem GO Na sua implementação. Como benefício disso você tem a possibilidade de criar Imagens de Contêineres usando a linguagem GO.

Exemplos comentados

Veja também alguns exemplos comentados neste link e deixe sua dúvida e opinião aqui no Blog.

Integracão GO com Docker.

Neste projeto do Github você pode acessar dois Dockerfiles. Um deles cria um contêiner Docker para desenvolver código GO (diretório dev) e o outro cria um contêiner Docker para colocar este código em produção sem a necessidade de se carregar um Linux completo tal como Debian ou Ubuntu (diretório prod). O contêiner de produção ficou com menos de 6 MB. Incrivel, não é mesmo ?