Back-End

17 mar, 2016

Trabalhando com Go (GoLang), a linguagem do Google

Publicidade

Em uma palestra ministrada por meio do Google Developers São Paulo no auditório da 7COMm, conhecemos a Go, ou GoLang, linguagem criada pelo Google para suprir necessidades cada vez maiores por computação concorrente e velocidade de processamento.

O Google Developers São Paulo

go-1

A iniciativa Google Developers tem como intuito unir as comunidades de desenvolvedores com foco em inovação, novas tecnologias e, obviamente, tecnologias Google.

Conforme as últimas estatísticas, existem 580 GDGs espalhados por 98 países, nos quais foram realizados 3.991 eventos nos últimos 6 meses.

Desses 580 GDGs, temos o orgulho de ser o segundo no mundo, perdendo apenas para o de New York. Valeu, comunidade dev!

go-2

A 7COMm, nosso host da vez

go-3

A 7COMm é uma das empresas mais tradicionais no ramo de tecnologia no Brasil, com 30 anos de mercado. Ela está presente nas maiores e mais influentes organizações brasileiras, e disponibiliza seu espaço para eventos da comunidade de tecnologia sobre os mais diversos assuntos, sempre estimulando a evolução profissional e pessoal de todos – metade dos organizadores do Google Developers São Paulo trabalha na 7COMm.

Go Lang – a linguagem do Google

A Go é uma linguagem que nasceu em 2007 com três necessidades básicas do Google: desempenho, escalabilidade e facilidade de manutenção.

Com esses objetivos em foco, o Google montou um time de especialistas com ninguém menos do que Rob Pike, Ken Thompson e Robert Griesemer, gurus da tecnologia, colaboradores chave de projetos como o sistema UNIX, o padrão UTF-8, o motor JavaScript V8, entre outros.

Em 2009, ele foi oficialmente lançado, ficando em fase beta até 2011 – o que chamam de fase Pré-Go, que foi até o release 60. A partir de então, a Go evoluiu constantemente e hoje está na versão 1.6.

Por que Go?

O Google, cansado de ter de gerir projetos com complexidade cada vez maior em tecnologias já conhecidas (principalmente em Python), percebeu que seria economicamente viável produzir uma linguagem do zero, que suportasse nativamente o que importa, facilitasse a programação para o desenvolvedor e acelerasse o desenvolvimento e a evolução de projetos complexos. Dessa forma, a empresa definiu algumas diretrizes que caracterizam o Go:

  • Programação concorrente/paralela nativa: Chega de usar bibliotecas e extensões para habilitar essa funcionalidade.
  • Desempenho: Baseado em C, é altamente otimizado.
  • Multiplataforma: Atualmente possui versões para Linux, Windows, Mac OS, FreeBSD e mobile.
  • Open Source: Permite à comunidade evoluir continuamente a solução – atualmente são mais de 850 colaboradores.
  • Facilmente escalável: Permite a escalabilidade ser feita de maneira quase transparente.
  • Compilado: Fornece desempenho que apenas código compilado é capaz de fornecer, por meio de dois compiladores, o gc e o gccgo.
  • Garbage Collector Nativo: Recurso muito apreciado em linguagens de alto nível como C# e Java, o Google incorporou o Garbage Collector para facilitar a vida do programador, que não precisa mais se preocupar em “limpar seu rastro” na memória.
  • Memory Safe: O Go tem uma gestão própria de memória e threads transparente ao programador, fazendo a gestão de forma automática, evitando os famosos problemas da linguagem C de alocação e invasão de memória.
  • Simplista ao extremo: Como o foco é a velocidade, a simplicidade anda junto e foram removidos recursos de linguagens de alto nível, como Classes, Heranças, Overloads de Métodos, Try/Catchs, Ternários etc. O foco é sempre a simplicidade, para o desenvolvedor que pegar o código perceber as funcionalidades assim que abrir o arquivo .go.

Por onde começar

Site oficial do Go, contendo todas as informações e documentações que podem ser acessadas: https://golang.org/.

Playground do Go, para programar e testar à vontade, sem ter que montar o ambiente na sua máquina: https://play.golang.org/.

Um passeio por Go, onde é possível aprender, programar e testar no próprio browser o seu código em Go. São diversas lições baby steps que abordam desde o famoso Hello World até as funções mais complexas do Go:
https://go-tour-br.appspot.com/welcome/1.

Go by Example, site excelente se você é autodidata e prefere, assim como eu, se basear em exemplos para entender a lógica e a sintaxe sozinho: https://gobyexample.com/.

Comparativos

Na Internet, há uma série de comparativos entre Go e outras linguagens. De certa maneira, os comparativos são algo desnecessário, pois nenhuma das linguagens existentes foi feita para lidar com computação concorrente nativamente, portanto, para essa função, não há páreo para o Go.

Há muitas críticas ao Go em comparações com Python, Java, Scala, NodeJS etc., porém o próprio projeto do Go define que “se seu objetivo principal não é desempenho e computação concorrente, o Go não é pra você :-)”.

Go vs NodeJS

go-4

Vamos combinar, se o Go foi desenvolvido com o foco em desempenho pelo próprio criador do Motor V8, que é a engine do NodeJs, quem você imagina se sair melhor nessa? 🙂 Veja mais detalhes aqui.

Go vs Java

go-5

Java não é compilado, Java não é nativamente capaz de paralelismo, logo… http://mrcook.uk/golang-vs-java-performance.

Go vs Python

go-6

O Google “fugiu” do Python e criou o Go por algum motivo, concorda? Confira mais detalhes aqui.

Outras linguagens

Podemos passar horas discutindo sobre as outras linguagens, e já existem artigos de comparativos de muitas linguagens que teoricamente seriam concorrentes, como Scala, Ruby, Rust, .Net, Swift, Express, Flask, Unicorn, Puma, Pypy, JavaScript V8, Elixir, Haskell, Erlang, D, C++ etc.

Conclusão

O Go não é a solução definitiva para todos seus problemas, é a solução ideal para parte deles.

Cada linguagem é boa na sua especialidade e otimizada para tal, ficando a cargo da empresa decidir qual se adapta melhor à sua necessidade, ao seu time de desenvolvimento e ao seu parque tecnológico, muitas vezes culminando na adoção de diversas tecnologias simultaneamente para, em conjunto, fornecerem uma solução com a eficiência calculada para cada parte dela (eu ouvi Micro Services? Assunto pra outro artigo 🙂 ).

Assista à palestra na íntegra

Links