Executando verificação de segurança...
2
R1ck
1 min de leitura ·

E se a linguagem Go não é isso tudo?

Antes que me ataquem, vou dizer qual o ponto que quero desenvolver. Comparem: se for o que você imaginava, pode me xingar.

Meu ponto (resumido): talvez o golang não foi feito para criar qualquer API. Quando digo qualquer, quero dizer as mais simples. Talvez seja umaoverkill (matar uma formiga com uma bazuca)? É isso que eu quero saber.

Bem, não cheguei nessa dúvida de um dia pro outro. Já trabalhei com a linguagem como freelancer - talvez isso seja um dos principais motivadores para dúvida, já que, não tendo um padrão de projeto formalizado, eu facilmente cairia nessa cilada - e a maior parte dos meu projetos faço utilizando essa linguagem.

A linguagem tem uma filosofia de evitar o uso desnecessário de dependências de terceiros - já que ela possui uma biblioteca incrível. Mais outro possível ponto que tenha me influênciado, esse universo das libs.

Go tem uma estruturação difícil, um paradigma que eu nem sei como começar a defini-lo (se é funcional, orientado a objetos, etc.). Para conseguir fazer um estrutura hexagonal? É complicado. Mas, novamente, pode se dar pelo fato de eu não saber como estruturar um projeto de forma hexagonal, ou seja, inexperiência.

Isso daqui não é um ataque que estou fazendo à linguagem, mas um relato da minha experiência com ela. Seria interessante se você falasse como é sua experiência com a linguagem que trabalha, mesmo que não seja em Go.

Carregando publicação patrocinada...
6

Sou dev em uma empresa do ramo de saúde, por padrão usamos uma stack muito bem estabelecida baseada em Java+Spring. Lidamos essencialmente com aplicações rodando em backend, com disponibilidade 24/7.

Esse ano iniciamos uma iniciativa que seria focada em redução de custos. Nosso desejo é migrar a maioria das aplicações para funções lambda, essas que serão escritas em Go. Esse projeto visa uma economia de 90% no total do custo dos serviços que serão migrados.

De um tempo pra cá, tenho me focado em aprender e usar Go para qualquer tarefa no meu dia a dia. Preciso realizar uma busca no banco? Vou fazer em Go. Preciso percorrer uma planilha para metrificar algo? Golang. Até mesmo chamar APIs internas para teste, faço tudo em Go.

Não acho que Go foi feito pra tudo. A simplicidade de projetos Go muitas vezes são um ponto negativo dependendo do projeto; as vezes ter um projeto verboso e com muitos arquivos, porém em um paradigma que já é amplamente reconhecido, é 1000x melhor. Pelo menos pra mim.

Apesar disso, também não vejo Go como um overkill. Nessa comparação, pra mim seria como matar uma formiga com uma espada. Extremamente afiada e requer alguma habilidade, mas é leve e portátil, e funciona bem.

Uma frase que gosto bastate do livro O Programador Pragmático é Não reinvente a roda, a menos que precise de um entendimento melhor da roda. Go tem muito disso, te possibilita usar a roda pronta, mas também reinventa-la para entender os conceitos.

2

Primeiramente: Obrigado pelo comentário!

Eu percebi uma coisa bem crucial no teu contexto que contrasta com a minha situação: você tinha um objeitvo traçado antes de sair programando. Bem, em contrapartida, eu sou daquele tipo de programador que tenho várias ideias - boas, por sinal, tenho que confessar -; porém não as planejo como deveria, apenas quero ter a ideia pronta antes mesmo de saber realmente o que eu quero.

Sabe o mais interessante disso tudo? Eu já sabia disso, mas, ao menos tempo, eu esqueci desse pequeno detalhe. Ou, melhor, eu o considerei tão "irrelevante" que deixei passar. Olha a "irrelevância" dando trabalho para a minha produtividade.

E por isso, novamente agradeço por este comentário. Sem ele não teria chegado a reflexão de que o meu erro estive um passo anterior (aquele meme de que o problema não está no computador, mas no que está entre a cadeira e o computador).

Programar não é somente escrever código, mas resolver problemas usando o código. Na correria do dia-a-dia eu acabei esquecendo dessa verdade e deixei o essência da profissão fugir das minhas mãos.

Já tinha ouvido essa a frase "Não reinvente a roda, a menos que precise de um entendimento melhor da roda" em tempos diferentes (situações diferentes). Atualmente, eu estou ainda estou buscando o sentido apropriado do que me ocorre.

1

Se implementar em TypeScript ou Ruby, será muito rápido pra fazer, e com uma performance razoavelmente boa, dependendo da demanda. Mas com Go, além da excelente performance, irá consumir menos recursos em Cloud caso a demanda aumente. É uma decisão meramente técnica, depende da necessidade imediata ou futura.

Eu tenho feito tudo em Go. Para algumas coisas demora mais pra fazer, mas no final vale a pena pelo menor consumo de recursos e melhor performance.

1

Sim. Nunca estudei a fundo pra entender exatamente por que o Go é mais leve em comparação com outras linguagens. Se não me engano, tem a ver com o fato de ele gerar binários bem leves — algo nessa linha.

Eu sei que dá pra fazer praticamente tudo com Go, mas nem tudo é viável, como acontece com qualquer linguagem. Meu problema real está mais no “como fazer” — se estou fazendo da melhor forma possível. Isso vem de um trauma que tive por me sentir só mais um programador de JavaScript. Em Go acabou virando algo mais profundo.

A organização de projetos em Go é algo que sempre achei meio complicada. Já testei várias abordagens em diferentes projetos, mas nunca fiquei realmente satisfeito com nenhuma das estruturas (ou arquiteturas) que usei. Sempre senti que não estava aproveitando o melhor que a linguagem oferece nesse sentido. Talvez isso aconteça porque o Go não segue um paradigma muito bem definido — o que, em alguns casos, ajudaria bastante, mas acaba atrapalhando.

A liberdade que o Go oferece é uma faca de dois gumes: se você não souber usar, acaba se cortando. Já linguagens como Java e C# têm uma estrutura mais rígida, que nos dá uma noção mais clara de como organizar um projeto.

Conseguiu pegar a linha de raciocínio?