Conteúdo
Cada linguagem de programação difere da outra de várias maneiras. Uma das maiores diferenças é como o programa é executado.
Existem muitas maneiras de diferenciar linguagens de programação. Para começar, eles são divididos em diferentes paradigmas: funcionais, orientados a objetos, etc.
Você também pode categorizar as linguagens de programação por método de tradução, o que tem um grande impacto no desempenho da linguagem. As linguagens de programação compiladas geralmente são mais rápidas que as interpretadas. Portanto, os desenvolvedores tendem a usar linguagens compiladas em situações como desenvolvimento de jogos onde a velocidade é necessária.
O que é compilação?
O processo de compilação converte o código escrito por um programador em código de máquina que um computador pode executar. O código de máquina é uma linguagem de baixo nível com 1s e 0s. Então, o que um compilador faz é converter o código de alto nível que você cria em uma linguagem de programação em código de máquina.
Sem compilação, você teria que programar em linguagem de máquina. Cada linguagem de programação de alto nível que você conhece usa um dos três métodos de tradução: um compilador, um interpretador ou uma mistura dos dois.
O que é um compilador?
Um compilador é um software que converte código-fonte escrito em uma linguagem de alto nível em código de baixo nível para execução.
O diagrama acima representa um compilador em sua forma mais básica. O compilador tem vários estágios. Cada estágio faz a transição do código de um estado para outro. O objetivo de cada estágio do compilador é criar uma saída que seja mais fácil de processar no próximo estágio. A estrutura geral de um compilador é a seguinte:
- Scanner: Esta fase pega um fluxo de caracteres e os agrupa em tokens que representam identificadores, literais de string, etc.
- Analisador: Esta fase agrupa os tokens de acordo com a gramática da linguagem de programação de origem. Ele cria uma árvore de sintaxe abstrata, que é uma coleção de expressões que compõem um programa.
- Semântica: Esta fase realiza a análise semântica na Árvore de Sintaxe Abstrata (AST). Ele usa regras de idioma de origem para adicionar significado atribuindo tipos a expressões AST e verificando sua validade. Então o AST se torna a representação intermediária.
- Representação Intermediária (IR): Esta fase converte o código fonte do programa original em código de máquina. Ele produz uma versão simplificada do código assembly. O IR usa um ou mais otimizadores para melhorar o código IR e coletar informações para a máquina em que está sendo executado. Os otimizadores podem tornar os programas mais eficientes, rápidos e ainda menores.
- Gerador de código: Este estágio pega o código IR otimizado e o converte em código de máquina.
Quais linguagens de programação usam compiladores?
Algumas linguagens de programação populares incluem:
- C
- C++
- Go
- Ada
- Fortran
- COBOL
- Lisp
- Objective-C
- Swift
Uma vantagem de usar uma linguagem compilada é que ela detecta erros durante a compilação. Isso permite que você corrija esses erros e tente compilar o programa novamente. As linguagens compiladas são menos propensas a falhar quando começam a ser executadas. Essas linguagens nem geram programas para rodar se o código fonte tiver erros de sintaxe. Mas erros semânticos e outras formas de erros de tempo de execução passarão por isso.
As linguagens compiladas também rodam muito rápido após a compilação.
O que é um interpretador?
Um interpretador é um programa que traduz e executa uma linha de código por vez. Esse processo se repete até que o interpretador atinja a última linha de código em um determinado programa ou script.
Conforme mostrado na imagem acima, o interpretador aceita duas entradas. Primeiro, ele precisa de todo o código-fonte (programas). Em seguida, ele lê a primeira linha do programa (como entrada), traduz e executa. Se esta linha for executada corretamente, ela passará para a próxima linha no programa ou script.
Ao contrário de um compilador, um interpretador não traduz todo o programa em código de máquina. Em vez disso, ele analisa e analisa linhas específicas de código antes de executá-las. O interpretador tem que começar a executar um programa – especialmente um maior – antes mesmo que o compilador possa terminar de traduzir.
Quais linguagens de programação usam interpretadores?
Algumas linguagens de programação interpretadas populares incluem:
- Python
- JavaScript
- Perl
- MATLAB
- BASIC
Embora o interpretador comece a executar o código mais rapidamente, ele ainda falha se encontrar um erro. Como programador, você precisa corrigir esse bug e reiniciar o programa. Este evento ocorre sempre que o interpretador encontra um novo erro. Se alguns bugs estiverem relacionados a um conjunto raro de condições, eles ainda podem estar latentes. Nessas situações, o teste é mais importante do que nunca.
Os intérpretes são geralmente mais fáceis de desenvolver do que os compiladores, e seus programas são mais portáteis por design.
Compilada e interpretada: híbrida
A linguagem híbrida usa um compilador e um interpretador. A linguagem híbrida compila o código-fonte de alto nível em um formato de baixo nível, como bytecode. Em seguida, ele usa o interpretador para executar esse bytecode.
A linguagem híbrida pode variar de uma linguagem de programação para outra, mas usa essa estrutura comum. Uma das linguagens de programação mais populares híbrida é o Java. O compilador Java traduz seu código-fonte em bytecode Java Virtual Machine (JVM). O interpretador então converte o bytecode da JVM em código de máquina.
Quais linguagens de programação usam tradução híbrida?
Algumas linguagens de programação híbridas populares incluem:
- Java
- C#
- Visual Basic
- Erlang
- F#
Ao misturar compilador e interprete, você obtém o melhor dos dois mundos. Compilar seu código primeiro permite que você corrija os bugs antecipadamente. O bytecode criado por compiladores híbridos é mais fácil de interpretar do que o código-fonte do programa de alto nível.
Leia também: Danki Code é bom? Pacote FullStack é bom? Saiba a verdade
Entenda o valor de diferentes métodos de “tradução” de código
Você deve estar ciente dos métodos de “tradução” específicos usados por uma linguagem de programação, especialmente se o estiver usando para um novo projeto. Os métodos de “tradução” de linguagem são uma parte importante da identidade da linguagem de programação. Isso pode afetar como você distribui seu programa e como os usuários o executarão.
Cada método de “tradução” tem suas vantagens. As principais linguagens de programação, como C++, Python, Java, usam diferentes métodos de “tradução”. Além do paradigma de uma linguagem de programação, seu método de “tradução” é uma das características mais importantes que você deve conhecer.
As linguagens de programação podem usar uma variedade de paradigmas. A maioria das principais linguagens de programação são linguagens multiparadigmáticas; elas suportam o uso de dois ou mais paradigmas diferentes. Os três paradigmas mais populares são programação imperativa, orientada a objetos e funcional.