|
pl:CLU
CLU occurs as programming language created at MIT by Barbara Liskov and her students between 1974 and 1975. It was notable for its have of builder for abstract information types that involved the code that operate the children, a key step in the counsel of object oriented programming (OOP). Nonetheless several of the more features of OOP come missing or even uncomplete, notably inheritance, & the language is as well hindered by a for instance frustratingly terrible syntax. CLU & Alphard both seem to get when close when imaginable to existence the fully OO language forswearing actually existence a single.
A syntax of CLU was based on ALGOL, then a starting point for virtually all fresh language project. the key addition was a construct of a clustering, CLU's nature & severity extension models and a root of the language's title (Bunch). Clump correspond usually to the construct of an "object" around an OO language, & stand about a equivalent syntax. E.g., on this button is the CLU syntax for the complex number cluster:
complex_number = cluster is add, subtract, multiply, ....
rep = record [ real_part: real, imag_part: real ]
add = proc ... prevent add;
subtract = proc ... prevent subtract;
multiply = proc ... prevent multiply;
...
prevent complex_number;
When clump offered the so-advanced models for structuring software online, CLU did non offer any kind of structure for the clump themselves. Bunch list were spherical, & there are no namespace mechanism was provided to class action clump or even allow the two to become created "locally" in more bunch. This condition is hardly unique to CLU, however these are surprising that and so several languages keep around lacked this feature given that a "whole idea" of ALGOL was to offer scope to variables, it seems that cluster/object list should become an conspicuous extension of this construct.
No inexplicit nature and severity conversions. Inside a clump, the expressed nature and severity conversions 'higher' & 'down' vary between a abstract nature & severity and a representation. There is a universal nature and severity 'any', & the procedure inflict[] to prevent that an object occurs as certain nature and severity. Objects can be changeable or even changeless, a late existence "base types" like whole number.
An additional key feature of the CLU nature and severity models is iterators, which go to objects from either a collection 1 fallowing the more. Iterators were "black boxes" that offered an monovular API no matter what datthe it were existence utilized using, a iterator for a collection of complex_numbers would exist as monovular thereto for an array of whole numbers. Iterators come today the virtually all common feature of most modern languages.
Exceptions were an additional basic feature of CLU, largely traced from either various tries to add this feature around more languages. Exceptions come raised applying signal & handled using except.
One of features of CLU was multiple assignment: e.g. writing x,y=y,x would exchange values of x & y. In the equivalent way, functions can link to many values, rather x,y,z=f(t). Oddly, given a center nature and severity project, CLU did non offer enumerated types, nor any conspicuous way to produce the two.
Influence on other programming languages
Ruby borrowed several construct from either CLU (for instance yield statement)
|