Quais são os métodos de implementação de linguagens de programação?

Podemos agrupar as linguagens de programação em diversas categorias ou classes baseando-nos em diferentes critérios e isso nos ajuda a compreender melhor cada uma delas. Nesse artigo vamos abordar as principais formas de classificação das linguagens de programação e alguns conceitos envolvidos.

Introdução

Se você procurar informações sobre a linguagem GO na Internet, vai encontrar a seguinte descrição: "GO é uma linguagem de alto nível, compilada, forte e estaticamente tipada. No entanto, se parece com uma linguagem interpretada com tipagem dinâmica".

Sabe explicar todas essas características da linguagem GO?

Atualmente existem centenas de linguagens de programação criadas para os mais diferentes objetivos e com características diversas. Tentar agrupar essas linguagens em categorias, classificando-as de acordo com determinados critérios não é uma tarefa muito fácil, mesmo porque algumas delas podem ser enquadradas em mais de uma categoria.

Neste artigo vamos desenvolver alguns conceitos importantes relativos ao projeto de linguagens de programação e estabelecer critérios de classificação que podem ser úteis ao desenvolvedor na hora de selecionar a linguagem ideal para o desenvolvimento de uma determinada aplicação.

De antemão, já aviso o leitor que não existe unanimidade entre os pesquisadores quanto à divisão apresentada neste artigo, podendo o estudioso encontrar na literatura textos divergentes. No entanto procurei ser fiel aos principais autores da área, buscando um equilíbrio entre as diversas visões quanto aos critérios utilizados.

Classificação pelo Método de Implementação

É preciso distinguir a linguagem de programação de suas implementações. Por exemplo: Pascal é uma linguagem de programação criada por Niklaus Wirth em 1970. Turbo Pascal, Free Pascal e Delphi são algumas implementações da linguagem Pascal. É claro que, de lá para cá, a linguagem passou por transformações, ganhou extensões e, atualmente, uma versão muito difundida é a Object Pascal.

O método de implementação de uma linguagem de programação é o sistema usado para executar um programa de computador descrito nessa linguagem em um arquivo de código-fonte. Esses métodos podem ser divididos em três grandes categorias: interpretação e compilação.

  • Compilação: O código fonte é traduzido para a linguagem de máquina específica de um determinado sistema operacional/processador. O processo de compilação/linkedição gera um arquivo executável. A tradução é lenta, mas a execução é rápida. Exemplos: C, FORTRAN, GO, RUST,...
  • Interpretação Pura: O código é executado diretamente por um outro aplicativo, normalmente conhecido como interpretador. Normalmente, nenhum arquivo é gerado. A tradução e a execução são lentas. Exemplos: As primeiras versões do BASIC, Perl, Javascript, Python...
  • Interpretação Híbrida: É uma mistura entre os dois métodos. O código-fonte é traduzido para um formato intermediário que depois é executado por uma espécie de interpretador que possui um JIT (Just-in-time compiler). Portanto, é gerado um arquivo. A tradução e a execução são mais rápidas que as linguagens puramente interpretadas, pois o código é compilado em tempo de execução. Exemplos: Java, C#, Visual Basic .NET, ...

A tecnologia dos JITs tem evoluído e algumas linguagens híbridas, em algumas condições, podem ser mais rápidas que certas linguagens compiladas.

Uma linguagem pode ter várias implementações e com métodos diferentes. Python, por exemplo possui versões compiladas e híbridas. Dessa forma, não podemos dizer, sem medo de errar, que a linguagem C seja compilada, pois existem interpretadores para a linguagem C. Portanto, uma coisa é a linguagem, a sua definição. Outra coisa é sua implementação. Exemplos de implementações da linguagem C são GCC, Turbo C, Pelles C, etc.

Classificação pelo Paradigma de Programação

Um paradigma de programação pode ser entendido como um tipo de estruturação ao qual a linguagem deverá respeitar, a maneira como o código e os dados são organizados ou como é a sequência em que os comandos serão executados

Usando como critério o paradigma de programação, podemos dividir as linguagens de programação nos grupos a seguir. Observe que algumas linguagens multi-paradigmas aparecem em mais de um grupo.

1) Paradigma Imperativo. É o paradigma mais simples e antigo, formando o grupo mais numeroso. Um programa baseado nesse paradigma é composto de uma sequência bem definida de instruções, ou melhor, comandos (imperare do latin). . Os dados são armazenados em variáveis que podem ter seus valores modificados durante a execução do programa. A sequência das instruções são determinadas por estrutura de controle iterativas, tais como laços de repetição e de decisão. Ou seja, aqui se ajusta muito bem o conceito de algoritmo. São exemplos de linguagens imperativas: Java, C, C++, C#, Fortran, GO, Python, PHP, etc...

O paradigma imperativo, por sua vez, subdivide-se em:

1.1) Linguagens procedurais ou estruturadas. É um paradigma centrado nas rotinas ou operações que serão realizadas com os dados. Divide o aplicativo em módulos que, por sua vez, são compostos de funções ou procedimentos menores. É baseada nos princípios da abstração, encapsulamento e ocultação de informações. Exemplos: C, Fortran, Pascal, Basic, Python, etc...

1.2) Linguagens Orientadas a Objetos. É uma evolução da programação estruturada, onde o ponto central agora são os dados. Uma aplicação é formada por classes que agrupam operações (métodos) e informações (dados). É baseada nos princípios de abstração, encapsulamento, ocultação de informações, herança e polimorfismo. Exemplos: Java, C++, C#, Ruby, etc...

2) Paradigma Declarativo. Nesse paradigma, a abstração é levada a um nível mais alto, pois o foco não é em "como" o problema vai ser resolvido, mas o "quê". O programa é modelado em termos de assertivas acerca do resultado através de declarações iniciais de verdades lógicas que são imutáveis. Isso entra em contraste com o conceito de variáveis e controle de fluxo do paradigma imperativo. São exemplos de linguagens imperativas: Lisp, Haskell, SQL, Prolog, etc...

O paradigma declarativo, por sua vez, subdivide-se em:

2.1) Linguagens funcionais. Baseiam-se no conceito de função vindo da matemática. Os Programas são formados de um conjunto de definições de funções e de aplicação destas para serem avaliadas. Aqui não se usa variáveis ou instruções de atribuição, há apenas a definição de valores, os quais são imutáveis no escopo em que foram construídas. Não há espaço para estruturas de controle como while, for, etc. Exemplos de linguagens funcionais: Haskell, Lisp, Scheme, etc...

2.2) Linguagens lógicas: expressam os programas na forma de lógica simbólica como padrão de entrada e saída, usando o processo de inferência lógica para chegar no resultado. O programador declara um conjunto de fatos a partir do qual teoremas podem ser provados, por isso são muito usadas em Inteligência Artificial. São exemplos de linguagens lógicas: QLISP, Mercury, Prolog, etc...

Classificação pelo Nível de Abstração

De uma maneira objetiva, podemos dizer que o nível de abstração de uma linguagem é determinado pela sua proximidade (semelhança) com a linguagem da máquina ou com a linguagem humana.

Linguagens muito próximas da linguagem de máquina são ditas de baixo nível e linguagens próximas à linguagem humana são ditas de alto nível. Vejamos:

  • Linguagens de baixo nível: São linguagens que trabalham diretamente com as instruções do microprocessador e possuem acesso direto aos registradores e posições de memória. Exemplos: Linguagem de máquina e Assembly.
  • Linguagens de médio nível: Possuem instruções próximas à linguagem humana, mas ainda possuem acesso aos recursos do computador e precisam gerenciá-lo. Exemplo: C
  • Linguagens de alto nível: Possuem um nível mais alto de abstração e não possuem acesso direto aos recursos do computador. Exemplo: Python, Ruby, Haskell, etc...

Classificação quanto à Verificação de Tipos

A verificação de tipos é uma tarefa realizada pelo compilador ou interpretador que determina se os tipos de dados das variáveis em uma atribuição ou expressão sejam compatíveis entre si. Dependendo das regras da linguagem, pode haver uma conversão implícita entre os dados para que resulte em uma expressão válida

Uma linguagem é fortemente tipada se os erros de atribuição de variáveis são sempre detectados, seja estática ou dinamicamente. Exemplos: Java, C#, FORTRAN, COBOL.

Uma linguagem estaticamente tipada (C, FORTRAN, GO, ...) detecta os erros de atribuição durante a compilação, enquanto que as dinamicamente tipadas (JavaScript, PHP, ...) o fazem durante a execução.

Conclusão

Exploramos superficialmente alguns conceitos envolvendo as linguagens de programação e os critérios para classificá-las.

Vimos que esses critérios não são um consenso entre os estudiosos, pois existe uma linha muito tênue que os separa e a tecnologia evolui a cada dia trazendo novas categorias.

Existem vários outros critérios que não foram abordados nesse artigo. Sugiro que o leitor consulte as referências abaixo para aprofundar seus conhecimentos no assunto.

Referências

Links

  1. Wikipedia
  2. Medium
  3. DCCE - USP

Livros

  1. Conceitos de Linguagens de Programação. Robert W. Sebesta - Editora Bookman

Quais são os métodos para implementar uma linguagem de programação?

O implementador de linguagens mais comum é o compilador. Ele traduz o código para um formato executável pelo computador, gerando um novo software. Depois de traduzido, o programa roda muito rápido quando comparado com um programa interpretado, de modo que a compilação é o método mais rápido pensando na execução.

Quais são as principais linguagens de programação?

Segundo um levantamento realizado pela consultoria de programação norte-americana RedMonk, as linguagens de programação mais populares são JavaScript, Python, Java, PHP, CSS, C#, C++ e C.

Quais são as 5 linguagens de programação mais usadas?

Quais São as Linguagens de Programação Mais Usadas em 2022?.
C++ ... .
JavaScript. ... .
PHP. ... .
Swift. ... .
Java. ... .
Go. ... .
SQL. ... .
Ruby. A Ruby é outra popular linguagem de programação de código aberto..

Como e feita a criação de uma linguagem de programação?

As linguagens são criadas por meio de uma disciplina, que se aprende numa faculdade de Ciência da Computação chamada de “compiladores”. Um compilador possui um analizador léxico, um semântico e um linker(Para código nativo).