Skip to content
gabicoiradas edited this page Nov 9, 2022 · 29 revisions

Introdução

Égua

Égua é uma linguagem de programação nascida e mantida em Belém do Pará, Brasil. O principal objetivo da linguagem é auxiliar no aprendizado de lógica de programação em língua portuguesa, visto que todos os comandos da linguagem são feitos em português, fazendo com que os desenvolvedores que não possuem conhecimento da língua inglesa consigam entender de fato o código escrito.

Égua é uma linguagem em código aberto e gratuita para a utilização de todos. O site oficial é https://egua.tech.

Delégua

Delégua é uma variação da linguagem Égua patrocinada pela Design Líquido – empresa brasileira sediada em Curitiba, Paraná, Brasil. Seu principal objetivo é uma abordagem mais comercial em cima da linguagem Égua, com algumas capacidades adicionais, como trabalhar com o ecossistema Node.js e a composição das bibliotecas, que não fazem parte do núcleo da linguagem.

Mesmo com a abordagem mais comercial, a licença da linguagem é MIT, o que significa que a linguagem sempre foi e sempre será gratuita para qualquer uso. A ideia é apenas torná-la mais robusta, para o caso de aplicações grandes, escaláveis, com valor além do educacional.

Delégua começou tendo como base o código-fonte de Égua até a versão 1.2.0, quando nasceu, no começo de 2022, mas é radicalmente diferente na implementação. Toda a lógica da linguagem é traduzida ao máximo para o português, para também servir aos fins didáticos de como construir uma linguagem interpretada. Égua, até então, é implementada em cima de JavaScript. Delégua usa TypeScript e é mais modularizada.

Componentes internos

Delégua tem os seguintes componentes internos:

  • Um importador, classe responsável por abrir um arquivo de fonte, analisá-lo e, caso o conteúdo esteja semanticamente correto, prover a lista de declarações para os demais componentes. Dentro do importador, vivem outros dois componentes:
    • Um lexador, ou analisador léxico, que obtém todos os lexemas (ou radicais) do código e os transforma em tokens (ou símbolos), que são unidades de categorização de função linguística, como literais, variáveis, funções, classes etc.
    • Um parser, ou analisador sintático, que confere todos os símbolos definidos pelo lexador e transforma-os em estruturas de alto nível, que serão usadas para a execução lógica do código.
  • Um interpretador, que efetivamente executa a lógica do código, visitando as estruturas de alto nível criadas pelo analisador sintático.

O dialeto Égua clássico possui um componente a mais que vive dentro do interpretador:

  • Resolvedor, que organiza a tabela de símbolos lógicos (literais, variáveis, funções, classes etc., por seus nomes) por distâncias de escopos.
    • Por exemplo, as variáveis de uma classe podem ser acessadas por seus métodos, mas as variáveis declaradas dentro de métodos não podem ser acessadas por outros métodos da mesma classe. Em outras palavras, o escopo dos métodos é mais restritivo que o escopo da classe à qual pertencem.
    • Todas as referências usadas pelo código, como acesso a objetos, métodos e variáveis, são intermediadas (ou resolvidas) pelo resolvedor.
    • Delégua e EguaP abandonaram o resolvedor na versão 0.6.0 conforme explicado aqui.

Mais detalhes podem ser encontrados aqui.

Mecanismo de interpretação

A interpretação é feita usando Node.js, um motor bastante conhecido na indústria da Tecnologia de Informação, que interpreta JavaScript e é escrito em C/C++.

O código fonte é em TypeScript, que é transpilado para JavaScript no momento em que uma nova versão de Delégua é lançada. Há também a interpretação direta em TypeScript quando desenvolvemos ou depuramos o motor da linguagem usando ts-node.

Compatibilidade com bibliotecas do JavaScript

Em teoria, Delégua suporta qualquer biblioteca Node.js no padrão do NPM. Por exemplo, se quisermos usar a biblioteca Lodash, uma conhecida biblioteca para tratamento de estruturas de dados, podemos usar o seguinte:

// Para isso funcionar, a biblioteca `lodash` precisa estar instalada ou no projeto (diretório `node_modules`), ou globalmente.
var lodash = importar('lodash');
var a = { 'b': 'c' };
escreva(lodash.get(a, 'b', 'f'));
// Resultado: c

Modos de execução

Égua e Delégua possuem dois modos de execução:

  • LAIR (Leia-Avalie-Imprima-Repita), conhecido em inglês como REPL (Read-Evaluate-Print-Loop);
  • Execução de um arquivo fornecido como parâmetro.

Inspirado em Python, o modo LAIR de Delégua funciona basicamente como uma calculadora. Não é preciso usar a instrução escreva() para saber o resultado de cada linha (Égua requer a instrução escreva()).

delegua> 2+2
4

delegua> 3*5
15

delegua> 3**5
243

delegua> 5 ** 4 ** 3 ** 2
59604644775390620

Aderência à Língua Portuguesa

Delégua adere à norma culta da Língua Portuguesa quanto a lexemas acentuados, mas também permite lexemas não acentuados por uma questão de acessibilidade. Certos equipamentos eletrônicos não permitem acentuação por uma série de motivos, e Delégua considera palavras reservadas com ou sem acentos equivalentes. Exemplos:

  • padrão e padrao;
  • senão e senao.