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

Rust ? Go ? Java ?

Olá Pessoal! 👋

A um bom tempo venho visitando essa rede maravilhosa e diante de uns 5 minutinhos de coragem e uma dúvida enorme resolvi escrever esse post para perguntar para vocês.

Qual caminho seguir ?

Sei que de certa forma essa pergunta é um tanto quanto pessoal, devemos olhar nosso caminho do passado, onde estamos hoje e onde queremos chegar para tomar essa decisão, mas queria ouvir um pouco de vocês.
Mas vamos contextualizar um pouco!

Prazer sou o Pedro, desenvolvedor front-end a mais ou menos 3 anos (de experiencia profissional) acabei de sair de um tecnólogo em ADS e hoje sou pleno, mas me sinto "incompleto", vendo oque queria para meu futuro, decidi que quero atuar nas duas frentes da web, o back-end e o front-end.

Hoje trabalho na stack do javascript, e queria começar estudos novos para back-end, nada de javascript, julgo que já sei o suficiente para "me virar" no nodejs caso precise, queria uma tecnologia nova e me veio esses nomes na mente, Rust, Go e Java.

Na opinião de vocês, qual o futuro? Qual tem mais mercado? Qual vai me agregar mais conhecimento? Oque vocês escolheriam?

Agradeço para quem leu até aqui, e obrigado pelo espaço!

Carregando publicação patrocinada...
3

O que você forneceu não contextualiza muito, não o suficiente para alguém dizer saudavelmente o'que você deve seguir. Isso é absurdamente mais complicado do que quase todo mundo acha. Por mais que se fale que as pessoas não deveriam procurar essas respostas em pessoas aleatórias na internet ainda há muita procura por isso, o que já mostra um problema, e que provavelmente não adianta fazer alertas.

Ainda assim, vou dizer que o mais importante é ter bem os fundamentos, que começam com a matemática, comunicação e expressão e ciências, e depois no específico precisa aprender computação e engenharia de software como um todo. Não tem como fugir disso, e precisa ser mais profundo do que a maioria das pessoas acham. Sem isso dá para ter uma carreira, mas não uma muito boa, e isso é estar incompleto, mesmo que a pessoa ache que não.

Ninguém sabe qual tem mais futuro, e isso pouco importa porque todas terão.

Também não importa qual tem mais mercado porque as que têm menos também tem menos pessoas querendo ela, então fica bem melhor.

Não temos como saber qual vai agregar mais para seu conhecimento porque não sabemos qual é seu conhecimento, e como processará isso e como será a evolução no caso real, e mesmo que ache que deu, ainda não sabemos qual é seu objeto específico, ou que forneceu pode ser virtualmente qualquer tecnologia.

O que eu escolheria é bem fácil de responder, até porque eu já escolhi.

Meme Eu posso ter minha opção?

Eu escolheria C#. Linguagem eficiente, robusta, elegante, poderosa, flexível, produtiva, popular e bem suportada, que evolui bem, sem grandes defeitos, que me agrega muito, que me desafia na medida certa, que não me limita, que tem muito mercado e me deixa feliz em usar. E roda praticamente em qualquer lugar, até mesmo no seu navegador.

Não vou dizer porque não escolheria uma das três citadas porque é longo, e sempre arrumo encrenca. Vou dar alguns insights.

Rust é uma linguagem que é moda as pessoas falarem dela. Então muitos querem estar na moda. Quase ninguém usa, praticamente não tem vaga, e não é adequada para a maioria dos cenários que a maioria trabalha. Veja, bem, é uma excelente linguagem, muito útil, extremamente bem feita, e eu gosto dela. Mas não é o que você busca, e isso eu posso afirmar pelo pouco que disse.

Go está em um meio termo, porque tem mais moda do que uso, ela é esquisita porque não sabe se quer ser uma linguagem de sistema, de script, e as pessoas usam como se fosse enterprise. Mas é uma boa linguagem e gosto dela também. Tem seus defeitos, mas é melhor do que quase tudo o que tem por aí. Não tem essa popularidade toda, mas têm nichos.

Ambas têm o problema de que todo mundo quer trabalhar com ela, e poucos estão querendo gente trabalhando com ela, então se torna um mercado congestionado. Mas tudo pode mudar, especialmente com Go, Rust é mais difícil mudar muito. Go está tendo um crescimento real, Rust também, no nicho minúsculo que ela está inserida. Ambas têm falta de abstrações onde deveriam servir ao que a maioria gostaria de usar.

Bem, sobra Java entre as três, por falta de opção. Por isso não escolhi nenhuma das três :P.

Para falar a verdade, se eu não pudesse escolher C# eu procuraria outras opções antes dessas 3, para o objetivo que entendi que quer. Eu até questiono o uso abusivo de web para solucionar "tudo", mas isso é batalha perdida.

Dependendo do que vai fazer, e repito, não sabemos o que é, TypeScript (com Deno) pode ser a melhor opção.

Tem caso que PHP pode ser mais adequada. Ou Python, claro. Ou outra linguagem de script para o backend.

Quando eu quero escolher eu tento todas as opções. Por isso eu sei falar de qualquer linguagem, e decido dominar uma ou outra.

Agora é com você. Espero que consiga tomar uma boa decisão. Tentei dar bons subsídios para ajudar do jeito que acho mais adequado.

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).

2

Fala Pedro!

Vou dar meus 20 centavos aqui, porque como você ainda sou bem cru no universo da programação (estudo há uns 6-7 anos e atuo profissionalmente há 4-5), mas também já me fiz perguntas parecidas várias vezes nesse tempo e dado a complexidade e varidade de usos acho que são perguntas meio eternas.

Inclusive tem uma thread recente aqui que faz uma pergunta parecida sobre Java e JS (https://www.tabnews.com.br/Novakoski/qual-a-sua-opiniao-sobre-as-linguagens-de-programacao-atuais-principalmente-o-java)


Meus 20 centavos

Isso que a gente convencionou chamar de backend é uma coisa bem vasta e não tem relação necessariamente com a linguagem que você escolher (tu pode desenvolver o backend de um banco de dados ou um api pra web, ambos são backends mas são "criaturas" bem diferentes em termos de algorítimos, complexidade, protocolos, gerenciamento de recursos, etc.

No meu entendimento ainda muito raso Go e Rust são linguagens mais de "baixo nível" do que Java, e também enquanto Java é meio que o exemplo mais famoso de orientação a objetos, Go e Rust não impõe um paradigma e dão mais liberdade pra forma de desenvolver.

Uma curiosidade que me chamou atenção é que o Rust é a primeira linguagem a ser aceita no desenvolvimento do kernel do Linux desde o C por conta da flexibilidade, segurança no gerenciamento de memória e velocidade em run-time.

Já o Go tem sido promovido por sua menor curva de aprendizado e facilidade de desenvolvimento (comparado ao Rust que tem mais complexidade e linguagens mais estabelecidas como C e C++).


Como não tenho experiência profissional em nenhuma dessas linguagens to dando minha opinião de curioso.

Mas diria que mais importante do que a linguagem que vc for estudar, é entender o que você quer aprender com esse estudo de backend. Vc ta buscando aprender algo para atuar em um mercado ou campo? Tá estudando pelo interesse teórico? Tá querendo aprender mais sobre baixo nível ou sobre arquitetura de software?


Quanto as outras perguntas que tu fez ali, sobre futuro, mercado, conhecimento..

Mercado

Em termos de mercado não tem dúvida, Java tá em tudo que tu pode imaginar e aprender bem Java pode te abrir portas das mais variadas. No fim do dia mercado tem pra tudo se você realmente sabe o que tá fazendo, por exemplo tem um monte de sistema legado (pense bancos, aviação, governos) que ainda usam linguagens como COBOL e FORTRAN e tem escassez de profissionais que realmente dão conta desses sistemas.

Futuro

Essa é muito difícil de dizer, Java se provou no tempo, C tem quase 60 anos e tá aí sustentando o mundo que é baseado em servidores linux, C++ é de 1979 e é a base pros jogos mais modernos que existem hoje.

Por outro lado linguagens que ninguém botava muita fé como python e javascript que tiveram origens bem humildes se reinventaram de tal modo que 20 anos atrás ninguém diria que seriam usadas como são hoje (vide JS no backend com Node e Python como a linguagem mais usada pra dados), python era coisa de sysadmin e hobista, JS era uma linguagem de script bem doida que rodava no browser.

Conhecimento

Esse ponto eu acho que é o mais abstrato, o quanto e como vc vai aprender depende muito mais de você do que da linguagem que você vai estudar. O mundo da computação é vasto e virtualmente infinito, por isso o mais importante é você entender o que te cativa ou que você tem necessidade.

Nesse outro post (https://www.tabnews.com.br/RobsonSchneider/fortemente-tipada-ou-nao-duvidas-de-um-iniciante) o maniero fala sobre "aprender direito com C", acho que é um pouco por aí.

Se tu quer se expor aos fundamentos da computação vai lá pra trás e estuda no C (que talvez seria o Rust ali na sua lista).

Se tu quer entender melhor orientação a objetos e os fundamentos de arquitetura de software como promovidos pelo Gang of Four e Uncle Bob, talvez valha uma mergulhada no Java ou C++.

1

Vou ser bem simplista:

JAVA - Virtual Machine, ou seja uma pouco mais lento, mas depende da aplicação.

GO - Safe Memory e Compilado, e uma linguagem simples.

RUST - Safe Memory e Compilado, porém cheio regras complexas para evitar que o programador cometa algum erro.

2
1

Meus 5 centavos de opinião

Acho que essa é a pergunta errada.
Primeiro se pergunte que problema vc quer resolver ou que caminho quer seguir e a linguagem a ser escolhida aparece naturalmente.

Exemplos

Desejo entrar no mercado de trabalho o mais rápido possível

Nesse caso sugiro estudar python ou javascript. São linguagens com ampla adoção e fácil aprendizado que rapidamente te abrem portas para atividade como júnior ou para realizar projetos pessoais minimamente interessantes.

Não tenho pressa e procuro a maior remuneração possível

Nesse caso é mais difícil dar uma resposta certeira e existem várias boas opções. Puxando a sardinha para meu lado, sugiro estudar Go ou Rust por serem linguagens cujos contratos são mais bem remunerados ao mesmo tempo que são demandas mais nichadas, então em geral não há espaço para júnior bem como têm menos vagas.

Compartilhe conosco qual é o seu cenário para que então possamos sugerir qual caminho parece mais adequado.


Vi também que o sandroSaraujo fez um comentário parecido com o meu. Concordo que java tem um mercado grande, mas acho que js e python tem maior tração hoje em dia.

1
1

Fala meu(s) querido(s), essa pergunta é de milhões!!! 😅

Mais vou te ajudar, porém deixando claro que minha opinião tem vieses expostos. Mas bora lá...

1° Step: Entre nesse site de roadmap https://roadmap.sh/ e veja como cada tecnologia se deriva e se conecta com outras, e verifica qual você acha mais interessante.

2° Step: Entre no LinkedIn, Glassdoor, Catho, ProgramadorThor e etc... para entender como são as vagas de cada linguagem que você está interessado, qual a quantidade de demanda por elas e seus respectivos salários por tipos de empresas.

3° Step: Entre no site da documentação oficial da linguagem e veja qual mais lhe agrada, afinal ele irá fazer parte do seu dia-a-dia.

4° Step: Comece a codar e executar seu código na linguagem selecionada, para se familiarizar como e de que maneira ela "pensa" e se comporta(syntax, semântica e arquitetura/paradigma) .

5° Step: Se você seguiu os passos anteriores, nesta etapa já deve ter alguma noção da linguagem que deseja aprender, para finalizar faça um curso básico sobre a linguagem selecionada, de preferência um gratuito ou bem barato.

Final Step: Agora você já tem todos os recursos para selecionar o que é o melhor para você, e compartilhar conosco o que você aprendeu nessa jornada de descoberta!

Vale Resaltar: não se prenda à uma liguagem, afinal elas são apenas ferramentas, e o que realmente é importante e como você as usa, ou seja, qual é a sua capacidade de resolver problemas com elas. Pois cada uma delas tem o seu propósito.

->A lista abaixo está se baseando em mercado de trabalho e flexibilidade e desconsiderando a stack JS...
->A ordem é do mais flexível para o menos flexível - na minha visão é claro 😂
LISTA DE RECOMENDAÇÃO:

  1. Java Spring - Kotlin Spring
  2. C# .NET
  3. Python Django
  4. PHP Laravel
  5. Ruby On Rails
  6. Dart Flutter

Agora vem o viés: "- NÃO FAÇA ADESÃO A NENHUMA MODINHA NA PROGRAMAÇÃO, POIS ISSO NÃO É SAUDAVEL!!!"

Na lista apresentada, com exceção do Kotlin, todas as stacks já estão bem consolidadas, com boas documentações e uma boa comunidade, quem está começando não tem a necessidade de reiventar a roda, o que você e todos nós devs precisamos aprender é a resolver problemas complexos e a melhorar nossa velocidade de aprendizado.

PS: O Kotlin está na lista, pois como o Scala ela se aproveita de vários recursos do Java/JVM, de modo que, por mais que seja uma linguagem nova, a mesma acaba por se aproveita de bibliotecas e frameworks já consolidados como por exemplo o próprio Spring!🍃

1

Depende muito da aplicação que deseja trabalhar. O Java e o Rust são bastante usados mas com foco diferente. Rust por exemplo é mais focado em performance e segurança, e ficou bem famosa a dois anos atrás. Go é mais focado em softwares simples pra faze-los de forma rápida, mas tem um conceito de orientação a objeto difete chamada de Go Way. Difícil dar dizer uma sem saber qual é seu objetivo. Mas se quer ficar uma linguagem que tem muito emprego no Brasil, PHP, C# sem dúvida são duas ótimas linguagens que nunca me deixaram desempregado por mais de 2 meses. Espero ter ajudado amigo.

1

Esse questionamento é tão complexo no dias de hoje (tem tanta linguagem), em um passado distante a duvida era Java, C#, Php, Ruby...
Mas as vezes não é só o fato da que você gostaria de aprender, por hobby ou pelo mercado oferecer mais opções de vaga.
As vezes a que você gosta por hobby não vai ser a que lhe vai dar mais condições de emprego.
Hoje em dia apesar do Rust ser amada no stackoverflow, ser queridinha, ser modinha, ainda parece ter um nicho diferenciado.
Mas ela é uma linguagem FiaDeUmaBoaMae, pois é difícil, você programava de um jeito que as vezes coisas bobas que você fazia usando outras linguagens o Rust não vai lhe permitir, ele é muito chato quanto a isso, mas essa chatice dele pode lhe tornar um programador melhor, você tem que ter controle sobre memória entender que a variável tem tempo de vida durante aquele escopo e tudo mais.
Go tem crescido muito ultimamente, muitas empresas começando a investir nela, e como todo mundo diz, e eu mesmo duvidava, um programa em Go, vai ser escrito por 10, 20, 30 ... programadores de uma mesma forma, pois o Go quase sempre tem um so jeito de fazer o código.
tem muitos cursos bacanas na web, e ele também tem algumas coisas que vai lhe corrigir o modo de programar, mas não é tão severo e rígido como o Rust.
Rust tem foco para sistemas, mas a comunidade tem começado a dar outras caras para ele. O Go começou a dar mais ares de modernidade e nasceu para resolver problemas que os devs tinham com a programação web de 10 anos atrás, rest, gpc, json ... e o go nasceu facilitando isso, como tambem sendo uma das mais performatica em trabalhar com cachê e concorrência.
Java é de uma época passada antes desses 10 anos, e depois que a Oracle comprou ela, se tornou uma linguagem menos amada e esquecida e por se tornar mais cara e dar problemas de processo de licença e multa cara, mas os amantes do java conseguiram abrir um novo ramo e foi criado o java open sdk, e ai a comunidade voltou a dar atenção e começou a implemtar coisas que os seus concorrentes estavam fazendo e evoluindo, já tiveram tantos framework e hoje parece que quando se fala de java se fala de spring boot, java parece ser o início da aprendizagem de Orientação a Objetos e padrões de linguagem (já existia oop, mas não era comumente usada de fato nos projetos), mas java foi esquecido ou forçado a ser abandonado quando comprada pela Oracle por gerar processos, e fez o google se virar nos trinta e pagar multas altas devido a nova licença, acho que isso também influenciou o google ir para um tal de kotlin, devido essa encrenca com a oracle, kotlin também é um embrionário do java.
c# a tão odiada por muitos que viravam o nariz para a MSdollar (também pertente ao mundo antes dos 10 anos atrás) MSdollar como era comumente conhecida a Microsoft, mas tudo aquilo que era fechado, bloqueado licenciado e etc começou a ter novos mundos quando mudou a presidência e Sadela entrou na empresa e fez a Microsoft se tornar acessível a comunidade open source e deixou o mundo também palpitar nela, e isso deu um salto monstruoso, ela cresceu muito com isso. Não quer dizer a Microsoft abraçou tudo só de uma vez, mas deu a oportunidade de entrar no mundo Linux, Mac ... o mundo open source fez a Microsoft e C# evoluir muito.
E ela é a que paga o salário de muita gente no mercado por permitir fazer tudo o que é coisas de quase tudo que é jeito.

mas no final a decisão difícil vai ficar na suas mãos, é uma decisão sua.
Veja todas, faça exemplos veja qual você vai ter facilidade, e foca nela, talvez você vai escolher uma para trabalhar e vá escolher outra para aprender como hobby e se educar.
mas vai ter situações que é o cliente que vai lhe dizer a linguagem pois é ela quem vai lhe pagar o salário e as contas.

uma listinha para tu analisar:

https://blog.back4app.com/pt/startups-que-usam-rust/

https://blog.back4app.com/pt/startups-que-usam-go/

https://blog.back4app.com/pt/startups-usando-java/

https://blog.back4app.com/pt/startups-usando-c-sharp/

https://blog.back4app.com/pt/startups-usando-scala/

Coloquei o scala ai na lista pois ultimamente a linguagem scala foi uma das modas do modelo de lingaugem funcional.

a que paga o meu salario é uma, mas eu fuço muito o Go e principalmente o Rust, que tenho focado em aprender pensando em um mercado que todos dizem ser o futuro, mas que ao mesmo tempo não parece ser real.

É uma coisa tão legal, vai ter muitos nascimentos, e pior que deixei de lado até as linguagens que hoje tem forte adoção no machine learn e big data ... que seria o Python ou R.

bora lá rapaz, o desafio é grande, e tu comentou se virar bem no node e javascript, ela também esta bem aquecida e é usada para muitos casos, só que o mercado de startup abraça tudo o por modinha ou por necessidade ou por preço ou pela folha salarial dos devs que vão tocar o projeto, boa sorte na jornada.

0

Eu nem sou uma pessoa boa para dar essa resposta, quem dirá o melhor kkk mas vou escrever algo aqui... em resulmo, suas opções são o seguinte:

1ª Java - Boa, legal, verbosamente chata, nem é mais tão lenta quanto falam(é o Eclipse! escuta o que to te falando!), mas vai te manter com o bolso cheio.. se conseguir uma vaga! Vi recentemente que aumentou o numero de pessoas buscando Java como "linguagem principal" digamos assim.

2º GO - Boa, legal.. a verdade é que Go é Limbo! O Google pegou a linguagem Limbo e trocou a maquina virtual Dis por um compilador kkkk mas beleza, deram sim uma GRANDE melhorada nela.. quer trabalhar com Go? Eu não faço a minima como é o mercado para Go, mas acho que é fraco... Falta odio em Go... kkkkk

3ª RUST - Se você gosta de sistemas operacionais, vai querer criar o seu em Rust! Rust é maravilhosa, criar um compilador cruzado é a coisa mais simples do mundo nela! Quer mais? O modo de gerenciamento de memoria dela é muito showzin de bola! E não para por ai... na verdade para sim! kkkk infelizmente Rust é um C++ sem C. Tem o mesmo problema que faz com que C++ não entre no kernel Linux, os dev preferem reescrever um programa em C++ que tentar consertar as me#@da do programa anterior. Rust tenta ser uma revolução e é só mais uma... inclusive nem Rust nem Carbon vão tirar a dominancia da dupla C/C++ do mercado, do mesmo jeito que o Java+C+C+++Python+TodasAsOutras não conseguiram matar o COBOL de verdade.

Minha real opinião agora: quer ir pro backend? vai de C#! é incrivelmente boa se pensar que é algo feita pela Microsoft(vide Ruindows)

PS: Aos amigos programadores, retirando as duas linhas acima, o resto levem na brincadeira :) Não sou périto, e não trabalho em nenhum time de desenvolvimento dessas langs para brigar na net defendendo elas... menos C, C não merece nenhum tipo de bullyng kkk