CLU (linguagem de programação)

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. a b 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  !CS1 manut: Nomes múltiplos: lista de autores (link)
  2. 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  !CS1 manut: Nomes múltiplos: lista de autores (link)

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» 
  • v
  • d
  • e
Página de categoria Categoria · Lista Lista