[ artigo anterior ]
PASCAL e ADA são linguagens estruturadas. PASCAL foi bastante usada na década de 80 e segue hoje ainda em uso (decrescente) como a linguagem DELPHI, que não á nada mais que Pascal com orientação a objeto. Já a linguagem ADA foi muito usada no Pentágono (Departamento de Defesa dos EUA), por sua capacidade de compartilhar módulos. Houve época em que os programadores precisavam dominar ADA para trabalhar para projetos das forças armadas norte-americanas [2]. Aliás, é muito interessante a abordagem do Departamento de Defesa dos EUA (DoD) em relação à programação. Uma linguagem só, de uso moderno, que possa ser embutida também em armas e naves, corta radicalmente os custos de treinamento de pessoal interno, de fornecedor, de contratados terceirizados. Infelizmente, os sistemas legados em COBOL cobraram seu preço na época (ref. [2]):
“Por quase duas décadas, a linguagem de programação Ada tem sido a base dos esforços do Departamento de Defesa (DOD) para melhorar suas práticas de engenharia de software. O DOD criou o Ada na década de 1970 para servir como um padrão para todo o departamento que satisfaria seus requisitos especiais para software integrado e de missão crítica e também encorajaria a boa engenharia de software. Tanto a nova linguagem quanto as novas idéias de engenharia de software associadas a ela foram alvo de algumas críticas e, como resultado, ambas evoluíram. Hoje, Ada é a linguagem mais comumente usada para software de defesa de missão crítica, que inclui sistemas de armas e sistemas de comando, controle, comunicações e inteligência (C3I) de desempenho crítico. O inventário do DOD contém cerca de 50 milhões de linhas de código Ada nesses aplicativos (Hook et al., 1995). Dada a longa vida operacional de tais sistemas, o DOD fez um investimento significativo na tecnologia Ada. Ada é a segunda linguagem mais comumente usada (depois de Cobol) para sistemas de informação automatizados do DOD, que incluem folha de pagamento e programas de logística. O inventário do DOD contém mais de 8 milhões de linhas de código Ada nesses aplicativos (Hook et al., 1995).”
Citado em [2]
Como seria se alguém pudesse traduzir o ambiente COBOL para ADA na época ? Muitos milhões de dólares seriam economizados e, provavelmente, muitos programadores antigos seriam despedidos ou forçados a se atualizar. Mas devo lembrar que é impossível garantir que os programas portados funcionariam sem erro.
Uma pergunta então: como se caracteriza uma linguagem estruturada ? Minha experiência diz que as seguintes características podem servir:
-
Não há instrução de desvio direto (GOTO), evitando que o programador produza código “macarrônico”. A linguagem BASIC, por exemplo não é estruturada.
-
Há funções e procedures à disposição.
-
A passagem de parâmetros de funções pode ser feita por conteúdo ou por referência. Isso quer dizer que a linguagem apresenta algum tipo de ponteiro para estruturas de dados.
-
Há estruturas de repetição e decisão específicas: DO .. WHILE, WHILE..DO, DO .. CASE, DO ..UNTIL, IF ..THEN .. ELSE.
-
Existe uso de variáveis globais, e locais (controle de escopo de variáveis).
-
Há estruturas de dados complexas (arrays multidimensionais, register).
-
Existem regras de identação de código e métodos de “embelezamento”, para torná-lo mais claro (Exemplo: lint - usado em C).
-
As variáveis podem ser escritas em maiúsculas e minúsculas, com diferenciação.
-
Alguma macro-definição deve ser possível. Exemplo: A diretiva #define no C.
program numerosPerfeitos;
uses crt;
var ate, x, soma, i: integer;
begin clrscr; x := 0; writeln('Numeros perfeitos abaixo de'); Readln(ate); repeat x := x + 1; soma := 0; for i := 1 to x - 1 do begin if x mod i = 0 then soma := soma + i; end; if soma = x then begin writeln(x); end; until (x > ate); writeln('Pressione qualquer tecla para finalizar…'); readkey; end. |
Fonte: Ref [3].
[ artigo anterior ]
Comentários
Referências
Referências
[1] https://www.modula2.org/tutor/chapter12.php
[2] https://www.nap.edu/read/5463/chapter/3#14
[3] https://pt.wikipedia.org/wiki/Pascal_(linguagem_de_programa%C3%A7%C3%A3o)