CLU é uma linguagem de programação criada pelo MIT pela estudante Barbara Liskov entre 1974 e 1975. Utiliza construtores para tipos de dados abstratos, um primeiro passo para a programação orientada a objeto (OOP) largamente utilizada a partir da década de 1990, mas havia muitas outras características da orientação a objeto que não estavam incluídas da CLU, como herança.
História
O propósito da linguagem CLU foi prover suporte linguístico à abstração de dados. Segundo Barbara Liskov, a linguagem CLU foi a primeira linguagem implementada a atingir este objetivo.[1] Embora inicialmente o objetivo não fosse produzir uma nova linguagem, logo este objetivo surgiu entre a primavera e o verão de 1973.[1] O objetivo principal do projeto foi a pesquisa em metodologia de programação. CLU foi projetada como uma linguagem de propósito geral embora mais voltada á computação simbólica do que à computação numérica. O projeto iniciou-se em 1974 com quatro projetistas: Barbara Liskov e três estudantes Russ Atkinson, Craig Schaffert e Alan Syder. Após algum tempo, outros estudantes se juntaram ao grupo. Entre os princípios seguidos pelo grupo se destacaram:
- Manter o foco no objetivo inicial da linguagem.
- O uso do mínimo de recursos necessários.
- Simplicidade.
- Poder de Expressão.
- Uniformidade
- Segurança
- Performance.
CLUsters
Um programa CLU consiste de um grupo de módulos. Três tipos de módulos são disponibilizados: Procedures, Iterators e Clusters. Uma procedure executa uma ação em zero ou mais argumentos e termina retornando zero ou mais objetos. Um iterator realiza a computação de uma seqüencia de itens baseado em seus argumentos. Um cluster implementa uma abstração de dados, que é um conjunto de objetos e um conjunto de operações primitivas para criar e manipular estes objetos. As operações podem ser tanto procedurais quanto abstrações de controle.[2]
A sintaxe da CLU foi baseada em ALGOL. Sintaxe CLU para a implementação de números complexos:
complex_number = cluster is add, subtract, multiply, .... rep = record [ real_part: real, imag_part: real ] add = proc ... end add; subtract = proc ... end subtract; multiply = proc ... end multiply; ... end complex_number;
CLU não suporta conversão explícita de tipos de dados. Existe um único tipo de dado universal que é representado por any e um procedimento force[] que "força" um tipo de dado que o programa queira.
Influências do CLU em outras linguagens
- Todos os objetos em programas CLU tem gerenciamento automático de memória. Influência direta em Java.
- Python e C# incluíram generators (iterador em C#), que foi inicialmente desenvolvido para CLU [1]
Ver também
Referências
- ↑ 1,0 1,1 BERGIN, Thomas J.; GIBSON, Richard G. (1996). History of Programming Languages II. New York: ACM Press, Addison-Wesley. 864 páginas. ISBN 0-201-89502-1
- ↑ LISKOV, Barbara; ATKINSON, Russel; BLOOM, Toby; MOSS, Eliot; SCHAFFERT, J. Craig; SCHEIFLER, Robert; SNYDER, Alan (1981). CLU Reference Manual. Lecture Notes in Computer Science nº 114. New York: Springer-Verlag. 190 páginas. ISBN 0-387-10836-X
Ligações externas
- «Site oficial»
- «História do CLU» (PDF). (pdf)
- «clu2c». - Um programa em código CLU para C
- «Dicionário de Linguagens de programação»