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

tl;dr: Acredito que o ideal para um iniciante que quer se destacar dos demais e ainda reforçar a base é começar com Java.

Compartilho bastante da opinião do maniero sobre o quão importante é saber como as coisas realmente funcionam. Entender C propriamente é entender com mais profundidade como computadores funcionam, o que eventualmente vai fazer com que você escreva códigos melhores.

Entretanto, concordo que a aplicabilidade de C hoje em dia é bem específica e dependendo do objetivo de cada um na carreira, pode não fazer tanto sentido... Apesar da sintaxe relativamente simples, C não vai te dar uma visão de orientação a objetos (que é o feijão com arroz do mercado) e vai complexar os seus primeiros estudos de algoritmos, alguns problemas "clássicos" de leetcode/hackerrank são bem feios em C. Se você é iniciante, precisa reforçar bem as ferramentas de solução de problemas! Não ter o conceito de string nativamente ou como tipo primitivo, por exemplo, que já existe na maioria das linguagens hoje, pode aumentar bastante a dificuldade de um iniciante em visualizar as soluções.

Além disso, ainda há a questão da recompensa, que pode parecer algo indiferente ou relativo a cada um, mas focar em C logo de início pode fazer com que esse iniciante não sinta os resultados do seu estudo. É extremamente motivador conseguir construir algo concreto e com o mínimo de qualidade, se for utilizando tecnologias famosas no mercado que façam aquele conhecimento ter alguma aplicabilidade no futuro, acredito que seria o ideial. O distanciamente entre a teoria e a prática certamente é o que mais desmotiva as pessoas que iniciam na área, é por isso que eu acredito que front-end é tão famoso entre as pessoas que estão começando, não é bem porque é mais "fácil" como algumas pessoas afirmam (até porque front-end de alto nível pode ser potencialmente complexo), mas porque eu acredito que ele te dá uma gotinha de dopamina a cada coisa nova que você aprende e avança, é mágico para o iniciante ver o botãozinho que ele construiu reproduzindo alguma coisa que você programou haha.

Mas por outro lado, Javascript e outras linguagens de mais alto nível, abstraem muita coisa que para um iniciante são muito importantes, principalmente no que tange estrutura de dados. Será que não seria interessante esse iniciante saber que listas e arrays não são "[ ]" mágicos? É aí que entra a minha sugestão: Java. Antes de mais nada acho que vale ressaltar que trabalho com Node praticamente 90% do tempo já tem uns 4 anos, adoro JavaScript e os seus recursos, mas quanto mais projetos você mexe, mais você percebe que toda essa flexibilidade pode ser nociva para um projeto de grande porte. O profissional iniciante tem que entender porque não é legal para o programa sair fazendo deepClones de objetos a torto e a direita e certas replicações com uso de operators que acabam produzindo um código inchado, repetitivo e pouco eficiente. Linguagens de alto nível acabam sendo tão flexíveis e tolerantes que se não tiver um Style Guide bem definido, com um padrão de projeto bem amarrado no eslint pra travar certas coisas, em pouquíssimo tempo você verá o código se autodestruir. É claro que se você for muito estudioso e estudar muito profundamente JavaScript você será bom, mas lembre-se: você provavelmente não vai trabalhar sozinho.

Java é criticado por muitos pela sua verbosidade, onde tudo é fortemente tipado e declarado... Mas essa não é a receita perfeita para quem quer firmar os conceitos e se destacar dos demais? Enquanto em JavaScript um hashMap é um simples formato de uso de objetos, que exigiria um olhar mais experiente para perceber o conceito que está sendo aplicado ali, em Java, é um "new HashMap<>()" o tipo das coisas e os conceitos utilizados são MUITO claros... Então se amanhã ou depois, vc precisar fazer algo parecido em JavaScript, vc vai saber fazer um "{ chave, valor }" com ctz... Onde o inverso não é bem uma verdade. Outro ponto é que Java é "auto-hosted", isto é, todas as dependências são feitas em Java, então ela é uma linguagem auto-contida, qualquer dúvida sobre a implementação de qualquer coisa, por mais simples que ela pareça, você pode fuçar até entender exatamente como funciona, como ela é fortemente orientada a objetos, você pode ir bem longe com o Ctrl+Click haha E sempre lendo na mesma linguagem que você já está familiarizado. Em Node.js, por exemplo, isso não é tão simples, várias libs são na verdade libs populares de outras linguagens como C/C++ por trás dos panos, depois de tanto cavar é possível que você chegue em algo como o "libuv"... e será que você terá o conhecimento sólido em C para entender o que ele está fazendo propriamente? Ou vai só utilizar sua lib lá em JavaScript e ignorar o funcionamento real daquela dependência?

Um ponto que pode fazer falta para um iniciante que começa com Java em vez de C é o conceito de ponteiros e operações mais a nível de memória. Ele não vai entender de maneira natural, sem saber nada de C ou C++, que o o operador "==" do Java na verdade compara se duas referências de objeto apontam para o mesmo objeto na memória, e consequentemente não terá a compreensão de que é por causa disso que em comparações entre Strings ou outras estruturas de dados mais complexas é utilizado o ".equals()" e não o "==" afim de comparar os conteúdos em si. Esse e outros conteúdos relacionados são interessantes, mas acho que não são fortes o suficiente para COMEÇAR com C, o iniciante pode entender bem as coisas em Java, conseguir um bom emprego, e depois dar uma passadinha pelo C para se tornar um programador melhor ;) não acredito que esse seja um conhecimento prioritário para esse primeiro momento, até porque se fosse, porque a maioria gritante das outras linguagens possuem soluções próprias para tratar de ponteiros?

Outra linguagem tão boa quanto Java nesse sentido, que também possui muita aplicabilidade prática ligada ao mercado para o iniciante sentir seus avanços é C#. Eu só acredito que Java seja ligeiramente melhor porque depois do openjdk Java não é amarrado a nenhum ecossistema especifico. .NET, por exemplo, tem ferramentas fantásticas como o Visual Studio, mas é bem possível que elas também deixem o iniciante mal acostumado, mexer um pouco com terminais e talvez Linux não vai fazer mal haha Mas por outro lado, considerando que a maioria dos usuários tem mais familiariadade com Windows, pode ser um começo interessante...

Por fim, ainda que sua carreira no futuro vire mais para front-end de fato, e você tenha que se aprofundar em Javascript, saber um pouco de Java NUNCA vai ser um conhecimento perdido, você vai esbarrar com códigos Java em algum momento da carreira certamente... E ter alguma intimidade com essa linguagem com certeza vai ser um mega diferencial! Se você não suporta back-end e curte programar interfaces gráficas, ainda pode fazer aplicativos Android para aprender!

Juro que tentei não me alongar tanto, mas é basicamente por isso que eu acho que a linguagem ideal para um iniciante que quer se destacar é Java.

Carregando publicação patrocinada...