ALGOL

Origem: Wikipédia, a enciclopédia livre.
ALGOL
Paradigma imperativo
Surgido em 1968 (ALGOL 68)
Influenciada por FORTRAN
Influenciou Jovial, PL/I, Simula, Pascal

O ALGOL é uma família de linguagens de programação de alto nível voltadas principalmente para aplicações científicas. Seu nome provém das palavras "ALGOrithmic Language" (Linguagem Algorítmica).

O nome é escrito ALGOL ou Algol, dependendo da fonte de consulta.

Várias linguagens razoavelmente diferentes receberam o nome de ALGOL ou Algol, adicionando ao nome letras ou números, por descenderem diretamente do ALGOL original.

História[editar | editar código-fonte]

A ALGOL foi originalmente inventada no final dos anos 50, por um comitê conjunto de cientistas da computação americanos e europeus, reunidos em Zurique. Seu trabalho foi lançado como a linguagem agora conhecida como ALGOL 58 Uma segunda versão do grupo, conhecida como ALGOL 60, tornou-se a versão padrão da linguagem e de uso comum. Esta versão, descrita agora no famoso Relatório ALGOL 60 , teve um profundo impacto no campo de design de linguagem de programação. O ALGOL 68, a última versão “oficial” da linguagem, não foi bem recebida pela comunidade do ALGOL.

A ALGOL nunca pegou realmente em programação para empresas, além de alguns aplicativos de análise matemática usados pelo setor financeiro. Foi, no entanto, amplamente utilizado em matemática e ciências da computação acadêmica, e foi a linguagem padrão para a descrição algorítmica até os anos 80 e 90.

John Backus desenvolveu a Forma Normal de Backus, conhecido como BNF, para descrever ALGOL 58. O método foi revisado e expandido por Peter Naur, recebendo então o nome de Forma de Backus-Naur, e mantendo a sigla.

C.A.R. Hoare disse de ALGOL 60: "Aqui está uma linguagem tão a frente de seu tempo, que não foi uma melhoria sobre seus predecessoras, mas também a quase todas suas sucessoras". Essa fala foi também uma crítica velada a ALGOL 68, uma linguagem considerada inchada demais por muitos de seus críticos (e que não teve praticamente nenhum sucesso comercial).

Impacto[editar | editar código-fonte]

A definição do ALGOL 60 foi um evento-chave na história das linguagens de programação. Foi a primeira linguagem de Programação estruturada. Nenhuma outra linguagem teve influência tão importante nos projetos de novas linguagens.

Além disso, a especificação da linguagem também criou desafios técnicos para a construção de compiladores, como mais tarde aconteceria com PL/I e Ada

Características[editar | editar código-fonte]

As duas características principais do Algol são: a clareza e a elegância da sua estrutura baseada nos blocos e o estilo de sua definição, que usa uma linguagem metalingüística para definir de forma concisa e relativamente completa a sua sintaxe.

A linguagem continuou sendo desenvolvida e enriquecida com novas construções e novos comandos que aumentaram seu potencial.

Existem outras versões do Algol, como, por exemplo, o Algol 68, o Algol W voltado para máquinas IBM e o Algol 6000/7000 da Burroughs.

ALGOL e Burroughs[editar | editar código-fonte]

Em particular, a Burroughs, projetou o hardware de seu computador B6700 com base na estrutura da linguagem Algol. Isso fez com que o nome de ALGOL fosse logo associado a máquinas Burroughs, e vice-versa.

O Algol B6000/7000 é uma linguagem muito mais poderosa do que o Algol 60. As principais extensões que foram acrescentadas são: facilidade para o tratamento de entrada e saída (definição de arquivos e seus atributos, comandos para manipulação de arquivos e variedade de formatos)[1], facilidades para o tratamento de cadeias de caracteres (tipo string, tipo POINTER (ou Ponteiro), comandos e funções para manipulação de cadeias), acesso a bits de memória (palavra parcial) e facilidade para definir macros (declaração DEFINE).

Esta linguagem se tornou apropriada para escrever software básico; em particular o sistema operacional do B6700 (MCP – "Master Control Program" está escrito em ESPOL, uma extensão do Algol, permitindo manipulações mais perto do hardware. Há uma outra extensão, o DCALGOL, Data Communications ALGOL, usado para escrever software de comunicação de dados.

Variantes[editar | editar código-fonte]

Padrões[editar | editar código-fonte]

  • ALGOL 58, primeira proposta da linguagem
  • ALGOL 60, versão mais conhecida da linguagem
  • ALGOL 68, versão bem mais poderosa, porém menos conhecida

Variantes proprietárias[editar | editar código-fonte]

  • Elliot ALGOL, a versão estendida da Burroughs.
  • DCALGOL, Data Communications ALGOL, uma extensão da Burroughs para acesso aos protocolos de comunicação (algo muito superior ao eqivalente da IBM na época).
  • DMALGOL, Data Management ALGOL, outra extensão da Burroughs para interface ao sistema de Data Base (algo bem superior ao eqivalente da IBM na época).

Outras variantes[editar | editar código-fonte]

Exemplo de código[editar | editar código-fonte]

Procedimento[editar | editar código-fonte]

procedure Absmax(a) Size:(n, m) Result:(y) Subscripts:(i, k);
    value n, m; array a; integer n, m, i, k; real y;
comment The absolute greatest element of the matrix a, of size n by m 
is transferred to y, and the subscripts of this element to i and k;
begin integer p, q;
    y := 0; i := k := 1;
    for p:=1 step 1 until n do
    for q:=1 step 1 until m do
        if abs(a[p, q]) > y then
            begin y := abs(a[p, q]);
            i := p; k := q
            end
end Absmax

Hello world[editar | editar código-fonte]

BEGIN
FILE F (KIND=REMOTE);
EBCDIC ARRAY E [0:11];
REPLACE E BY "HELLO WORLD!";
WHILE TRUE DO
  BEGIN
  WRITE (F, *, E);
  END;
END.

Hello world em Elliot Algol[editar | editar código-fonte]

Elliot Algol usava símbolos diferentes para abrir e fechar strings, mas isso não pode ser feito com código ASCII.

program HelloWorld;
 begin
    print "Hello world";
 end;

Ver também[editar | editar código-fonte]

Referências

  1. NUNES, Daltro José; TELICHEVESKY, Nilton (1975). Introdução à Linguagem ALGOL B-6700. Porto Alegre: EMMA, UFRGS. 147 páginas 

Bibliografia[editar | editar código-fonte]

  • ORGANICK, E. I.;FORSYTHE, A. I.;PLUMMER, R. P. (1978). Programming Language Structures. New York: Academic Press. 659 páginas. ISBN 0-12-528260-5 
  • PACITTI, Tércio; ATKINSON, Cyril P. (1983). Programação e Métodos Computacionais. 1 4ª ed. Rio de Janeiro, RJ, Brasil: Livros Técnicos e Científicos Editora. 435 páginas. ISBN 85-216-0283-9 
  • WEXELBLAT, Richard L.(Editor) (1981). History of Programming Languages. New York: Academic Press. 758 páginas. ISBN 0-12-745040-8