Golang

Go é uma linguagem estáticamente tipada criada pelo Google em 2007. Basicamente focada em rápida compilação/execução, trabalha com concorrência e paralelismo como a base da arquitetura.

Mas antes de mais nada: amo ruby! Vim para o mundo web em 2008 através de Servlets do Java e no ano seguinte encontrei, como muitos, no Rails o divisor de águas. Ruby é uma linguagem que resgata alguns sentimentos de quem gosta de programar, como produtividade e diversão.

A Loldesign só existe por causa do Rails. Isso posso afirmar sem medo algum. Madrugadas e madrugadas estudando na casa de amigos, fazendo frellas aos sábados a base de pizza e strogonoff do nosso amigo/chef Pablo, no que podemos chamar de pré-loldesign. Dessa forma aprendi todo o necessário para sair do Java e conseguir um emprego como desenvolvedor Rails. Eram meados de 2010.

Apesar de já conhecer um pouco de Go, apresentado pelo meu amigo Marcio Lopes, que fez um projeto que importava mais ou menos 1.5 milhões de registros de um banco mySQL e passava para o MongoDB em 2012, foi somente em janeiro de 2013 que veio o meu primeiro projeto.

Go é absurdamente fantástico e está no caminho de ser minha primeira linguagem. Toda a primeira impressão que tive com ruby/rails, os pensamento por trás, facilidade (quem já configurou XML para Servlets sabe do que estou falando), duck typing, blocos e afins estão no Go. Não as implementações, mas a filosofia.

As features da linguagem você pode buscar em ótimos materiais que temos por ai, como Go Tour, Go by Example, palestras, screencasts, slides e livros Eu já fiz duas apresentações na Vizir e na AchieveMore sobre como aprender o básico. Segue o link aqui.

Como está no título do post, eu quero falar de paixão. Programar pra mim é uma paixão antes de ser meu trabalho e fonte de renda para a familia que estou criando. Sou muito curioso e estou sempre testando linguagens, metodologias e frameworks. Nesse cenário já me deparei maravilhado com várias coisas. Scala, por exemplo. Mas Go é diferente.

Todo mundo tem um projeto/ideia que adora implementar quando está aprendendo algo novo. To-Do lists e blogs devem ser as mais famosas. Eu também fazia isso, mas depois do quarto blog na quarta linguagem a coisa fica chata. Hoje em dia uso um crawler de notícias do São Paulo FC como experimento. Usei ele a primeira vez para aprender Scala. Linguagem funcional, com várias ideias legais que forçaram o meu cérebro a pensar diferente até hoje. Foram 3 meses de estudos até a primeira versão do Soberano (como chamamos aqui na Lol) ir para a produção.

Usei bastante Scala no tempo que passei na Locaweb, mas o tempo passou, sai da Locaweb e o Scala ficou de lado. Eis que vem o Go. Seguindo o fluxo, fui implementar uma versão do Soberano nele, afim de aprender mais. E ai que vem o pulo do gato: em 3 dias eu tinha uma versão em produção. Não sou o mito da programação, muito menos já tinha modelos e o fluxo do projeto modelado na minha mente. Simplesmente Go é muito rápido, tanto do ponto de vista computacional quanto na curva de aprendizado.

A partir dai outros projetos vieram. Alguns de brincadeira, outros para melhorar nossa vida na empresa (automatização de backups), outros ajudando a comunidade e alguns projetos profissionais, como quando fizemos uma versão mini (beeeeem mini haha) de um serviço similar a DropBox para um cliente usando Go, Rails e node.js :)

Tudo lindo, mas:

Pra que aprender mais uma linguagem? O que vou poder fazer em Go?

Nossa profissão é uma eterna busca por melhoras. Melhores práticas, melhores técnicas e melhores linguagens. E vamos assim para sempre, uma vez que não existe nada perfeito. O legal é que aprendendo Go, independente se for trabalhar com ela daqui pra frente, te faz ter outra visão de programação e melhorar o seu código. O código ruby do dia-a-dia. Scala fez muito bem esse serviço pra mim.

Em relação a segunda, gosto de fazer API’s, coisas que mexem com o sistema operacional (ssh, rsync). A biblioteca padrão é bem completa para coisas com http, json, criptografia, syscall.

Hoje já existem dezenas de projetos, para N tipos de domínios. O mais famoso é o Docker. Fora a comunidade, especialmente no Brasil, que está crescendo com grupos e meetups.

Faça o teste usando o play.golang.org. Tenho certeza que, no minimo, você vai se divertir bastante. Sua carreira agradece.

by Marco Singer

comments powered by Disqus