Guia: Qual linguagem escolher e porque?

Olá, pessoal! A maioria dos posts aqui no Tabnews estão relacionados a esse tema, então gostaria de dar meus 20 centavos e jogar um pouco de sal nessa conversa, que acredito não ter qualquer benefício.

O que eu quero dizer com isso? Se você é júnior ou vai começar a aprender agora, não faz diferença para você qual linguagem você vai começar. E isso basicamente porque, quando você sabe pouco ou quase nada sobre uma linguagem, você vai precisar pesquisar no Google o tempo todo. Então, sua primeira linguagem não precisa ser a linguagem que você efetivamente vai encontrar um trabalho mais fácil, ou é a "melhor linguagem" do mercado.

Cada pessoa tem um objetivo diferente, e aprende de uma forma diferente. Eu, por exemplo, comecei a programar com Pascal e Portugol, mas a maioria das faculdades na época ensinavam C e Java. Hoje em dia, Python e C# também são bem comuns. E o que isso quer dizer? Didática. Cada linguagem tem seus prós e contras de utilizar, e dependendo de como você vai aprender, seu leque de opções vai ser maior ou menor.

Eu tenho 14 anos de experiência, já trabalhei para a AWS e hoje sou Tech Lead em um banco americano, e ainda não encontrei um projeto que não fosse possível de executar em várias linguagens diferentes. Projetos grandes e pequenos que a linguagem foi escolhida pelo simples fato do programador que estava iniciando o projeto gostar mais.

Muitas vezes, os devs tentam convencer os outros de que "sua" linguagem ou framework é melhor que o outro por motivos subjetivos que só fazem sentido para ele. Por que eu usaria React em um projeto pessoal se eu já sei Angular? Se sua resposta não for "para aprender", você não precisa fazer em React só porque alguém te disse para usar. Fazer um projeto em uma tecnologia enquanto você aprende ela é um processo doloroso. Geralmente, você vai aprender os macetes da tecnologia no fim do projeto, e a sensação de insatisfação com o seu trabalho vai ser enorme, fazendo você pensar em refatorar e/ou criar uma v2/v3...

Cada linguagem tem seu pra que e porque: Javascript nasceu para deixar as paginas web mais dinamicas e com sua evolução os desenvolvedores quiseram trazer seu conhecimento e a facilidade de uso dela para tudo quanto é plataforma, desde Mobile com React-Native/NativeScript até desktop com Electro/NW. Javascript é uma excelente linguagem para "EuQuipes" quando você precisa fazer MVP's ou até mesmo reaproveitar o maximo de código que você puder entre seus projetos.

Java é uma das melhores linguagens até hoje quando se trata de segurança robustes e performance, a JVM proporciona diversas possibilidades aos desenvolvedores e sua vasta utilização deixa sua comunidade sempre engajada e a literatura abundante. Java não é facil de aprender seu paradigma exige muita atenção e dedicação o que vai te tornar um desenvolvedor mais atento a detalhes melhor preparado e sempre em busca de melhorias.

Python é uma linguagem de programação notável pela sua simplicidade e legibilidade, ideal tanto para iniciantes quanto para desenvolvedores experientes. Sua vasta biblioteca padrão e o ecossistema rico em bibliotecas de terceiros abrangem uma gama diversificada de aplicações, incluindo desenvolvimento web, análise de dados, automação e inteligência artificial, com ferramentas como Django, Flask, pandas, TensorFlow e PyTorch. Esta versatilidade, aliada à sua portabilidade em diversos sistemas operacionais, torna Python uma escolha robusta para uma ampla variedade de projetos. Contudo, Python não é famoso por sua alta performance em velocidade de execução, comparado a linguagens compiladas como C ou Java. Esse ponto pode ser relevante em projetos que necessitam de alta performance em tempo real. No entanto, estratégias como o uso de implementações alternativas (PyPy) e a integração com linguagens de baixo nível podem mitigar essas limitações, mantendo Python como uma opção valiosa e flexível para muitos desenvolvedores e pesquisadores.

PHP é uma linguagem de programação amplamente usada, especialmente conhecida por seu papel no desenvolvimento web. Sua facilidade de integração com HTML e suporte em quase todos os servidores web a torna uma escolha popular para a criação de sites dinâmicos e aplicações web. Com uma curva de aprendizado relativamente baixa e uma vasta comunidade de desenvolvedores, PHP oferece um ponto de partida acessível para muitos programadores entrando no campo do desenvolvimento web. Ótimo para freelance e muito utilizado para sites como WordPress, Joomla e Drupal PHP definitivamente é uma excelente linguagem quando se trata de produtividade. Infelizmente sua imagem ficou muito manchada pela sua falta de consistencia na base de código e diversos problemas relacionados a segurança.

C# ou Java da Microsoft é uma das linguagens mais controversas, ela nasceu em um ecosistema completamente fechado obrigando você a usar Windows Visual Studio (e não estou falando do VSC) usar ISS entre outras porcarias, mas de uns tempos pra ca a Microsoft abriu as portas para o software livre e ela hoje é uma das principais linguagens para o desenvolvimento de games com Unity mas também de aplicações backend devido a sua solidez e robustez.

Essa explicação toda foi só pra mostrar pra você que não existe melhor linguagem, se você quiser ser desenvolvedor de jogos, PHP não vai ser uma boa opção tão pouco Python ou JS você pode até achar formas de usar essas linguagens mas elas nunca vão ser tão boas quanto o C# pra essa finalidade.

Você aprender JS pra entrar no mercado de programação seja porque você está procurando um emprego ou está em transição de carreira pode não ser o melhor negócio, o mercado de programação web está saturado com a quantidade de pessoas que fizeram bootcamp de 6 meses e que saem de lá sabendo fazer clones como ninguem mas que não sabem usar Object.assigm ou qual a diferença entre Map e Array. Na pratica aprender JAVA te daria mais oportunidades porque existem projetos legados que os devs mais experientes não querem trabalhar que você poderia se exforçar para aprender e se inserir no mercado com mais facilidade.

Tabela de linguagens e suas finalidades:

Linguagem Dificuldade Aplicações
Javascript Fácil Web, Mobile, Scripts, Desktop
Java Média Empresarial, Web, Mobile, Desktop
Python Fácil Web, Data Science, IA, Scripts, Automação
PHP Fácil Web, Backend para Sites e Aplicações Web
C# Média Empresarial, Jogos (Unity), Aplicações Desktop
C++ Alta Sistemas Embarcados, Jogos, Software de Alto Desempenho
C Média Sistemas Embarcados, Software de Sistema, Drivers
Ruby Fácil Web (Ruby on Rails), Scripts
Swift Média Aplicações iOS, Desenvolvimento macOS
Kotlin Média Aplicações Android, Desenvolvimento Backend
Go Média Sistemas Distribuídos, Serviços Web, Automação
Rust Alta Sistemas de Alto Desempenho, Desenvolvimento Seguro
TypeScript Média Desenvolvimento Web Front-End e Back-End
Scala Alta Aplicações Web, Processamento de Dados, Sistemas Distribuídos
Perl Média Scripts, Processamento de Texto, Desenvolvimento Web
R Média Estatística, Data Science, Análise de Dados
Dart Fácil Desenvolvimento Mobile (Flutter), Aplicações Web
Lua Fácil Scripts de Jogos, Desenvolvimento de Jogos, Automação
Objective-C Média Desenvolvimento iOS e macOS (Antes do Swift)
Haskell Alta Aplicações Acadêmicas, Pesquisa, Desenvolvimento Funcional

Se você chegou até aqui a reflexão que eu deixo é que não existe linguagem melhor que a outra, isso é algo que os fanbois usam para inflar seu cargo e dizer o quão melhor a linguagem que ele usa só porque oferece algo que outra linguagem não tem.

No final das contas, se a linguagem pagar seus boletos ela é a melhor linguagem que tem.

Cambio desligo.

Legal. Eu vou fazer como faço sempre, vou lendo e respondendo, não vou ler tudo primeiro.

Se a pessoa é júnior está procurando outra linguagem para escolher, certo? Não existe júnior que ainda vai aprender algo, a não ser em uma página da carteira profissional de alguns. O júnior não vai pesquisar no Google o tempo todo, só em algumas coisas. Quem pesquisa o tempo todo é trainee ou aprendiz (talvez como estagiário). Por não se atentarem a isso tem sumido vagas de júnior, porque não querem aprendizes e recebem currículos assim.

Concordo que o ideal é aprender uma primeira linguagem que não será usada para conseguir vagas. Algumas pessoas são obrigadas a isso, lamento por elas. Essa é a linguagem de aprendiz. E poderá ter uma segunda ainda nesse estágio. Depois o júnior só escolherá outra quando for necessário, isso se ele puder fazer essa escolha, seja por ter ou não capacidade ou porque tem alguém mais experiente que faz a escolha por ele.

A escolha poderá ser a que dá melhores condições no longo prazo ou a que dará melhores condições no curto prazo.

Em alguns casos a linguagem da faculdade pode ser didática. Mas hoje vejo muito ser marketing. Dar o que o mercado quer, o que o aluno não vai se sentir frustrado e abandonar o curso, fazer ele gastar sua grana ali ou cumprir metas do MEC, mesmo que no fim saia para o mercado de forma ruim.

O maior critério disparado de adoção é o que a pessoa sabe ou gosta mais. E as pessoas vão tentar tornar objetivo seus argumentos subjetivos.

Não vou falar uma por uma, mas não concordo com vários pontos de algumas linguagens, algumas eu diria até que há erro, geralmente por ignorar algumas das coisas que ela é muito usada, ou quando é usada mesmo sem ser o certo. Algumas coisas descritas são até controversas.

Em C# está quase completamente errado, talvez até por viés. Nem quis olhar profundamente os resto. Até quando vai falar bem, e parecer que é só um ponto, eu não sei se é verdade, é algo que as pessoas repetem sem mostrar nada que comprove.

A dificuldade aí não sabemos se é de aprender, usar ou outra coisa. E seria bom deixar claro que é altamente subjetivo.

Quando se coloca algumas informações simplistas, até simplórias, pode até criar mais dificuldade para a pessoa ter como ajuda para a escolha. Para quem ainda é ingênuo na área pode acreditar que é simples assim.

Só para dar um exemplo é sobre falar de Rust ser de alto desempenho, tem outras assim ou melhor que não foram classificadas da mesma forma. E sobre desenvolvimento seguro, tem algumas mais fáceis de fazer algo seguro, mas não foram classificadas assim. Parece que por não ter o que falar foi isso que foi colocado, parece que está só repetindo o que as pessoas repetem sem entender o que isso quer dizer. Dá uma ideia muito errada sobre o que é cada coisa. As outras podem estar tão ou mais enviesadas. A simplificação leva a decidir errado.

Nem vou falar que há uma ou outra conceituação errada, até porque mais de 90% das pessoas cometem esse erro, mas quase todo mundo repetir não fará o conceito mudar. Até porque será secundário em relação ao objetivo, só falo que pode perpetuar um erro.

Digo isso para algum leigo ler isso e achar que serve como o último parâmetro que a pessoa precisa ter.

E acabei de dar uma resposta sobre escolher uma linguagem porque paga as contas: https://www.tabnews.com.br/maniero/643453c8-8d01-418e-b6b0-0e6b38d81ff2. Todas pagam!

E existem linguagens melhores do que as outras, é só estabelecer os critérios a serem usados. Para escolher a linguagem certa para si ou para o projeto precisa de um monumental estudo de toda a computação. Ou fazer como quase todo mundo, pedir pra uma pessoa aleatória na internet escolher para ela.

Me desculpe quem não gosta, mas eu não gosto de deixar algo sem alguma contestação quando posso dizer algo.

Observou? Faz sentido para você?

Espero ter ajudado. Em geral estou à disposição na plataforma (sem abusos :D)


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

Atualmente sou pleno e algo que eu gostaria que tivessem me falado no início da carreira é que linguagem, stack, etc. não é a primeira coisa na qual um iniciante deve focar, atualmente vejo que se voce aprende logica, algoritmo, design de software e os fundamentos da programação se torna incalculavelmente mais fácil para programar em qualquer stack ou linguagem reduzindo e muito a curva de aprendizagem, saber isso no começo teria me poupado um enorme esforço que estou tendo atualmente para aprender algumas coisas de lógica e fundamentos

Parabéns pela iniciativa, mesmo que as pessoas possam discordar sobre qual eles acham que pode fazer algo ou não, eu gostei que você colocou que uma linguagem não é melhor que a outra e sim ferramentas. Eu mesmo estou fazendo um projeto em C#, aprendendo Dart e estudando Analise de Dados e usando Python. Já vi programadores amarem Objective C e odiarem C. Fácil é uma questão de percepção, tipo como aprender um idioma tem gente que ama Inglês e odeia Espanhol ( sendo Espanhol tendo uma curva menor de aprendizado ). Python eu acho fácil mas até um certo ponto por que muita das vezes tem muitas libs desconhecidas pra mim, Dart ainda é difícil dizer mas a sintaxe está me agradando bastante, agora CSharp tem uma sintaxe agradável mas odeio o Visual Studio ( sei que vão falar que dá pra rodar no VsCode mas no projeto atual estou usando VS mesmo ). Quando você começa em uma linguagem é sempre difícil, mas depois de um tempo vai se entendendo com aquela linguagem.

Java é versátil, sua JVM permite qualquer linguagem, então nesse sentido (JVM), acredito que poderíamos até fundir Java e Kotlin, extendendo seu alcance.

Linguagem Dificuldade Aplicações
Bytecodes, JVM Média Empresarial, Web, Mobile, Desktop, Aplicações Android, Desenvolvimento Backend

O mesmo poderia ser feito com .NET.