Executando verificação de segurança...
10

Golang ou Rust

Salve galera.

To com um tempinho livre e gostaria de aprender uma nova linguagem de programação.

Trabalhei 2 anos com PHP e estou trabalhando a 3 anos com Node.Js

Estou com dúvida entre, Golang e Rust. Alguém com experiência ou conhecimento pode me responder umas dessas perguntas:

  • Qual tem a sintaxe mais enxulta e consequentemente uma menor curva de aprendizado?
  • Eles tem algum framework ou ambiente de desenvolvimento
  • Qual tem mais vagas e paga melhor?

Se alguém achar que não é uma boa ideia nenhuma das duas fico a aberto a sugestões de outras linguagem (Tirando python, java e c# que eu já estudei)

Grato:)

Carregando publicação patrocinada...
6

Obrigado por fazer perguntas objetivas para tomar a decisão em vez de pedir subjetivamente o que nós escolheríamos para você, é um alento ver isso e dá mais vontade de ajudar.

Qual tem a sintaxe mais enxulta e consequentemente uma menor curva de aprendizado?

Sintaxe não costuma ser responsável pela curva de aprendizado ser maior ou menor. Semântica e mecanismos específicos são muito mais importantes.

Até acredito que Rust tenha uma sintaxe mais complicada, mas certamente semântica e mecanismos de Go são bem mais simples que Rust e qualquer pessoa aprenderá mais rápido, facilmente e ainda usará com mais tranquilidade. Rust preferiu uma semântica que permite mais eficiência, controle e robustez que Go e cobra o preço de ser uma linguagem mais difícil.

Eles tem algum framework ou ambiente de desenvolvimento

Até onde eu sei, não, ainda bem. Claro que existem frameworks criados para rodar com eles, mas para tarefas específicas, não para tudo, ainda bem. É assim que deve ser. É assim com as linguagens preferidas para fazer engenharia de software. Outras linguagens podem estar vinculadas com frameworks porque o objetivo é outro. Se ter esse tipo de coisa é importante então essas linguagens não são para você.

E sobre IDEs, se eu entendi o que quer, também nada específico, tem vários que são usados por programadores delas e que servem a outros propósitos, por exemplo hoje se uma linguagem não tiver suporte no Visual Studio Code ela é muito nichada. Frequentemente existem outros, com maior ou menor qualidade.

Em geral quando começa usá-las verá nas páginas oficiais ou extra oficiais (tipo as de awesome do produto) listas de IDEs, frameworks, bibliotecas e outras ferramentas disponíveis para elas.

Não começa a aprender efetivamente qualquer uma delas sem pesquisar muito . Não deixe pessoas aleatórias na internet definirem o que você vai escolher, faça sua pesquisa, conheça os dois produtos, não profundamente, mas o suficiente para tomar sua decisão, e fazendo isso terá essas perguntas respondidas por você. E se não fizer isso tanto faz qual decisão vai tomar porque o resultado não será bom. Resultado vem quando a atitude é correta.

Qual tem mais vagas e paga melhor?

Salário é virtualmente impossível responder. Frequentemente essa informação é falsa e irrelevante porque cada um ganha o que merece (sob certo ponto de vista bem pragmático) e não o que divulgam por aí.

Mas minha percepção, se tentar linearizar Rust tem uma tendência de pagar um pouco melhor, justamente porque exige que o profissional seja melhor para trabalhar com ela de forma adequada. E tem concorrência menor já que a maioria vai aprender mais ou menos ou vai desistir no meio do caminho, até por outras razões.

Porém terá menos vagas, segundo minha percepção. Rust é uma linguagem para uso bem mais específico que Go. Quase ninguém está usando, especialmente no Brasil. O grosso do que existe é projeto aberto e gratuito que não dá renda para ninguém.

Tudo tem mérito, vantagens e desvantagens.

Se quer achar vagas facilmente, provavelmente outra linguagem será melhor. Mas a concorrência também será maior. Ninguém sabe ao certo qual é a relação, inclusive porque não pode só pegar o número absoluto. E o que você vai se dar bem não é o mesmo que a média do que acontece com o todo, e novamente, ninguém sabe qual é. Mesmo que alguém conduza um estudo sério ainda poderá ter viés. E depende também da região e outras condições. Então não perca tempo tentando achar o que é melhor nisso, é tudo ilusão. O que faz acontecer é sua capacidade. Mas se quero número absoluto de vagas, essas duas são das que menos tem vagas, exceto as que nem são conhecidas. Dá para achar entre 10 e 20 linguagens com mais vagas, especialmente sobre Rust.

Pra ser bem sincero e fazendo o que eu digo que não deve aceitar que façam para você, eu aprenderia as duas, e outras como Kotlin, Swift, Ruby, Lua, TypeScript, Dart, provavelmente C e C++ (separadamente), talvez algum Pacal, Julia, Erlang, Elixir, Perl, D, Lisp, Haskell, F#, Hack, Nim, Zig, Groovy, Scala e outras.

É sério. Eu gosto de aprender várias linguagens, acho útil e ajuda entender melhor toda a computação, mas tudo superficialmente, só para conhecer. Em 40 anos eu consegui "dominar" 2 1/2 linguagens (uma delas só a parte que me interessa, pouca cosia das novidades colocadas nela neste século porque não vejo valor, e teve mais uma que dominei na época, mas hoje é virtualmente impossível usar), e dezenas de outras que conheço. Se você consegue dominar várias em pouco tempo eu vou te chamar de gênio e vou questionar porque está fazer essas perguntas aqui.

Eu se fosse você, e claro, não sou, faria isso, aprenderia várias linguagens meio por cima e escolheria, por conta própria, uma, duas, quem sabe três para dominar. E se acha que domina essas que já aprendeu você é um gênio. O objetivo deveria ser aprender "todas" as linguagens que puder, mas só para ter noção de como as coisas funcionam, e virar referência em uma ou duas linguagens. Se fizer diferente disso ficará pior que um pato e não aproveitará bem. Tentar aprender seriamente mais que 3 ou 4 linguagens de programação (pode aprender outras linguagens) eu deixo para os gênios ou para os que não tem as limitações que eu tenho.

Coloquei dominar entre aspas, porque algumas linguagens são grandes demais para dominar todos os aspectos. Tem linguagem que até o criador já tem dificuldade de acompanhar tudo nela. É muita petulância a pessoa achar que domina algo de verdade.

Só a título de curiosidade, eu ainda aprenderei superficialmente várias linguagens, de fato estou "aprendendo" uma agora que acabei de descobrir, mas sequer vou baixar o compilador, de tão obscura que é (duvido que me aprofundei um pouco mais em outras, exceto quando sair o compilador de Jai), vou continuar melhorando meu "domínio" de apenas uma linguagem, e TALVEZ (enorme mesmo) eu vá aprender seriamente uma única linguagem nova, uma que só eu aprenderei, de tão obscura que ela será. Estou prestes a semi-aposentar. Só vou fazer algo que gere dinheiro fácil, ajude as pessoas sem interesse secundário ou gere grande orgulho para mim.

Quando têm perguntas objetivas fico mais seguro em dar uma resposta subjetiva.

Faz sentido para você?

Espero ter ajudado.


Farei algo que muitos pedem para aprender a programar corretamente, gratuitamente. Para saber quando, me segue nas suas plataformas preferidas. Quase não as uso, não terá infindas notificações (links aqui).

1

Cara obrigado pela respota. Gostei da dica de conhecer um pouco de cada uma para tomar a decisão e me aprofundar somente em uma.

Obrigado mais uma vez em tirar um tempo e me ajudar.

2

Trabalho no Mercado Livre, e usamos Go, inclusive Go foi incorporada bem depois do Java e hoje e até mais usada.

O Go é muito rápido, aproveita bem os núcleos do processador, trabalha muito bem com milhares, até milhões de requisições em simultaneo, tem GB(Garbage Collector) ao contrário do RUST, é compilado, gera um único binário, ou seja tu só precisa subir um arquivo para produção no deploy, tem um ecossistema enorme por trás que só vem crescendo, além de ser mais simples de aprender.

Na minha opinião, vai depender do projeto. Tu não ver Go em aplicações onde tu precisa de CRUD por exemplo, pra isso tu tem Java, Node, PHP, entre outras que possuem grandes ecossistemas por trás que vão te atender melhor para essa finalidade.

O Go se destaca em tarefas que exigem grande concorrência, paralelismo ou seja muito bom para sistemas que possuem throughput muito alto.

Outro ponto é que tem diversas vantagens e cases de sucesso no Mercado, mas ainda tem poucas pessoas que dominam de fato essa tecnologia, então os salários de engenheiros de softwares que dominam essa tecnologia tendem a ser relativamente atraentes.

Ponto negativo é que não é Orientado a Objetos.

Agora sobre Rust, o que eu sei é que é usado muito por empresas fora do país, mas não tem ainda muita penetração do Brasil.

1
1

Ponto negativo é que não é Orientado a Objetos.

Na verdade, é sim possível, embora não seja muito popular. Veja:

package main

import "fmt"

type Pessoa struct {
    Nome string
    Idade int
}

func (p Pessoa) Apresentar() {
    fmt.Printf("Olá, meu nome é %s e tenho %d anos.\n", p.Nome, p.Idade)
}

func main() {
    pessoa1 := Pessoa{Nome: "Alice", Idade: 30}
    pessoa1.Apresentar()
}
1

Qual seu objetivo com o aprendizado dessas linguagens?

Eu trabalho com Go e me considero bem remunerado e em projetos interessantes.
Aqui comentei um pouco sobre Go e talvez possa te trazer mais informações a respeito.

Tanto Go quanto Rust estão em curva ascendente de adoção e devem continuar assim pelos próximos anos, então oferecem boas oportunidades para surfar a onda. Ambas as tecnologias estão vendo adoção em desenvolvimento web, CLIs e em crypto.

Talvez a grande diferença seja na curva de aprendizado, dado que Rust é uma linguagem funcional e um novo paradigma de programação é sempre desafiador.

Se pensarmos em framework como Laravel ou React, Go não tem e acredito que Rust tb não. Go chega perto com o Buffalo. Se pensarmos em bibliotecas que aceleram o desenvolvimento, Go as tem para várias coisas, sobretudo para desenvolvimento de APIs.

Acredito que Rust tem vagas com remuneração mais alta mas são menos vagas. Ambas as tecnologias estão entre as que pagam melhor no mercado.

1

Maniero ai abaixo respondeu bem suas perguntas. Se aprender as duas não é uma opção eu aprendeeria o Rust ja que esta te ensinaria mais coisas do que o Golang ja que vc ja sabe PHP e Node.js

1
1

Cara vou te dar meus dois centavos de contribuição.
Na minha visão: aprende Go, atualmente tem mais mercado e uma sintaxe mais "fácil", coloco dessa forma porque isso é relativo.
Eu comecei estudando Rust, a famosa linguagem mais amada do Stackoverflow, entretanto me deparei com uma curva de aprendizado enorme e alguns conceitos diferentes (borrow e meio que deixei de lado por enquanto.
Mas é tudo minha opinião, testa cara, pega pelo menos o básico e da uma olhada...

1
1
0
1

Vamos ponto a ponto.

  1. golang, ela foi desenhada para ser absurdamente simples.
  2. vscode pras duas, esquenta a cabeça com isso não.
  3. Golang, mas por eliminação ja que ambas não são tão adotadas quanto outras de mais alto nivel.

Agora minha opinião pessoal
Ninguém que vem de python, js, php etc deveria sequer considerar a possibilidade de aprender rust, pois ela é de longe umas das, senão, a linguagem mais difícil de se aprender e cumpre objetivos que não condizem com a realidade vivida por desenvolvedores comuns como nós.
Rust foi desenhada com o puro e simples objetivo de ser um substituto de c++, e é exatamente isso oq ela é, nada mais, nada menos.
Golang tambem, por incrivel que pareça, mas falhou miseravelmente nisso e acabou se tornando uma alternativa mais performática e economica ao nodejs, python etc.. devido a sua enorme simplicidade e facilidade de uso por conta do GC, em contraste com o gerenciamento de memoria 'manual' do rust.

1
1

Ninguém que vem de python, js, php etc deveria sequer considerar a possibilidade de aprender rust, pois ela é de longe umas das, senão, a linguagem mais difícil de se aprender e cumpre objetivos que não condizem com a realidade vivida por desenvolvedores comuns como nós.

Sei que é uma opinião pessoal, mas se eu puder educadamente devolver com a minha, e já devolvendo: Eu diria para tomar muito cuidado com esse tipo de pensamento, que pode acabar artificialmente segurando alguém para trás. Eu mesmo me vejo como prova contrária disso, já que as únicas linguagens que eu realmente digo dominar são JavaScript e Rust. Aprendi Rust depois de JavaScript e não, não foi essa dificuldade toda que as pessoas fazem parecer.

Qualquer pessoa que aprendeu qualquer linguagem direito tem plenas condições de aprender qualquer outra linguagem direito, dado esforço o suficiente. Dizer o contrário a si mesmo, IMHO, seria um tipo de auto sabotagem. Acho importante dar uma chance.

1

Parabéns pela objetividade, vou tentar responder objetivamente:

TLDR: Considerando os pontos que tu mencionou: Go.

Porque?
Simplicidade foi um dos objetivos principais do time que criou a linguagem Go, então por exemplo, você nao escolhe entre foreach, while e for, só existe o for. Menos formas de fazer a mesma coisa reduz a curva de aprendizado.
Go tem um ótimo mercado e está crescendo. A faixa salarial é ótima comparado a outras linguagens.

Rust é uma linguagem fantástica mas não é "comprometida" com simplicidade tanto quanto Go, e é uma ótima opção se o seu objetivo é se aprofundar nos conceitos de computação tendo um maior entendimento de como tudo funciona (embora abstraia muita coisa comparado ao C++). Paga-se mais pra um dev Rust do que pra um dev Go, mas são muito menos vagas e o nível de competitividade é muito elevado comparado ao Go.

Mas mesmo com tudo isso, faça aquilo que te deixa feliz. Experimente um pouco de cada e vai no que te dá mais tesão de trabalhar. Os devs mais bem pagos são os que são felizes e gostam de aprender continuamente.

1

Caracas, Go e Rust são muito diferentes (em questão de siplicidade) não sei pq me veio na cabeça de estudar elas sendo diferentes kkkkjj.

Mas obrigadão pelas informações, ajudou pra caramba.

1
1

Meu primeiro emprego na área de programação foi com PHP, trabalhei 2 anos e 4 meses com o mesmo. Vejo que ainda tem muita vaga principalmente com freela.