Melhores linguagens de programação

Quais são as melhores linguagens de programação? Existe a melhor de todas? Quais são as mais populares? E a mais fácil de aprender ou a mais indicada para conseguir empregos na área de TI? Qual a mais usada no desenvolvimento de games e apps? Essas são perguntas frequentes de quem se envolve com o estudo de linguagens de programação.

Este post faz parte da série Poliglota em Linguagens de Programação e responde a essas perguntas.

melhores linguagens de programação

1. Qual é a melhor linguagem de programação de todas?

Adoraria responder de forma cravada: é a linguagem C++. Sou fã da linguagem, ela serve para diversos propósitos e a uso bastante para resolver diferentes problemas computacionais. Mas, na vida real, não é assim que funciona. Não existe a melhor linguagem de programação de todas, porque a resposta depende de vários fatores.

Melhor linguagem para aprender a programar? Melhor linguagem para desenvolver um software específico? Melhor linguagem para ter mais desempenho? Mais confiabilidade? Portabilidade?

As respostas dependem principalmente do tipo de aplicação que se deseja desenvolver e de suas funcionalidades. Definido isso, conseguimos falar quais são as melhores linguagens para cada propósito.

A primeira pergunta é: o software que se deseja desenvolver deverá rodar em qual plataforma? Ele pode ser uma aplicação web e rodar em um navegador, na web, de forma a permitir o acesso de diferentes sistemas operacionais e equipamentos. Pode ser um app para rodar em um dispositivo móvel ou um software para rodar em computador com um determinado sistema operacional. Pode ser também um software para rodar embarcado em um microcontrolador, como o Arduino.

Depois de definida a plataforma, encarada como uma combinação de equipamento mais sistema operacional sobre o qual o software deverá rodar, existe outra pergunta: quais as funcionalidades do software? É um sistema para cadastro e controle de registros? Sistema de login e senha ? Game ? Simulador de Realidade Virtual? App com captura de fotos, processamento de imagens, vídeos e posts?

Vamos analisar as principais alternativas.

1.1 Melhores linguagens desenvolvimento web

O desenvolvimento web é atualmente a principal área de desenvolvimento por um motivo simples: uma página na internet é compatível com a maioria dos equipamentos que possui acesso à Internet. É possível navegar em uma página web usando uma TV smart, um smartphone, um notebook, um computador, independente deles possuírem Android, iOS, Windows ou Mac OS.

Páginas web podem ser estáticas, meramente informativas, compostas por textos, imagens e vídeos. Nesse caso, o usuário tem como navegação clicar nos botões e navegar pelas páginas do site. Não existe uma reação do site além de trazer as páginas requisitadas via menus e botões. Essas páginas podem ser criadas com HTML e CSS, que são linguagens de marcação e não entram na lista de linguagens de programação. Elas servem para estruturar e estilizar páginas web e não para criar interações.

Uma página web também pode ser dinâmica, com funcionalidades que realizam a interação entre o sistema e o usuário. Um cadastro que armazena os registros em um banco de dados, um formulário de envio de mensagem, um acesso restrito com login e senha e um feed automático são exemplos. Para criar interação em uma página web é preciso programá-la e o nome dado a essa área é desenvolvimento web.

1.1.1 Front-end e Back-end

Dentro dela  temos duas divisões, uma focada na experiência com o usuário via interface visualizada no navegador de quem acessa, e outra focada nos sistemas que rodam por trás dessa interface, como o banco de dados e outros tipos de software no servidor. Estas sub-áreas são:

  • Front-end: a linguagem JavaScript (que é diferente da linguagem Java) é a mais indicada para aprender a criar páginas interativas que rodam na máquina de cada usuário.
  • Back-end: existem várias linguagens, mas as principais são: Java, PHP, Python, C#.

Vamos falar de cada uma delas durante a série Poliglota.

1.2 Melhores linguagens desenvolvimento mobile

Você já entrou em algum site que avisa que existe também o aplicativo com o link para baixá-lo? Por que as pessoas e empresas se interessam em desenvolver um app, além do site? Teoricamente, a maioria das funcionalidades de um software pode ser implementada tanto em uma aplicação web quanto em um app.

Para responder isso, vamos analisar outra situação. Você já jogou games no navegador? Pense nos games nativos, nos quais o simples acesso ao browser permite que se jogue, sem instalar nenhum plugin. Agora compare com games que rodam em apps mobile ou no computador.

Pensando em critérios como jogabilidade, gráficos e desempenho, os games de computadores proporcionam experiências mais imersivas e intensas porque o hardware possui mais recursos. É possível instalar um joystick e montar um computador possante para maximizar o desempenho e o visual do jogo. Em um game que roda como um app em dispositivos móveis é parecido. Nos celulares mais potentes vai rodar mais redondo, mas também vai rodar (com simplificações) nos que possuem o sistema operacional compatível e o hardware mais fraco.

Já um game nativo web tem como único recurso o navegador. Tudo tem que ser feito para ele com suas limitações. O hardware não faz diferença como nos outros casos. Por um lado, isso pode ser ruim, mas por outro, essa é uma vantagem (por permitir um uso mais inclusivo), ao lado do fato de não ser preciso baixar e instalar um software. Para os apps que não são games funciona da mesma forma.

1.2.1 Desenvolvimento nativo

Devido aos prós e contras, é comum encontrar discussões recorrentes sobre o que é melhor: desenvolver um aplicativo nativo (isto é, próprio para o sistema operacional que vem no dispositivo móvel) ou uma aplicação web compatível ao máximo possível com mobile. Existem grandes esforços para melhorar essa última linha, principalmente com o conceito de Web Apps.

O desenvolvimento mobile nativo atualmente é dividido por sistema operacional. Os equipamentos que rodam Android, os que rodam iOS, os que rodam Windows Phone ou os que rodam outro sistema operacional. Para cada sistema operacional existem diferente opções de linguagens de programação.

1.2.2 Android

Para o sistema operacional do Google Android, a linguagem de programação Java é mais utilizada.

Alternativamente, o Google criou uma nova linguagem específica para o uso em desenvolvimento para Android: a linguagem Kotlin. Ela está na moda, mas por ora longe de ser consolidada como a principal ou ameaçar o trono da linguagem Java para o desenvolvimento de apps para Android.

1.2.3 iOS

Para desenvolvimento nativo iOS, as principais linguagens são Swift e Objective-C. Ambas linguagens são aceitas no X-Code, software que roda em Mac e gera o aplicativo que será instalado no dispositivo móvel. Deixo aqui o link de um artigo com 10 razões para aprender Swift no lugar de Objective-C.

1.2.4 Híbridos

Existem também ferramentas de desenvolvimento que permitem escrever um código só e gerar o app tanto para Android quanto para iOS. Na prática, alguns ajustes finos precisam ser feitos e se gera um app por vez, mas mesmo assim esse processo agiliza muito o desenvolvimento. A Unity 3D, uma game engine, como também a IDE Xamarin, são exemplos de ferramentas de desenvolvimento capazes de gerar apps para diferentes sistemas operacionais. A linguagem utilizada na Xamarin é C# que, segundo a empresa, é a melhor linguagem para o desenvolvimento web, como mostra a imagem abaixo (e que está aqui).

melhores linguagens

C# é a melhor linguagem para desenvolvimento web segundo a empresa Xamarin.

De forma similar a discussão entre gerar um app nativo vs um web app, existe outra sobre desenvolver um app usando uma ferramenta que exporta para as duas linguagens vs um nativo.

1.3 Desenvolvimento Desktop (PC)

Para uma aplicação de formulários (como usados em cadastros e sistemas de controle) em um computador, as linguagens visuais .NET da Microsoft possuem como vantagem um rápido desenvolvimento. Um software feito em .NET atualmente pode usar 5 linguagens: C#, Visual Basic, J# (versão da linguagem Java da Microsoft), C++ processado (versão da linguagem C++ da Microsoft) e JS (versão da linguagem JavaScript da Microsoft).

Um game também é um exemplo de um software para PC. Eles normalmente são feitos em game engines, como a Unity 3D, que aceita as linguagens de programação C# e JavaScript, ou a Unreal, que aceita a linguagem C++. Existem várias outras, mas essas duas são bem famosas. A linguagem C++ é, atualmente, reconhecida como a mais indicada para games devido ao seu desempenho, mas como melhores linguagens para games podemos colocar todas que citei: C++, C# e JavaScript (essas últimas pelo fato de serem usadas em game engines).

A linguagem C foi projetada para a criação de sistemas e foi usando ela que o sistema operacional Unix foi criado. Criar um sistema operacional não é uma demanda comum, dado que grandes empresas como Samsung, Nokia e outras pensam há muito tempo na criação de um SO próprio e isso ainda não aconteceu. Contudo, se você for algum dia projetar e implementar um sistema operacional, a linguagem C é uma forte concorrente.

Se você estiver interessado em usar programação para projetos científicos, que exigem muito cálculo numérico, a linguagem Fortran é até hoje a melhor linguagem para esse propósito.

Caso o objetivo seja desenvolver um software de relatórios empresariais, o COBOL também é uma linguagem antiga que ainda é muito usada.

2. Quais são as linguagens de programação mais populares?

Agora é possível responder de forma mais direta, sem tantos caminhos, olhando principalmente o volume de uso de cada linguagem. Mesmo assim não dá para cravar de forma unânime. Existem alguns rankings onlines que usam diferentes critérios para classificar as linguagens mais usadas atualmente. Antes de mostrá-los, é importante entender que as linguagens de programação mais populares são as mais usadas e não necessariamente são as melhores linguagens. Ao longo da história, algumas vezes uma linguagem caiu nas graças de desenvolvedores e foi muita usada mesmo não sendo a melhor opção.

2.1 TIOBE

Esse ranking é o primeiro quando procuramos pelo termo em inglês e é citado em um renomado livro da área, Conceitos de Linguagens de Programação (SEBESTA, 2015), atualmente na décima primeira edição.

Ele leva em consideração mecanismos de busca populares, como Google, Bing, Yahoo!, Wikipedia, Amazon, Youtube e outros. Também estabelece alguns critérios para que a linguagem seja considerada no ranking e é atualizado mensalmente. A imagem abaixo mostra as 10 primeiras de fevereiro de 2018.

melhores linguagens

Ranking Tiobe.

2.2 PYPL

Esse ranking do Github adota critérios bem diferentes do TIOBE. Enquanto o último procura por páginas que contenha o nome da linguagem, o PYPL analisa a frequência com que novos tutoriais com cada linguagem são pesquisados no Google. Os dados brutos vem do Google Trends. A imagem abaixo mostra as 10 primeiras.

 

melhores linguagens

Ranking PYPL.

2.3 Stack Overflow

O ranking do Stackoverflow é, na minha opinião, o mais completo. Ele dispõe informações da área como um todo e segmenta as linguagens em as mais populares, as mais adoradas, detestadas, evitadas e outros dados interessantes. Ele obtém os dados a partir de pouco mais de 64 mil desenvolvedores de software espalhados em 213 países. A imagem abaixo mostra os resultados de 2017 (esse ranking organiza seus resultados em pesquisas anuais).

melhores linguagens

As 10 linguagens mais populares de 2017 no ranking do Stackoverflow.

 

2.4 IEEE Spectrum

Neste aqui são combinadas 12 métricas de 10 fontes diferentes e as linguagens são divididas em: web, mobile, enterprise (desktop) e embedded (sistemas embarcados). A imagem abaixo mostra a lista dos top 10 em 2017 com os ícones para cada divisão.

melhores linguagens

Top 10 da IEEE Spectrum.

2.5 RedMonk

Esse ranking usa como fonte o GitHub e o Stack Overflow. Visa traçar tendencias com base nas discussões (Stack Overflow) e utilização (GitHub) e também possui atualizações anuais ao invés de mensais. Todo mundo sabe que CSS não é uma linguagem de programação e sim uma para definir folha de estilos, mas, por algum motivo, ela está em sétimo lugar no ranking. Procurei a explicação dentro do RedMonk e não achei. Se você encontrar o motivo deles consideraram ela na lista é só me mandar (por ser por comentário ou email no leandro@mentalguild.com.br) que posto aqui com os devidos créditos.

melhores linguagens

Ranking completo da RedMonk com 22 linguagens.

3. Escolhendo as melhores linguagens de programação

Sabendo disso, quais são as melhores linguagens de programação para você? Ficou com vontade de aprender alguma linguagem de programação?

Apesar de existirem centenas de linguagens, é possível perceber que várias se repetem nas primeiras posições dos diferentes rankings. Linguagens como Python, JavaScript, Java, C#, C++, C e PHP são, com certeza, as mais populares atualmente. Na teoria, não quer dizer que são as melhores linguagens, como expliquei acima. Na prática, se você souber trabalhar com elas, terá mais chances de conseguir melhores vagas no mercado de TI.

Quem trabalha com Inteligência Artificial (IA) possivelmente não gostou muito da minha conclusão. Essa área costuma usar as linguagens Lisp, Scheme, Prolog, Haskell e outras similares. A maioria dessas linguagens são chamadas de funcionais ou lógicas, com cálculos simbólicos no lugar de numéricos. Algumas são baseadas em regras, como Prolog. Várias delas estão nos rankings da seção 2, mas atualmente, pensando no Brasil, elas ainda são tão usadas e requisitadas como as outras citadas. Em um futuro próximo, isso pode mudar bastante. Veja essa opinião sobre um profissional de TI afirmando que nenhuma profissão será poupada pela IA.

Veja também o ranking de linguagens da Universidade da Tecnologia.

Obrigado e até o próximo post!

Sobre o Autor

Leandro Pinho Monteiro

Leandro Pinho é engenheiro de computação, graduado em Ciência da Computação na Universidade Estadual de Maringá (UEM) e mestre em Engenharia da Computação na Faculdade de Engenharia Elétrica e Computação (FEEC) da UNICAMP, ambas formações com foco em Computação Gráfica. Possui experiência no desenvolvimento de sistemas interativos 3D para pontos de venda, marketing e eventos. Atualmente trabalha como consultor de tecnologia e é o responsável pela coordenação dos cursos oferecidos na Universidade da Tecnologia.