Os primeiros passos com Golang.
Tags: go, programming, introduction
Published: 2021-01-09 15:36:29

O projeto do Golang foi lançado em setembro de 2007 por <a href="https://en.wikipedia.org/wiki/Robert_Griesemer"> Robert Griesemer </a>, <a href="https://pt.wikipedia.org/wiki/Rob_Pike">Rob Pike</a> e <a href="https://pt.wikipedia.org/wiki/Ken_Thompson">Ken Thompson </a>. O propósito que levou eles criarem a linguagem era <i>"desenvolver uma linguagem de programação que seria fácil de usar" </i>. Segundo <strong> <i>Robe Pike </i> </strong> um dos objetivo seria eliminar a lentidão e melhorar o processo de desenvolvimento do google com foco em produtividade e escalabilidade.

<hr>

Uma breve descrição sobre os criadores.

<strong> 1 - Robert Griesemer </strong>

<cite><strong><i>Robert Griesemer </i></strong> é um cientista da computação suíço. Ele é mais conhecido por seu trabalho na linguagem de programação Go. Antes de criar-la, ele trabalhou no mecanismo JavaScript V8 do Google, na linguagem Sawzall, na máquina virtual Java HotSpot e no sistema Strongtalk. </cite>

<strong> 2 - Rob Pike </strong>

<cite> <strong> <i> Robert C. Pike </i> </strong> é um engenheiro de software e escritor. 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. Ele também trabalhou no terminal gráfico Blit, após ter escrito o primeiro sistema de janelas para o Unix, em 1981. Também escreveu editores de texto como o Same o Acme, que continuam em desenvolvimento e ainda hoje são utilizados. </cite>

<strong> 3 - Ken Thompson </strong>

<cite> <strong> <i> Kenneth Thompson </i> </strong> é 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.Thompson também é conhecido por outros trabalhos, como o sistema operacional Plan 9, suas contribuições na definição da codificação de caracteres UTF-8, tabelas finais e a máquina de xadrez Belle. </cite>

<hr>

Temos varias característica que determina essa linguagem como uma boa escolha para sua lista de linguagem favoritas, que são:

- Compilada.
- Garbage-collected.
- Go Runtime próprio.
- Sintaxe simples.
- Multiplataforma.
- Orientada a Objetos (sem herança).
- Estaticamente e fortemente tipada.
- Concorrente.
- Suporte a clossures.
- Funções de múltiplos retornos.
- Ponteiros.

A sintaxe da linguagem tem em torno 25 palavras-chaves, ou seja, sintaxe curta, com isso proporcionando um jeito simples de entender o que está acontecendo nos seus programas.

<hr>

Golang é para ser rápido, como já mencionado, e trabalha com concorrência e paralelismo.

<strong> 1 - Concorrência </strong>

<cite> <strong><i>Concorrência </i> </strong> ocorre quando existem dois ou mais processos executados em simultâneo; mais especificamente, o termo é utilizado quando processos disputam o acesso a recursos partilhados. </cite>

<strong> 2 - Paralelismo </strong>

<cite> <strong><i> Paralelismo </i> </strong> é uma forma de computação em que vários cálculos são realizados ao mesmo tempo, operando sob o princípio de que grandes problemas geralmente podem ser divididos em problemas menores, que então são resolvidos concorrentemente (em paralelo). </cite>

Com isso, chegamos ao goroutine, que é uma função que pode ser executada simultaneamente com outras funções. Tendo em vista que podemos considerá-las como threads, mas com diferenças entre si.

<cite> <strong> <i> Goroutines </i> </strong> são extremamente baratas quando comparadas com threads. Elas ocupam poucos kb no tamanho da pilha, e a pilha pode crescer e encolher de acordo com a necessidade da aplicação, enquanto que no caso de threads o tamanho da pilha deve ser específico e fixo. </cite>

Para aprimorar a <strong> <i> goroutines </i> </strong> podemos utilizar o <strong> <i> Go Channels <i/> </strong> (que servem como conectores).
Nos <strong>channels</strong> podemos enviar valores para os canais com o intuito de compartilhar dados entre os <strong> <i> goroutines </i> </strong>.

Com base em todas as característica porque não realizar a instalação ?
A instalação é muito simples, segue nos sistema <strong> MacOs </strong> e <strong> Linux </strong>.

<strong> 1 - MacOs </strong>

```sh
$ brew install golang
```

<strong> 2 - Linux </strong>

```sh
$ apt install golang
```

Para validar se o golang foi instalado conforme esperado segue o comando:

```sh
$ go version
```

A saída esperado para o comando acima é:

```sh
$ go version go1.15.6 darwin/amd64
```

<hr>

<strong> Conclusão. </strong>

Existem muitas característica que podemos levar em consideração a aprender golang hoje.
Esse é o primeiro de muitos artigos que você irá vê por aqui. : )

<strong> Aguardem próximos capítulo. </strong>