history of computer - Keyboard

Computer History

Tracing the history of the computer

There are 

 articles and 

 photos on this site

This site is powered by

history of computer - MySQL  and  history of computer - PHP 
Google
 

Photo Gallery

 

Free Downloads

 

Feedback

 

Site Map

Home/Log in

Register

Log out

Edit Profile

Create Article

List My Articles

List All Articles

List Articles by Category

Search for an Article

At-a-glance Article List Click here for help on the use of static pages for articles

Partner Sites

Site by JDT

FREE Accounting Software




CLU Programming Language

CLU is a programming language created at MIT by Barbara Liskov and her students between 1974 and 1975. It was notable for its use of constructors for abstract data types that included the code that operated on them, a key step in the direction of object oriented programming (OOP). However many of the other features of OOP are missing or incomplete, notably inheritance, and the language is also hindered by a sometimes frustrating syntax. CLU and Alphard both seem to get as close as possible to being a full OO language without actually being one.

Clusters

The syntax of CLU was based on ALGOL, then the starting point for most new language design. The key addition was the concept of a cluster, CLU's type extension system and the root of the language's name (CLUster). Clusters correspond generally to the concept of an "object" in an OO language, and have roughly the same syntax. For instance, here is the CLU syntax for a cluster that implements complex numbers:

    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;

While clusters offered a then-advanced system for structuring programs, CLU did not offer any sort of structure for the clusters themselves. Cluster names are global, and no namespace mechanism was provided to group clusters or allow them to be created "locally" inside other clusters. This problem is not unique to CLU, but it is surprising that so many languages have lacked this feature - given the centralness in ALGOL of giving scope to variables, it seems that giving scope to cluster/object names would be an obvious extension.

MyQuestionsMatter

MyQuestionsMatter is all about helping you make the most of your interaction with healthcare professionals - by recommending relevant questions for you to ask during an appointment or visit, we can help you to get the treatment you need and the service you expect

www.MyQuestionsMatter.com

CLU does not perform implicit type conversions. In a cluster, the explicit type conversions 'up' and 'down' change between the abstract type and the representation. There is a universal type 'any', and a procedure force[] to check that an object is a certain type. Objects may be mutable or immutable, the latter being "base types" such as integers.

Other features

Another key feature of the CLU type system are iterators, which return objects from a collection one after the other. Iterators were "black boxes" that offered an identical API no matter what data they were being used with. Thus the iterator for a collection of complex_numbers would be identical to that for an array of integers. Iterators are now a common feature of most modern languages.

CLU also includes exception handling, based on various attempts in other languages; exceptions are raised using signal and handled with except. Oddly, given the focus on type design, CLU does not offer enumerated types, nor any obvious way to create them.

A final distinctive feature in CLU is multiple assignment, where more than one variable can appear on the left hand side of an assignment operator. For instance, writing x,y=y,x would exchange values of x and y. In the same way, functions could return several values, like x,y,z=f(t).

All objects in a CLU program live in the heap, and memory management is automatic.

Links

History of Programming Languages

Programming Timeline

Source: http://en.wikipedia.org/wiki/CLU_programming_language







Click here to search for articles containing the keyword Apricot

Apricot Portable



Click here to search for articles containing the keyword Acorn

Acorn Atom



Click here to search for articles containing the keyword Apple

Apple II


Click here to search for articles containing the keyword Macintosh

Macintosh 128k


 

[About]

[Contact Us]

[Copyright]

[Disclaimers]

[Privacy Policy]

[GNU License]