Ranking de Linguagens UTec 2018
De tanto consultar e pesquisar sobre os rankings de linguagens e seus critérios, criamos o nosso. Se você leu o post Principais Linguagens de Programação, ou Melhores Linguagens de Programação, esse post apresenta uma alternativa em formato de Ranking de Linguagens.
1. Critério de avaliação
O princípio do ranking é não re-inventar a roda. Não queremos analisar a linguagem mais usada ou a mais popular. Essas informações estão bem consolidadas nos rankings apresentados e discutidos nos posts anteriores.
O objetivo é responder, via um ranking atualizado periodicamente, as principais perguntas que recebemos sobre o assunto em nossos canais. Mas não todas elas.
1.1 Principais perguntas
Por exemplo, estas são as principais:
— Qual linguagem de programação é a mais solicitada para conseguir vagas como programador?
— Qual linguagem de programação devo saber para concorres as melhores remunerações como programador?
— Qual linguagem de programação devo aprender primeiro? E depois?
— Qual linguagem de programação é mais fácil de aprender?
Naturalmente, elas podem levar as respostas que não terão linguagens em intersecção. A que paga melhor pode não ser a mais fácil ou a que devo aprender primeiro, por exemplo.
É possível agrupar essas 4 perguntas em 2 grupos distintos. O primeiro é composto pelas pessoas que fazem as duas primeiras perguntas, que estão ligadas no mercado, que querem ganhar dinheiro com isso para ontem. O segundo grupo é o das outras 2 perguntas, que quer saber o caminho das pedras antes de se aventurar em aprender alguma linguagem de programação. Evidente que é possível um único curioso fazer todas essas perguntas, mas o que notamos é que as duas últimas não fazem diferença para quem está focado nas primeiras. O inverso também é curioso. Quando a pessoa do segundo grupo descobre que, eventualmente a linguagem que escolheu para aprender (apesar de ser a mais simples e indicada) não é tão usada ou bem paga no mercado, desiste da ideia facilmente.
1.2 Uma única pergunta
Programação é fascinante e concordo com aqueles que a enxergam como um tipo de arte. É comum uma pessoa que nunca pensou em programar, ao aprender, gostar e não parar mais. Contudo, a motivação principal, na maioria dos casos, são as oportunidades de mercado e as remunerações da área.
Em uma rápida busca por sites de cursos online, como Udemy, Coursera, Lynda e outros, é possível notar uma grande concentração de cursos de TI, especialmente de programação, desenvolvimento de apps e games.
De fato, faltam programadores no mercado e estopim de muitas pessoas que decidem estudar e atuar na área. Para essas, é possível juntar, na medida do possível, todas as perguntas acima em uma só:
— Qual a sequência de linguagens de programação devo aprender para conseguir vagas de emprego como programador cada vez melhores?
Não recebemos nenhuma pergunta bonita e consolidada assim, mas claramente ela responde a todas as anteriores e ainda coloca o senso de ordem, que ajuda desde os iniciantes até os mais avançados.
1.3 Critérios
Nosso ranking, portanto, está preocupado na sequência de aprendizado de um futuro Poliglota em Linguagens de Programação.
A coerência na sequência é um critério. Não dá para começar com uma linguagem imperativa e depois pular para outra totalmente diferente. O objetivo é montar a sequência reutilizando os conhecimentos adquiridos em uma para o aprendizado da próxima. Para que seja algo controlável e atualizável, trabalharemos sempre com uma sequência de 6 linguagens e as escolheremos em uma lista de 10 candidatos. Os candidatos virão da intersecção dos 5 rankings apresentados no post Melhores Linguagens de Programação.
A facilidade de uso de uma linguagem é outro critério. Como consequência, a primeira linguagem da sequência nunca será uma linguagem complexa, dada que ela está ali como sugestão de quem irá aprender agora programação. Contudo, só facilidade de uso e coerência na evolução não responde plenamente a pergunta.
O último critério é: volume de demanda no mercado de trabalho. De nada adianta a linguagem ser simples, uma porta de entrada para as demais, se ela não é utilizada efetivamente no mercado. Mercado é um expressão bem grande, por isso vamos delimitar esse critério para o mercado brasileiro.
1.4 Consequências
Devido ao seus critérios, o Ranking de Linguagens da Universidade da Tecnologia não possui o conceito de top 3, top 5 e outros similares. O número 1 do ranking é a linguagem sugerida como ponto de partida e não pode ser considerada a melhor. É apenas a primeira da sequência. Não existe campeão, apenas se uma linguagem faz parte ou não da sequência e em que ordem. Para quem é mais avançado, as últimas posições do ranking serão mais significativas. Caso seu level seja muito alto como programador, esse ranking pouco lhe ajudará agora. No futuro, expandiremos eles para uma sequência maior do que 6 lingugens.
2. Linguagens candidatas
Apesar de existirem vários rankings e critérios, de algumas linguagens serem mais ou menos populares do que usadas efetivamente, as seguintes estão bem colocadas atualmente:
- Javascript
- PHP
- Python
- Java
- C++
- C#
- C
- Ruby
- Swift
- Go
A escolha dessa lista de 10 candidatos a partir da intersecção dos 5 rankings apresentados anteriormente tem um motivo claro: mercado. Elas representam os maiores mercados mundiais. Para chegarmos no mercado brasileiro, analisamos vagas públicas em sites como ApInfo, Catho e também as interações que temos com alunos sobre oportunidades, testes e vagas no mercado de TI.
2.1 Aplicação dos critérios nos candidatos
2.1.1 JS
Antigamente, há poucos anos atrás, JavaScript era uma linguagem de programação usada predominantemente para funcionar em um navegador web. Os tempos mudaram. Ela se tornou uma linguagem muito poderosa. Com ela é possível fazer games, programador páginas web interativas, escrever aplicativos e agora até a parte de back-end do servidor (usando Node.js). Mais ainda, ela se tornou tão popular e útil que diversas bibliotecas e frameworks foram criados para ela, a tornando repleta de recursos interessantes e que agilizam o desenvolvimento.
Atualmente, se você falar que sabe “só” a linguagem JavaScript, mas não conhece nenhum framework, como JQuery, Angular.js, Vue.js, React.js e outros importantes, será difícil lhe considerarem para a vaga. Isso tornou a linguagem poderosa, porém complexa, por ser muito ampla. Algo parecido aconteceu com a linguagem Java. Saber só a linguagem Java, sem conhecimento de Design Patterns, também não adianta para conseguir vagas de emprego.
Vários pontos também devem ser creditados a linguagem JavaScript por sua forma de uso. Basta abrir um arquivo HTML em um editor de texto para que seja possível escrever código em JS e ver o resultado no navegador. É muito simples testar e, por isso, ela será sempre uma forte concorrente para as primeiras posições do ranking sequencial. Contudo, ela não é a primeira atualmente por alguns motivos. Pesa contra ela aceitar quase tudo, o que foi pensado para facilitar o aprendizado, mas na verdade atrapalha. Também entra na contra a diversidade de assuntos a serem aprendidos dentro dela, o que dificulta para quem está só buscando tutoriais mais simples.
2.1.2 Java e C++
Java é uma das principais linguagens do mundo e sempre será muito utilizada para desenvolvimento web e mobile. Ela tem que estar presente em qualquer sequência mais abrangente, mas começar por ela pode ser uma tarefa árdua. O ideal é que, ao chegar nela, você já tenha conceitos básicos de programação que lhe permitirão entender melhor seus diferenciais. Além disso, a curva de aprendizado para aprender a linguagens e seus diversos frameworks é demorada.
A linguagem C++ é considerada ainda mais ampla e complexa do que Java. É uma linguagem muito usada para o desenvolvimento de jogos por possuir muito desempenho, porém também é considerada uma linguagem perigosa no sentido de permitir ao programador muitos recursos que podem danificar o equipamento. Antes de aprendê-la é preciso ganhar segurança e bagagem com uma linguagem mais simples.
A boa notícia é que, embora elas sejam linguagens totalmente diferentes, elas também possuem várias similaridades em algumas construções de código, por isso quando chegar a hora e você aprender uma, a outra será mais fácil de ser absorvida.
2.1.3 C#
Existem algumas fortes opiniões que C# é a linguagem do milênio. Ela veio depois de C, C++ e Java, ou seja, ela foi projetada e criada levando em consideração os prós e contras de cada uma. Não à toa, é hoje uma linguagem suada em muitas situações. Pode ser usada no Visual Studio, no Android Studio, na Unity 3D, na Xamarin. Ela é extremamente poderosa e ainda possui como vantagem um aprendizado mais fácil. Começar por ela, contudo, pode ser um problema por atropelar um pouco do histórico que ela ajudou a resolver. É importante sofrer um pouco antes para virar um profissional mais completo para diferentes situações e entender melhor C#.
2.1.4 C
Uma linguagem simples, projetada para desenvolver sistemas, extremamente veloz e chata para desenvolver. Reclama e demanda muita coisa que se resolve de forma simples em outras linguagens, como a conversão de tipos. No entanto, é excelente para aprendizado de programação e de seus principais conceitos. Em um dos Rankings de Linguagens, o Tiobe, ela foi a campeã de 2017.
2.1.4 Python
Não espere aprender Python e estar empregado no dia seguinte, porém ela representa uma linguagem em plena ascensão. Ela é uma excelente porta de entrada para aprender como a programação e a linguagem funciona. Atualmente, perde no volume de demandas para Javascript pensando no mercado, mas sua simplicidade, seu site com seus tutoriais, referências e exercícios, tornam ela muito mais atrativa para quem nunca programou.
2.1.5 PHP
A linguagem mais utilizada para desenvolvimento web. Funciona em qualquer servidor e é facilmente utilizada localmente, no seu computador, criando um servidor local. Essa linguagem sofre muito bullying por permitir misturar código PHP com HTML livremente, o que pode gerar muita confusão se não for bem organizado, mas seu valor é claro no mercado. Dificilmente um profissional bom de PHP fica sem emprego, pois com essa linguagem ele pode desenvolver muitos tipos de sistemas web.
Atualmente existem dois paradigmas de programação na linguagem PHP: estruturado e orientado a objeto. Você pode escolher qual usar, assim como na linguagem C++, mas a sugestão é entender os dois modos e, uma vez entendido, dar preferência para o modo orientado a objeto.
2.1.6 Go, Ruby e Swift
Go é uma linguagem relativamente recente (no presente momento ainda não completou 1 década de criação) criada pela Google que tem fortes características didáticas e foco em produtividade. Com código aberto e ótima documentação e exemplos, é também uma linguagem em ascensão. Mas não possui muito mercado aqui no Brasil comparada com as demais que citei.
Ruby é, das 3 desta seção, a linguagem mais antiga, e é similar a Python em alguns aspectos. Ela é de fácil aprendizado e possui um framework muito famoso, Ruby on Rails, que a tornou muito útil para algumas situações, sendo usada principalmente na área de desenvolvimento web. No Brasil o mercado que usa a linguagem está crescendo, mas ainda perde para as principais.
Swift é atualmente a principal linguagem usada para programar apps nativos iOS. Ela foi criada pela Apple para ser usada no software XCode, que gera software para os diferentes sistemas operacionais da marca (Mac OS e iOS). Quem for começar a aprender desenvolvimento nativo iOS hoje, pode ir direto para Swift sem precisar aprender a linguagem Objective-C. Só existem vantagens nessa escolha, por isso a tendência é que a linguagem Swift se consolide como a principal. Para quem já aprendeu em Objective-C, é bom se atualizar, mas ainda existe mercado por ser possível criar apps usando qualquer uma das duas linguagens no XCode.
3. O Ranking de linguagens UT (2018)
- Python
- Javascript
- PHP
- C
- C#
- Java
3.1. Análise do Ranking
3.1.1 Pyton
Python ocupa a primeira posição porque ela ensina a programar de forma rápida e motivante. Um estudante da linguagem rapidamente entende como ela funciona e consegue testar várias possibilidades. A prática rápida acelera o aprendizado de como usar a linguagem para resolver problemas.
3.1.2 JavaScript
Javascript vai permitir construções bem diferentes de Python, mas terá similaridades por também ser uma linguagem interpretada. Ao praticar Javascript em nível iniciante, várias funcionalidades interessantes do desenvolvimento web serão aprendidas. Elas serão a base para se qualificar realmente para o mercado. Se você mergulhar fundo em JavaScript, você correrá um sério risco de conseguir um emprego e bem remunerado. Melhor: para mergulhar só é preciso de tempo e dedicação. Existem materiais gratuitos ótimos na internet. Ler e absorver esses dois materiais podem fazer toda a diferença para sua carreira profissional: Eloquent JavaScript e JS The Right Way.
3.1.3 PHP
PHP possui alguns recursos, como o acesso ao banco de dados via PDO, que são muito queridos por programadores iniciantes. Ela representa uma linguagem de fácil aprendizado, que também é interpretada, assim como Javascript e, por isso, deverá ser facilmente absorvida. Será necessário também aprender a usar os principais frameworks da linguagem, mas como citei acima, quem sabe bastante de PHP, especialmente entendendo a diferença entre usar ou não orientação objeto e os frameworks, corre um risco enorme de trabalhar na área. Utiliza-se um programador PHP para diversas finalidades.
3.1.4 C, C# e Java
Quando você chegar nesse ponto, emprego não será mais um problema, mas talvez sua motivação seja conquistar certificados e assim concorrer para as vagas mais disputadas. Nesse caso, após aprender orientação a objeto com Python e com PHP, e ainda, entender o que de OO está presente em JS, pegar uma linguagem como Java não será difícil e você deve fazer isso caso o propósito seja conseguir as certificações Java, como de Programador Java, inicial, e várias outras até a última, a de Arquiteto Java.
Contudo, se seu objetivo não for esse e você quiser continuar uma sequência de aprendizado, aprenda a linguagem C. Uma linguagem compilada, diferente das anteriores que já dominará. Busque algum software realmente útil para você que possa ser desenvolvido na linguagem C e compare os resultados desenvolvendo o mesmo software em outra linguagem. Esse aprendizado será mais importante do que dominar a linguagem. Na sequência, aprenda C#. Veja a série de vantagens práticas que C# tem sobre C e, embora não tenha aprendido ainda, atente-se as motivos que C# manteve ou parou de usar algum recurso de C++. Por fim, depois de C# aprenda Java e mergulhe em Design Patterns. Você será um poliglota em linguagens de altíssimo nível, porém, saiba que essa sequência levará pelo menos 6 anos, considerando 1 ano para cada linguagem. Aprender, trabalhar, ganhar experiência e repetir. Essa é a forma de fechar a sequência sugerida.