Google Developers São Paulo – Conhecendo o Go (GoLang), do Google

Please log in or register to like posts.
News

Nessa palestra ministrada através 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

Google Developers São Paulo
Google Developers São Paulo

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 (https://developers.google.com/groups/),  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 2º no mundo, perdendo apenas para o de New York, valeu comunidade dev!


A 7COMm, nosso host da vez

7COMm 30 anos
7COMm, o host da vez

A 7COMm é uma das empresas mais tradicionais no ramo de tecnologia no Brasil, com 30 anos de mercado, está presente nas maiores e mais influentes organizações brasileiras, 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 trabalham na 7COMm.


GoLang – A Linguagem do Google

A Go é uma linguagem que nasceu em 2007 com 3 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 a 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é a release 60. A partir de então a Go evoluiu constantemente, atualmente estando na versão 1.6


Por quê Go?

O Google, cansado de ter de gerir projetos complexidade cada vez exponencialmente maiores 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 ao desenvolvedor a sua programação e acelerasse o desenvolvimento e evolução de projetos complexos, dessa forma 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
  • Multi Plataforma;
    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, através de 2 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 dos mesmos 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, foram removidos recursos de linguagens de alto nível como Classes, Heranças, Overloads de Métodos, Try/Catchs, Ternários e 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 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, aonde é 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 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 e 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 vs NodeJSVamos 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? 🙂
http://www.hostingadvice.com/blog/nodejs-vs-golang/

Go vs Java

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

Go vs Python

Python vs Go
O Google “fugiu” do Python e criou o Go por algum motivo, concorda?
https://robleshermoso.wordpress.com/2009/11/11/benchmark-a-golang/

Outras Linguagens

Podemos passar horas discutindo sobre as outras linguagens, 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

Curta este artigo :)

Deixe uma resposta