CLU (linguagem de programação)

ImprimirCitar

CLU é uma linguagem de programação criada no Instituto de Tecnologia de Massachusetts (MIT) por Barbara Liskov e seus alunos a partir de 1973. Embora não tenha encontrado uso extensivo, introduziu muitos recursos que são usados amplamente agora, e é visto como um passo no desenvolvimento da programação orientada a objetos (OOP).

As principais contribuições incluem tipos de dados abstratos, chamada por compartilhamento, iteradores, vários valores de retorno (uma forma de atribuição paralela), tipos parametrizados de tipo seguro e tipos variantes de tipo seguro. Também é notável pelo uso de classes com construtores e métodos, mas sem herança.

Clusters

A sintaxe do CLU foi baseada em ALGOL, então o ponto de partida para a maioria dos novos projetos de linguagem. A adição chave foi o conceito de um cluster, o sistema de extensão de tipo CLU e a raiz do nome da linguagem (CLUster). Clusters correspondem geralmente ao conceito de uma "classe" em uma linguagem OO. Por exemplo, aqui está a sintaxe CLU para um cluster que implementa números complexos:

 complex_number = cluster é adicionar, subtrair, multiplicar,...
rep = record [ real_part: real, imag_part: real]
add = proc... end add;
subtrato = pro... subtrato final;
multiplicar = pro... fim multiplicar;
...
end complex_number;

Um cluster é um módulo que encapsula todos os seus componentes, exceto aqueles explicitamente nomeados na seção "é" cláusula. Estes correspondem aos componentes públicos de uma classe em linguagens OO recentes. Um cluster também define um tipo que pode ser nomeado fora do cluster (neste caso, "complex_number"), mas seu tipo de representação (rep) está oculto para clientes externos.

Nomes de cluster são globais e nenhum mecanismo de namespace foi fornecido para agrupar clusters ou permitir que eles sejam criados "localmente" dentro de outros clusters.

Em um cluster, as conversões de tipo explícitas up e down mudam entre o tipo abstrato e a representação; conversões implícitas entre esses tipos são representadas usando o tipo especial cvt. Caso contrário, o CLU não executa conversões de tipo implícitas. Existe um tipo universal any e um procedimento force[] para verificar se um objeto é de um determinado tipo. Os objetos podem ser mutáveis ou imutáveis, sendo os últimos tipos básicos como inteiros, booleanos, caracteres e strings.

Outras funcionalidades

Outro recurso chave do sistema de tipos CLU são os iteradores, que retornam objetos de uma coleção serialmente, um após o outro. Os iteradores oferecem uma interface de programação de aplicativo (API) idêntica, independentemente dos dados com os quais estão sendo usados. Assim, o iterador para uma coleção de complex_numbers pode ser usado de forma intercambiável com aquele para uma matriz de inteiross. Uma característica distintiva dos iteradores CLU é que eles são implementados como co-rotinas, com cada valor sendo fornecido ao chamador por meio de uma instrução yield. Iteradores como os do CLU são agora um recurso comum de muitas linguagens modernas, como C#, Ruby e Python, embora recentemente sejam frequentemente chamados de geradores.

CLU também inclui tratamento de exceção, com base em várias tentativas em outros idiomas; as exceções são levantadas usando signal e tratadas com except. Ao contrário da maioria das outras linguagens com manipulação de exceção, as exceções não são redefinidas implicitamente na cadeia de chamada. Além disso, ao contrário da maioria das outras linguagens que fornecem tratamento de exceção, as exceções em CLU são consideradas parte do fluxo de execução comum e são consideradas uma rotina "normal" e uma maneira segura e eficiente de sair de loops ou retornar de funções; isso permite a atribuição direta de valores de retorno "exceto quando" outras condições se aplicam. Exceções que não são detectadas nem renunciadas explicitamente são imediatamente convertidas em uma exceção de falha especial que normalmente encerra o programa.

CLU é frequentemente creditado como sendo o primeiro idioma com tipos variantes seguros, chamados oneofs, antes que o idioma ML os tivesse.

Uma característica distintiva final em CLU é a atribuição paralela (atribuição múltipla), onde mais de uma variável pode aparecer no lado esquerdo de um operador de atribuição. Por exemplo, escrever x,y:= y,x trocaria os valores de x e y. Da mesma forma, as funções podem retornar vários valores, como x,y,z:= f(t) . Atribuição paralela (embora não múltiplos valores de retorno) é anterior a CLU, aparecendo em CPL (1963), denominada atribuição simultânea, mas CLU a popularizou e é frequentemente creditada como a influência direta que leva à atribuição paralela em linguagens posteriores.

Todos os objetos em um programa CLU residem no heap e o gerenciamento de memória é automático.

CLU suporta abstrações de dados definidos pelo usuário com parâmetros de tipo. Foi a primeira linguagem a oferecer tipos parametrizados limitados de tipo seguro, usando cláusulas where para expressar restrições em argumentos de tipo reais. Ao contrário de linguagens com genéricos baseados em modelo, o uso de tal abstração de dados pode ser verificado sem acesso à implementação da abstração.

Influência

CLU e Ada foram grandes inspirações para modelos C++.

Os mecanismos de manipulação de exceções do CLU influenciaram linguagens posteriores como C++ e Java.

Sather, Python e C# incluem iteradores, que apareceram pela primeira vez em CLU.

Perl e Lua receberam várias atribuições e vários retornos de chamadas de função do CLU.

Python e Ruby chamaram emprestado por compartilhamento, a instrução yield e atribuição múltipla.

Contenido relacionado

Computador multitarefa

Na computação, multitarefa é a execução simultânea de várias tarefas durante um determinado período de tempo. Novas tarefas podem interromper as já...

Programação funcional

Na ciência da computação, programação funcional é um paradigma de programação em que os programas são construídos aplicando e compondo funções. É...

ArgoUMLGenericName

ArgoUML é um aplicativo de diagramação UML escrito em Java e lançado sob a licença pública Eclipse de software livre. Por ser um aplicativo Java, está...
Más resultados...
Tamaño del texto:
Copiar