ALGOL
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]- Algol-W, proposta por Niklaus Wirth, no comitê de transição de Algol 60 para Algol 68, antecessora de Pascal
- S-algol, Algol com tipos de dados ortogonais, desenvolvido por Ron Morrison
- Jovial
- Simula
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
- ↑ 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