Qual é a melhor linguagem de programação?

Qual é a melhor linguagem de programação?
André Santana
André Santana

Compartilhe

Quando pensamos sobre como programar computadores e do que é necessário para se tornar uma pessoa desenvolvedora, talvez você já tenha se perguntado: “Qual é a melhor [linguagem de programação?](https://www.alura.com.br/artigos/qual-e-a-melhor-linguagem-de-programacao) para começar na carreira dev?” ou até mesmo: “Quais tipos de programação vale realmente a pena aprender para criar qualquer programa?

A resposta para essas perguntas é bem mais complexa do que parece, pois à medida que buscamos uma linguagem perfeita para criar nossas aplicações, podemos deixar de conhecer diversos recursos que contribuiriam com o nosso trabalho.

Isso significa que não estaríamos aproveitando o que cada uma das linguagens de programação existentes têm para oferecer.

Pode parecer frustrante que, em um mundo com tanta informação, não tenhamos métricas claras e objetivas para definir qual linguagem de programação é a melhor. Por isso, neste artigo, responderemos às perguntas de outra forma.

Conheceremos as principais diferenças entre os tipos de linguagem de programação mais populares, além de entender que a escolha ideal está ligada ao propósito do que queremos desenvolver.

Vamos nessa?

O que é programação?

Antes de falarmos sobre as linguagens de programação mais utilizadas, é importante ter claro em mente o que é programação e onde a linguagem entra nas aplicações, principalmente se você for uma pessoa iniciante na área.

De forma breve, programação é como dar instruções detalhadas a um computador para ele executar tarefas específicas, desde cálculos simples até a criação de aplicativos complexos.

Imagine que o computador é uma pessoa que só entende um idioma específico: a linguagem de programação.

Essa linguagem é um conjunto de regras e símbolos que o programador ou programadora usa para “conversar” com o computador.

Cada linguagem tem suas próprias características e é mais adequada para certos tipos de tarefas. Como já dissemos, sua escolha depende do objetivo da aplicação e das preferências da pessoa desenvolvedora.

Ainda não ficou claro o que é linguagem de programação? Não se preocupe!

No próximo tópico, explicaremos com mais detalhes. Leia também: “Como começar a programar?” — 7 dicas práticas de como aprender a programar em 2024

Banner da Escola de Programação: Matricula-se na escola de Programação. Junte-se a uma comunidade de mais de 500 mil estudantes. Na Alura você tem acesso a todos os cursos em uma única assinatura; tem novos lançamentos a cada semana; desafios práticos. Clique e saiba mais!

O que é linguagem de programação?

Depois da introdução, você já sabe que existem diferentes linguagens na programação, mas o que você ainda não sabe é qual seria a aplicabilidade de cada uma delas, ou seja, para que elas servem.

Então, pensemos na seguinte situação: Imagine que você está em outro país e agora precisa se comunicar em um idioma que você não domina. Como garantir uma comunicação eficiente? Nessa situação, temos algumas opções possíveis para fugir desse problema:

  1. Buscar alguma pessoa que fale o idioma para traduzir simultaneamente o que as pessoas estão falando;

  2. Tentar encontrar algum idioma em comum, que ambas as partes consigam falar. Nenhuma das duas opções parece ser 100% viável, não é mesmo?

A tradução simultânea pode ser uma boa opção, mas parte das mensagens pode se perder durante a conversa.

E, embora a tarefa de encontrar um idioma em comum possa ser interessante, também não existe uma garantia de que a mensagem chegue para ambos da mesma forma, por conta do uso de gírias e palavras desconhecidas que podem surgir.

Vamos pensar em uma segunda situação. Veja a figura abaixo:

Recorte de uma tela de troca de mensagens. A primeira mensagem diz*"Olá! Você pode me emprestar dois canetas coloridas?" Esta mensagem está alinhada a direita, dentro de um balão de diálogo, com fundo verde. Já a segunda mensagem diz "Sim!" e está alinhada à esquerda, dentro de um balão de diálogo, com fundo branco.

Neste trecho temos duas pessoas conversando e, embora a primeira pessoa diga: “Olá! Você pode me emprestar dois canetas coloridas?”, com um erro ortográfico na estrutura da frase, é possível entender que a segunda pessoa é capaz de compreender o que foi pedido.

Isso acontece porque, diferentemente dos computadores, as pessoas são capazes de se adaptar e compreender pequenas variações de seu idioma no processo de comunicação.

Mas, enfim, o que isso tem a ver com as linguagens de programação?

Tudo! As linguagens de programação, assim como em nosso primeiro problema, são linguagens que permitem a pessoa se comunicar com um computador.

E, assim como no exemplo dois, elas possuem regras estruturais. Porém, as máquinas não são tão capazes de se adaptar para entender que “dois canetas” quer dizer o mesmo que “duas canetas”, como as pessoas.

Definição de Linguagem de Programação

Após os exemplos apresentados acima, podemos dizer que as linguagens de programação nada mais são do que um idioma com regras de escrita, para garantir a comunicação entre um ser humano e o computador.

Mas, então, por que temos que aprender tantas linguagens diferentes?

O computador não consegue se adaptar tão facilmente como o ser humano a outros idiomas, e é por isso que são criadas diversas linguagens.

Assim, dependendo do assunto que queremos conversar com a máquina, ou seja, do propósito do programa que queremos desenvolver, existirá uma linguagem própria para cada operação.

Qual a linguagem de programação mais usada?

As linguagens de programação possuem muitas características diferentes entre si, desde como as palavras e os símbolos especiais são definidos, a forma como as instruções dadas ao computador são traduzidas até o momento de saírem das interfaces em que digitamos os códigos para serem encaminhadas aos processadores da máquina.

Existem inúmeras estratégias para escolher uma linguagem de programação ideal, mas, talvez, a primeira que você deva conhecer está associada a consultar a comunidade dev.

Isso mesmo que você leu! Pessoas que desenvolvem têm uma das maiores e mais ativas comunidades técnicas dentre todas as profissões existentes, e saber pedir ajuda pode ser um trunfo em qualquer fase de sua carreira.

Leia também: Quem está por trás das principais linguagens de programação?

Quais linguagens de programação a comunidade DEV indica?

A comunidade DEV, composta por profissionais experientes e entusiastas da tecnologia, frequentemente compartilha suas preferências e recomendações sobre quais linguagens são mais indicadas para diferentes tipos de projetos.

Dessa forma, entender as linguagens de programação mais indicadas pela comunidade pode fornecer insights valiosos para quem está começando, e até mesmo para quem já tem experiência na área. Confira a seguir, algumas dicas!

1) Índice TIOBE

Podemos, inicialmente, recorrer a rankings de linguagens de programação para tentar entender as tendências do mercado.

Veja a tabela abaixo, que apresenta um ranking construído com base no índice TIOBE da comunidade de programação:

Fevereiro 2023Fevereiro 2022Linguagem de ProgramaçãoClassificaçãoVariação na classificação
11Python15,49%+0,16%
22C15,39%+1,31%
34C++13,94%+5,93%
43Java13,21%+1,07%
55C#6,38%+1,01%
66Visual Basic4,14%-1,09%
77Javascript2,52%+0,70%

Fonte: TIOBE index

2) StackOverflow

Outra estratégia pode ser buscar em fóruns da comunidade, por exemplo, no bom e velho StackOverflow:

Um gráfico de barras que cresce na horizontal. O gráfico lista linguagens de programação. A primeira que aparece é JavaScript com 65,36%. A segunda (logo abaixo) é HTML/CSS com 55,08%. A terceira SQL com 49,43%. Em quarto lugar, Python 48,07%. Quinto lugar typescript com 34,83%. Java, em sequência com 33,27%. Bash/shell em seguida com 29,07%. As quatro últimas em sequência são C# com 27,98%, C++ com 22,55%, PHP com 20,87% e C com 19,27%. As barras são de cor gradiente vermelha e os textos estão escritos em cor branca

Fonte: Pesquisa do Stack Overflow

Veja que existe uma grande variação nos resultados, isso acontece porque cada ranking é feito com pessoas e propósitos diferentes.

No caso do Stack Overflow, por exemplo, foram consideradas as opiniões de 71.547 pessoas, sendo que 8,72% de quem respondeu está aprendendo a programar, enquanto 91,28% são pessoas desenvolvedoras profissionais.

É importante ter proximidade com a comunidade, já que a partir das colaborações com as linguagens, serão encontradas mais informações, códigos e ajuda em páginas da web.

Para saber mais sobre os rankings do StackOverflow, você pode conferir no site da Developer Survey

3) StackShare

Outra possibilidade é verificar quais tecnologias ou linguagens são utilizadas por empresas que desenvolvem software, uma vez que um dos propósitos por trás de suas dúvidas pode ser disputar aquela vaga desejada. E a comunidade também pode ajudar nisso.

Ao consultar o website StackShare.io, por exemplo, é possível ver quais linguagens e ferramentas estão em alta conforme as companhias de tecnologia.

A imagem apresenta um recorte de tela de um app. No topo um painel de seleção com duas opções "Following" e "Trending", em que "Trending" está selecionado, e por conta disso está com fundo em cor azul. Abaixo, quatro linguagens são descritas com seus respectivos símbolos. Primeiro: javascript com seu logotipo à esquerda (fundo amarelo e JS). Em segundo: Python. Em terceiro: HTML5 e em quarto Java. A direita de cada uma das linguagens tem um botão que permite seguir a ferramenta. Na figura, o usuário segue javascript e html5, e não segue python e java.

Saiba mais sobre os tipos de linguagem de programação

Já vimos alguns meios de identificar quais linguagens estão mais presentes no mercado e podem merecer nossa atenção. Entretanto, é importante buscar também outras fontes de informação.

Se você curte podcasts, pode ser legal ouvir o que a galera do Hipsters.Tech tem a dizer a respeito de linguagens de programação. Confira: Hipsters Ponto Tech #300

Melhor linguagem de programação – Hipsters Ponto Tech #300

Ouvir um pouco de:
Melhor linguagem de programação – Hipsters Ponto Tech #300

Estruturas de diferentes linguagens de programação

Chegou a hora desdobrar o assunto linguagem de programação e conhecer a sua estrutura para ter uma visão mais clara das suas classificações.

Quais são os tipos de linguagens de programação?

As linguagens de programação podem ser classificadas em duas categorias principais: linguagens de alto nível, que se aproximam da forma como os seres humanos se comunicam, e de baixo nível, que são fáceis de serem compreendidas pelos sistemas computacionais, ou seja, pela máquina.

Vamos nos aprofundar sobre cada uma delas:

  • Linguagens de alto nível: são caracterizadas por permitirem que os códigos escritos com elas sejam mais simples, se tornando uma oportunidade para que pessoas desenvolvedoras consigam ler, editar, compartilhar, comentar ou revisar códigos escritos de forma mais fácil quando comparado com as linguagens de baixo nível.

Linguagem de baixo nível: por estarem mais próximas de como a máquina se comunica, são mais eficientes em termos de desempenho.

Isso acontece porque a forma com que as linguagens são escritas se aproxima das linguagens da máquina (código binário, por exemplo), são realizadas menos conversões e, por consequência, as instruções são direcionadas de uma forma mais próxima do hardware (sem camadas extras de abstração).

Classificação das linguagens de alto nível

No grupo de linguagens de programação de alto nível, que são o foco deste artigo, elas podem ser classificadas quanto ao seu tipo de paradigma de programação.

A partir disso, são definidas como linguagens:

  • Imperativas.
  • Orientadas a objetos.
  • Funcionais.
  • Lógicas.

Nesta abordagem, a linguagem C++ pode ser tratada como multi-paradigma, pois se trata de uma linguagem orientada a objetos, que também suporta programação imperativa.

Já a linguagem Java, por exemplo, também pode ser classificada como uma linguagem multi-paradigma, por permitir que os programas sejam escritos empregando o uso de programação orientada a objetos.

No entanto, a ela também possui suporte para os conceitos de programação imperativa e, em versões mais recentes, utiliza recursos do paradigma funcional.

Assim como as linguagens Java, Python, Javascript e C# também são linguagens multi-paradigma, que suportam programação orientada a objetos, programação imperativa e funcional.

Você está iniciando seus estudos em programação e quer aprender todos os tipos de linguagens que citamos acima para se profissionalizar na área?

Conheça os Cursos da Escola de Programação da Alura, ministrados por especialistas no assunto.

Comparação entre as linguagens de programação

Para ilustrar como essas linguagens se diferem quanto a forma de escrita , vamos pensar em uma implementação que poderia, eventualmente, estar presente em um jogo de computador. Imagine a seguinte situação:

Você está implementando um novo game no formato RPG e, nesta fase da criação do jogo, é necessário implementar a funcionalidade que possibilita a um jogador ou jogadora escolher entre duas opções de caminhos distintos.

As alternativas são:

  1. abrir a porta da esquerda;
  2. abrir a porta da direita.

Veja abaixo, a figura que ilustra a cena:

A imagem apresenta cinco círculos. No primeiro está escrito "Entrada". Ele está conectado a dois outros círculos. Um à esquerda, cuja mensagem em seu interior é "Porta 1" e outro à direita, onde lê-se "Porta 2". O círculo "Porta 1" está conectado a dois círculos. À esquerda, está associado a um círculo com a mensagem "Porta 3" e à direita, a outro círculo com a mensagem "Porta 4". Os círculos são de cor branca, com alguma transparência e ao fundo da imagem existe uma caverna com pouca iluminação.

Para resolver este problema seguiremos o seguinte algoritmo:

  1. Definir a função principal (main), conforme a linguagem de programação abordada e quando houver.

  2. Criar uma variável que armazene a opção do usuário ou usuária (esquerda ou direita).

  3. Solicitar ao usuário ou usuária que informe a opção desejada, armazenando a resposta em uma variável.

  4. Comparar a opção informada pela pessoa, utilizando um desvio condicional, que mostrará a sala de destino para o jogador ou jogadora conforme a opção estabelecida.

  5. Se a opção for esquerda, a mensagem exibida será “Abrindo a Porta 1”, dado que o jogador ou jogadora que estará na “Entrada”.

  6. Se a opção for direita, a mensagem exibida será “Abrindo a Porta 2", dado que o jogador ou jogadora que está na “Entrada”.

Agora que já temos ideia de como funciona esta solução, vamos implementá-la utilizando algumas das linguagens de programação mais presentes no mercado, são elas:

  1. C++;
  2. Java;
  3. C#;
  4. JavaScript;
  5. Python.

Caso você queira se aprofundar nos aspectos teóricos de desvios condicionais ou operadores lógicos, que podem ser necessários para construirmos juntos a resposta para este problema, você pode consultar o material:

1) Linguagem de Programação C++

1.1) O que é a linguagem C++ e para que serve?

A linguagem C++ pode ser tratada como uma extensão da linguagem C, que por sua vez, foi desenvolvida para se aproximar da linguagem de um computador e é bastante utilizada em implementações de sistemas computacionais que exigem bastante desempenho e têm ênfase no campo de sistemas embarcados.

Quando falamos de sistemas embarcados nos referimos a aplicações eletrônicas com poder de processamento, inseridos em um dispositivo ou produto, geralmente associados a algum hardware ou dispositivo físico.

Diariamente, vemos alguns exemplos destes sistemas, como nas controladoras que gerenciam as funcionalidades das televisões ou no controle dos dispositivos presentes em automóveis,que permitem o gerenciamento dos subsistemas de um veículo (como o motor).

1.2) Diferenças entre as linguagens C e C++

Ambas apresentam algumas diferenças quanto à forma de escrita das palavras-chave reservadas para as instruções serem oferecidas ao computador.

Dessa forma, também se diferem quanto aos recursos disponíveis, entenda com mais detalhes:

  • Linguagem C: é considerada por quem desenvolve como a “linguagem-mãe”, por ser desenhada para garantir a construção de programas por uma perspectiva definida como procedural.

Isso significa que ela é usada para a escrita de programas que vão solicitar dados de um usuário ou usuária, ou seja, que permitam a captura de informações de fora do computador, para serem armazenadas dentro do sistema, e uma variável.

Na sequência, deve-se fazer um procedimento utilizando esses dados para gerar uma resposta, seja para a pessoa usuária ou para outro trecho de código do nosso programa.

Sendo assim, ela opera em um paradigma imperativo, por ser focada em mudar os estados de uma variável em um sistema com base nas instruções que damos ao computador.

Por consequência, permite uma descrição de código que é mais fácil de ser empregada em projetos de software mais complexos.

De modo geral, este tipo de abordagem é focada na relação entre os objetos (que assumem o lugar das variáveis), garantindo a comunicação entre eles por meio de eventos (os métodos), que podem ou não alterar suas próprias características (atributos).

Vamos ver como criar nossa solução utilizando esta linguagem?

1.3) Resolvendo o Desafio

No tópico anterior deste texto, já discutimos a solução algorítmica necessária para resolver o problema.

Nesta seção, vamos resolvê-lo observando a linguagem de programação C++. Veja a solução proposta:

#include <iostream>
using namespace std;

int main() {
 char opcaoUsuario = ' ';

 cout << "Você está na 'entrada', deseja ir para esquerda ou direita? Digite E para esquerda ou D para direita: ";
 cin >> opcaoUsuario;

 if(opcaoUsuario == 'E' or opcaoUsuario == 'e'){
   cout << "Abrindo a Porta 1" << endl;
 }else if(opcaoUsuario == 'D' or opcaoUsuario == 'd'){
   cout << "Abrindo a Porta 2" << endl;
 }else{
   cout << "Opção Inválida" << endl;
 }
}

Inicialmente, importamos uma biblioteca, que contém códigos já implementados para o uso adequado da linguagem.

Para isso, utilizamos a palavra reservada #include. A biblioteca iostream permite a execução de operações de interação com o usuário ou usuária, recebendo dados que serão digitados, e exibindo os resultados de operações que executaremos.

Em sequência, temos uma instrução definida como using namespace std;, utilizada para definir um espaço de nomes ou namespace. O namespace pode ser definido como uma região que será observada por nosso programa e contém os identificadores dos nomes dos tipos de dados, das variáveis e funções que estão dentro deste espaço.

Em nosso exemplo, são identificadas as funções, variáveis e tipos de dados, necessários para executar operações básicas da linguagem.

A função principal (main), marca o início do nosso programa e dentro dela é executado um conjunto de instruções que permitem alcançar a resposta para a solução do problema.

Muitas linguagens adotam esta palavra reservada, garantindo que na hora da construção do programa seja possível identificar um ponto de partida.

Após isso:

  1. Criamos uma variável chamada opcaoUsuario, do tipo char. Ela permite armazenar apenas um caractere, e no caso da linguagem C++, precisa ser apresentado na hora que definimos uma variável.

  2. Exibimos uma mensagem para o usuário ou usuária, utilizando a instrução cout << "*mensagem*". cout significa console output, ou seja, o que será exibido na saída da aplicação.

  3. Utilizamos a instrução cin >> para capturar os dados digitados pelo usuário ou usuária, e armazenamos esses dados na variável informada logo após o operador >>.

  4. Por fim, temos um conjunto de desvios condicionais no qual, assim que uma regra seja atendida, o código “executará” um dos blocos mencionados:

    • a) Se o valor informado pelo usuário ou usuária for 'E' ou 'e', então a mensagem exibida será “Abrindo a Porta 1”.

    • b) Senão, se o valor informado pelo usuário for 'D' ou 'd', então a mensagem exibida será “Abrindo a Porta 2”.

    • c) Por fim, se o valor informado for diferente dos dois casos acima, então, a mensagem exibida será “Opção Inválida”.

  5. Note que também existe uma instrução endl, utilizada para pular uma linha ao final da exibição da mensagem.

Observe que, embora tenhamos mencionado a programação orientada a objetos, não utilizamos nenhum fundamento deste paradigma de programação.

Vamos manter esta abordagem até o final e focar apenas na entrada de dados, no processamento destes dados e na resposta para a pessoa usuária, OK?

1.4) Conceitos de linguagem de programação: C++

A linguagem de programação C++ possui diversos recursos de escrita que serão utilizados em outras linguagens que veremos a seguir.

No entanto, existem algumas características marcantes na forma como escrevemos códigos em C++. Por exemplo:

MétricasC++
Tipo dos dadosFortemente tipados (desconsiderando o tipo union)
Recomendada paraSistemas embarcados (hardware) ou sistemas de alto desempenho (kernel de Sistema Operacional, por exemplo)
VantagensRápida, multi-paradigma, alta portabilidade (podemos escrever programas para diferentes plataformas), possui um bom conjunto de bibliotecas e não é tão baixo nível
CaracterísticasOs blocos de código são definidos com {} e precisa marcar o fim de uma instrução com ;
1.4.1) Tipagem forte

Quando falamos que uma linguagem de programação é fortemente tipada, significa que definimos o tipo do dado no momento da criação da variável e, por consequência, as operações relacionadas a este tipo de informação só poderão ser executadas com o tipo adequado de variável.

1.4.2) Paradigmas de programação

As linguagens de programação multi-paradigma, por sua vez, são aquelas que podem ser empregadas em estratégias de programação diferentes.

No caso de C++, existe um destaque por ser empregada no uso de programas com paradigma imperativo ou orientado a objetos.

1.4.3) Portabilidade, abstração e velocidade de execução

Falamos que a linguagem tem alta portabilidade, pois as principais plataformas computacionais, como Mac OS, Windows e Linux, podem consumir programas escritos em C++ (com algumas adaptações).

Nós ainda podemos considerar que C++ não é nem uma linguagem de baixo e nem de alto nível.

Sua característica está relacionada com o quão próximas as instruções utilizadas para a comunicação estão da interpretação pelo processador de um computador (baixo nível) ou do quanto se aproximam do entendimento pelas pessoas (alto nível).

Podemos dizer que uma linguagem de alto nível está mais “abstraída” com relação aos comandos interpretados pela máquina.

Por fim, a velocidade mencionada na tabela resulta do fato da linguagem C++ ser compilada, ou seja, tudo que digitamos é convertido diretamente para uma linguagem mais próxima da linguagem da máquina.

Como vimos no começo deste artigo, sem tradutores no meio do caminho, conversamos melhor com a outra entidade que faz parte da conversa, o mesmo acontece com o computador, que receberá melhor as instruções dadas por nossos algoritmos.

1.5) Escolhendo a linguagem certa para o seu projeto

Estas características são importantes para sabermos se a linguagem C++ é adequada ou não para um projeto.

Como existem muitas comunidades ativas que podem dar suporte para linguagem, é fundamental que saibamos se estamos utilizando as ferramentas corretas para criar um programa de computador. Para saber mais de programação orientada a objetos e programação estruturada, acesse:

Para saber mais sobre o processo de compilação, acesse:

2) Linguagem de Programação Java

2.1) Diferença entre Java e C++

A escrita da linguagem Java possui características muito parecidas com C++.

No entanto, uma das principais diferenças está na forma como os códigos que digitamos são traduzidos para os processadores.

A linguagem Java, diferente do C++, é interpretada e, ao mesmo tempo, compilada.

Vamos compreender melhor os efeitos desse processo para o desempenho de um programa nos próximos tópicos.

2.2) Resolvendo o Desafio

Veja como a solução para o mesmo problema pode ser verificada em um código Java:

import java.util.Scanner;

public class Main {
 public static void main(String[] args) {
   Scanner entrada = new Scanner(System.in);

   char opcaoUsuario = ' ';
   System.out.println("Você está na 'entrada', deseja ir para esquerda ou direita? Digite E para esquerda ou D para direita: ");

   opcaoUsuario = entrada.nextLine().charAt(0);

   if(opcaoUsuario == 'E' || opcaoUsuario == 'e'){
     System.out.println("Abrindo a Porta 1 \n");
   }else if(opcaoUsuario == 'D' || opcaoUsuario == 'd'){
     System.out.println("Abrindo a Porta 2 \n");
   }else{
     System.out.println("Opção Inválida \n");
   }
 }
}

Neste bloco temos muitos elementos parecidos, no entanto, temos alguns trechos de código inseridos por serem necessários conforme as características da linguagem.

As principais mudanças podem ser observadas pelos seguintes critérios:

  1. A palavra utilizada para importar uma biblioteca, neste caso, é o import.

  2. O marcador da classe Main, que é incorporado nesta solução para garantir a estrutura de uma linguagem orientada a objeto. Neste caso, a classe pode ser tratada como um tipo de dado, não primitivo, que possuem propriedades (que representam seu estado) e métodos (que permitem a alteração destes estados).

  3. A necessidade de criar um objeto do tipo Scanner, que será utilizado para interagir com o usuário ou usuária, uma vez que em Java, tudo que for possível será tratado como um objeto.

  4. A necessidade de “instanciar” o objeto, garantido que o item do tipo Scanner esteja associado ao “input” do sistema.

  5. Os comandos para exibir mensagens na tela, que são estruturados por meio do método System.out.println("mensagem"); em vez de cout << "mensagem";.

  6. A necessidade de capturar uma linha inteira de texto digitado pelo usuário ou usuária, e extrair o primeiro caractere digitado, que está na posição zero desta linha.

  7. Em vez de utilizar << endl, utilizamos o comando \n no próprio texto que será exibido (ele também existe em C++, mas não perderia a oportunidade de mostrar o endl neste momento.

Veja que a parte da construção lógica da solução em si não é alterada, mas a linguagem, por ser diferente, utiliza suas próprias palavras reservadas e conta com sua própria gramática para construção das instruções dadas ao computador.

2.3) Conceitos de Linguagem de Programação

MétricasJava
Tipo dos dadosEstaticamente tipados
Recomendada paraDesenvolvimento de apps que sejam dinâmicos ou aplicações Web (JSP)
VantagensOrientada a objetos, fácil de programar, comunidade forte e possui uma plataforma independente, que facilita a portabilidade da solução
CaracterísticasOs blocos de código são definidos com {} e precisa marcar o fim de uma instrução com ;
2.3.1) Tipagem estática

Uma linguagem estaticamente tipada é aquela que tem seus tipos definidos explicitamente no código, verificados em tempo de compilação.

Para saber mais sobre tipagem estática e dinâmica acesse:

2.3.2) Máquina Virtual Java (JVM)

Diferentemente de C++, há uma interface do Java que fica entre o código digitado pela pessoa desenvolvedora e o computador.

Ela é chamada de JVM (ou Máquina virtual Java), responsável por executar os programas escritos em Java, garantindo maior compatibilidade entre códigos feitos para diferentes sistemas operacionais.

No entanto, este tipo de abordagem tem um custo, consegue imaginar qual é? O tempo para uma aplicação Java ser executada pela primeira vez em uma máquina é relativamente maior do que se o mesmo programa fosse escrito em C++. Isso acontece por dois motivos principais:

  1. A estratégia de construção da solução e, por consequência, para o armazenamento das variáveis.

  2. A necessidade de informar essas instruções para JVM, que interpretará os trechos de código para o processador.

Para saber mais sobre JVM e Java, acesse:

2.3.3) Classes

Quando falamos de Java, é fundamental pensarmos no uso de classes — conceito essencial que vem lá da programação orientada a objetos.

Outras linguagens, que compartilham esta abordagem de programação, também incorporam este conceito.

Quer saber mais sobre classes e estes fundamentos? Leia também: O que são classes e objetos?

3) Linguagem de Programação C

3.1) Resolvendo o Desafio

Do ponto de vista estrutural, a linguagem C# (que se pronuncia “C-Sharp”), para aplicações mais simples, é muito semelhante ao Java.

A principal diferença está na capacidade de aproveitar e gerenciar recursos. Também se destaca quando a solução desenvolvida utiliza os recursos da plataforma.NET.

Para saber mais a respeito de .NET, disponibilizamos uma apostila completa:

using System;

class Program {
 public static void Main (string[] args) {
   char opcaoUsuario = ' ';
   Console.WriteLine ("Você está na 'entrada', deseja ir para esquerda ou direita? Digite E para esquerda ou D para direita: ");

   opcaoUsuario = Console.ReadLine()[0];

   if(opcaoUsuario == 'E' || opcaoUsuario == 'e'){
    Console.WriteLine ("Abrindo a Porta 1 \n");
   }else if(opcaoUsuario == 'D' || opcaoUsuario == 'd'){
    Console.WriteLine ("Abrindo a Porta 2 \n");
   }else{
    Console.WriteLine ("Opção Inválida \n");
   }

 }
}

As principais mudanças a serem destacadas quando comparamos este trecho de código com o escrito em Java, são as seguintes:

  1. A palavra-chave using, utilizada para importar a biblioteca System.

  2. O uso da instrução Console.ReadLine(), para realizar a leitura de dados do usuário (input), em vez do uso do Scanner ou do cin >>.

  3. O uso da instrução Console.WriteLine(), para realizar a exibição dos dados informados ao usuário (output), em vez de System.out.println() ou do cout <<.

  4. Também é possível observar que, diferentemente do Java, para acessar o primeiro símbolo do texto informado pelo usuário ou usuária não utilizamos o método charAt(0), apenas os colchetes [0], indicando que queremos acessar a primeira posição de um vetor de caracteres.

3.2) Conceitos de Linguagem de Programação

MétricasC#
Tipo dos dadosEstaticamente tipados
Recomendada paraDesenvolvimento de apps para desktop, aplicações Web ou serviços web
VantagensCapacidade de gerenciar a memória e os recursos de um programa (uso flexível de memória), rápida e poderosa, orientada a objetos
CaracterísticasOs blocos de código são definidos com {} e precisa marcar o fim de uma instrução

Para saber mais da linguagem C#, acesse:

4) Linguagem de Programação Javascript

Diferente das outras linguagens, o Javascript quase sempre está associado, em sua forma mais simples, ao desenvolvimento de aplicações web.

Por consequência, para uma demonstração adequada, ele será apresentado em conjunto com o HTML.

Vamos ver como esta solução pode ser desenhada?

4.1) Resolvendo o desafio

4.1.1) HTML
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>exemplo</title>
<script src="main.js"></script>
</head>
<body>
</body>
</html>

Este trecho de código consiste na estrutura básica para escrevermos uma página HTML em branco, ou seja, sem nenhum elemento gráfico ou visual.

Entretanto, é importante se atentar à instrução <script src="main.js"></script> que será responsável por “invocar” nosso script, assim que a página HTML for lida pelo navegador.

Nesta abordagem, utilizamos a estrutura HTML para garantir que um conteúdo seja renderizado e acessado pelo navegador.

No entanto, o arquivo escrito em HTML não tem muita utilidade neste momento, a não ser garantir que acessaremos as interações do navegador para ser possível executar nosso exemplo.

Vale destacar ainda que o papel do HTML é garantir que sejamos capazes de estruturar páginas web, definindo a relação entre os elementos que o navegador interpretará na página e o significado deles.

Neste código, por exemplo, são apresentadas tags <head> e <body>, sendo respectivamente empregadas quando queremos:

  1. definir as informações a respeito de nossa página;

  2. descrever os outros elementos que serão utilizados para desenhar a página (o que a pessoa usuária vai ver).

Para saber mais da estrutura HTML, acesse:

4.1.2) Linguagem JavaScript
const opcaoUsuario = prompt("Você está na 'entrada', deseja ir para esquerda ou direita? Digite E para esquerda ou D para direita:");

if(opcaoUsuario === 'E' || opcaoUsuario === 'e'){
console.log ('Abrindo a Porta 1');
}else if(opcaoUsuario === 'D' || opcaoUsuario === 'd'){
console.log ('Abrindo a Porta 2');
}else{
console.log ('Opção Inválida');
}

O trecho de código escrito em JavaScript possui algumas pequenas diferenças:

  1. Veja que não definimos o tipo do dado quando criamos nossa variável. Embora a tipagem seja considerada uma boa prática para a criação de variáveis e constantes, ainda assim a aplicação será executada corretamente.

  2. Podemos escrever uma string tanto, com aspas simples quanto com aspas duplas.

  3. O comando utilizado para capturar dados do usuário foi o prompt().

  4. Utilizamos o console.log() para exibir mensagens para o usuário ou usuária.

  5. Não importamos nenhuma biblioteca.

Porém, para sermos capazes de verificar o resultado da solução (a saída de dados), é necessário abrirmos a aba “console” de nosso navegador.

Para abrir o console no Chrome, por exemplo, utilize os comandos: Command + Option + J (para Mac OS) ou Control + Shift + J (para Windows e Linux).

Veja o exemplo da saída no navegador:

Trecho do navegador com o botão Console selecionado. Mais abaixo, aparece a mensagem "Abrindo a Porta 2".

4.2) Características da linguagem

MétricasJavaScript
Tipo dos dadosFracamente tipada
Recomendada paraDesenvolvimento de web apps ou páginas de internet
VantagensAumenta a interatividade de soluções, alto potencial para o desenho de interfaces ricas e aprimoradas, alta procura no mercado de trabalho
CaracterísticasOs blocos de código são definidos com {}

Para saber mais de JavaScript, acesse:

5) Linguagem de Programação Python

Por fim, temos a linguagem de programação Python, que é interpretada, mas, assim como Java, passa por um processo de compilação.

Python cresceu muito nos últimos anos, tendo como uma de suas principais vantagens a velocidade na criação do código e o apoio de bibliotecas cada vez mais simplificadas, disponibilizadas pela comunidade.

5.1) Resolvendo o desafio

Veja como ficou a nossa solução escrita em Python:

def main():
 opcaoUsuario = input("Você está na 'entrada', deseja ir para esquerda ou direita? Digite E para esquerda ou D para direita: ")

 if opcaoUsuario == 'E' or opcaoUsuario == 'e':
  print("Abrindo a Porta 1\n")
 elif opcaoUsuario == 'D' or opcaoUsuario == 'd':
   print("Abrindo a Porta 2\n")
 else:
   print("Opção Inválida\n")

if __name__ == '__main__':
 main()

Assim como nas linguagens Java, C++ e C#, podemos estabelecer uma função principal, definida por def main():, e invocada na circunstância em que o desvio condicional é atendido.

As principais diferenças estruturais entre o código escrito em Python e as linguagens anteriores são:

  1. Não apresentamos, explicitamente, o tipo do dado no ato da criação da variável.

  2. Podemos escrever uma string tanto com aspas simples quanto com aspas duplas.

  3. Para exibir uma mensagem na tela, utilizamos o método print() (output).

  4. Para solicitar uma mensagem ao usuário ou usuária, usamos o método input().

  5. O desvio condicional não utiliza {} para definir um bloco de código, por isso é necessário garantir a indentação do código.

  6. O uso do operador : define onde um bloco de código irá começar.

  7. Em vez de utilizar else if, utilizamos elif.

Quando comparamos os códigos escritos em Python com os de outras linguagens, percebemos uma mudança mais significativa na forma como escrevemos um código, pois ele tem uma proposta de se aproximar da comunicação de seres humanos.

Devido a isso, a linguagem emprega uma série de alterações na forma como os trechos de código são estruturados e também em sua própria gramática (lembre-se de que já discutimos que uma linguagem de programação é parecida com as linguagens naturais).

5.2) Conceitos de linguagem de programação

MétricasPython
Tipo dos dadosFortemente tipada e dinamicamente tipada
Recomendada paraAnálise de Dados, Aprendizagem de Máquina e também para o design de apps. Também pode ser empregada na elaboração de scripts ou para automação de tarefas
VantagensAumento de produtividade (necessário escrever pouco código para executar uma tarefa), fácil de aprender, fácil de escrever
CaracterísticasOs blocos de código são definidos com ":" e pela indentação

[Python](https://www.alura.com.br/artigos/python-origem-do-nome0 é forte e dinamicamente tipada, o que faz com que o tipo de dado seja associado à variável, conforme o tipo atribuído e em tempo de execução.

Os campos de ciência de dados e aprendizagem de máquina contam com bibliotecas poderosas escritas em Python, além de ser uma das linguagens preferidas pela comunidade de desenvolvimento desta área.

Por fim, embora possua recursos para criação de webapps e para o design de soluções desktop, talvez seja interessante identificar se uma das linguagens anteriores não atende melhor o projeto que você deseja desenvolver!

Quer saber tudo sobre as linguagens de programação que apresentamos neste artigo? Conheça a plataforma de estudos da Alura e confira todos os cursos e benefícios que estão disponíveis para você na maior escola de tecnologia do Brasil!

Conclusão

Neste artigo, observamosalgumas características técnicas de diferentes tipos de linguagens de programação, as principais diferenças na forma de escrever um mesmo código utilizando cada uma delas, como estão presentes na comunidade e algumas características que favorecem a escolha de uma linguagem específica, conforme os diferentes tipos de projetos.

Do ponto de vista da opção por uma linguagem, é importante salientar que, além dos aspectos indicados neste texto, a equipe de trabalho que você faz parte pode já ter estabelecido uma estratégia para o desenvolvimento das soluções.

Por isso, é importante investigar e estudar as tecnologias associadas a um determinado projeto.

A importância de se atualizar e aprender novas tecnologias

Recomendamos que você sempre se atualize e busque aprender novas tecnologias para utilizar cada linguagem como uma ferramenta adequada para a resolução de problemas.

Em suma, não existe uma linguagem de programação que seja a melhor para qualquer situação.

Aprender novas linguagens e paradigmas de programação é bastante positivo, uma vez que passamos a reconhecer as estratégias que cada uma utiliza para nos ajudar a resolver um problema.

A importância da lógica de programação na resolução de problemas

Aprender lógica de programação é um passo fundamental para que você consiga resolver problemas.

Note que, independentemente da linguagem escolhida, a estrutura da solução sofreu poucas alterações, se não, pelas palavras reservadas na gramática de cada uma das linguagens escolhidas.

Logo, aprender lógica de programação nos ajuda a estruturar as ideias utilizadas para desenhar uma solução, e a linguagem é a forma como manifestaremos esta lógica para o computador poder executar os projetos que construiremos.

Para aprender a programar, conhecer a fundo as linguagens e a lógica de programação, conte com os cursos da Alura — a maior escolha tech do país.

Em nossas formações, você encontrará todo o conhecimento necessário para se tornar um desenvolvedor ou desenvolvedora de sucesso.

Conheça nossos planos e matricule-se agora mesmo!

E se você quiser ouvir um especialista falando sobre os tipos de linguagem de programação em um papo descontraído e muito informativo, confira o episódio especial do #HipstersPontoTube com Fábio Akita:

André Santana
André Santana

Professor no Insper | Pesquisador no LSITec (EP-USP) | Instrutor na Alura

Veja outros artigos sobre Programação