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. Embora inicialmente o objetivo não fosse produzir uma nova linguagem, logo este objetivo surgiu entre a primavera e o verão de 1973. 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.

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

Ver também Lista de linguagens de programação

Ligações externas

Categoria:Linguagens de programação Categoria:Linguagens de programação procedurais Categoria:Linguagens de programação baseadas em classes Categoria:Linguagens de programação criadas em 1975