CLU

ohjelmointikieli

CLU on käännettävä abstrakteja tietotyyppejä tukeva akateeminen ohjelmointikieli vuodelta 1974. Siinä on ensimmäistä kertaa toteutettu iteraattorit, muuttamattomat (immutable) tietotyypit ja syntaktinen sokerointi jotka kaikki ovat ominaisuuksia, jotka ovat vasta nyt yleistymässä tuotanto-ohjelmointikielissä kuten Ruby ja Python.

CLU
Paradigmaabstratit tietotyypit
Tyypitysvahva
Yleinen suoritusmallikäännettävä
Muistinhallintaroskienkeräys
Julkaistu1974
KehittäjäBarbara Liskov
Merkittävimmät toteutuksetPortable CLU
VaikutteetPL/I, Simula 67
VaikuttanutRuby, Python, C++
KäyttöjärjestelmäAlustariippumaton
VerkkosivuCLU

Nimi CLU tulee sanoista CLUster programming language.

Historia

CLU kehitettiin yhdysvaltalaisessa MIT-yliopistossa 1974 professori Barbara Liskovin johdolla. Tarkoituksena oli tutkia abstrakteja tietotyyppejä.

CLU-ohjelmointikielellä on toteutettu muutamia täysin toimivia tutkimusprojekteja (tekstintoimitin, käyttöjärjestelmä), mutta varsinaisessa tuotanto-ohjelmoinnissa sitä ei ole käytetty.

Suomessa on kehitetty CLU:n pohjalta tutkimusprojektissa uusi ohjelmointikieli nimeltä XE vuonna 1989.[1]

Ominaisuuksia

Vaikka CLU:ssa on stattinen käännösaikainen tyypitys, CLU:n tietotyypit ovat melko joustavia ja niille on roskankeruu.

Abstraktit tietotyypit

CLU-ohjelmointikielessä voidaan toteuttaa abstrakteja tietotyyppejä. Näitä kutsutaan klustereiksi. Klusteri vastaa oliokielten luokkia, mutta CLU ei ole varsinainen olio-ohjelmointikieli vaikka siihen on otettu vaikutteita myös ensimmäisesti olio-ohjelmointikielestä, Simula 67:stä.[2]

Esimerkiksi kompleksiluvut määrittelevä klusteri näyttäisi CLU-ohjelmointikielellä seuraavalta:

     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;

rep määrittelee tietotyypin sisäisen esitysmuodon eikä siihen ole pääsyä klusterin ulkopuolelta.

C++-ohjelmointikielen mallit (templates) ovat saaneet vaikutteita CLU:n abstraktien tietotyyppien käsittelystä.

CLU:ssa ei ole tietotyyppien perintää.

Iteraattorit

CLUssa on ensimmäisenä toteutettu iteraattorit. Nykyisistä ohjelmointikielistä iteraattorit ovat keskeinen Ruby-ohjelmointikielen rakenne. Myös uusissa Python-ohjelmointikielen toteutuksissa voi käyttää helposti iteraattoreita.

Iteraattori on mekanismi, jolla silmukkarakenteella voidaan käydä läpi abstraktin tietotyypin arvoja.

Syntaktinen sokerointi

CLU-ohjelmointikielessä on esimmäisenä otettu käyttöön termi syntaktinen sokerointi. Se tarkoittaa sitä, että esimerkiksi "1+1" on vain merkintä, joka tulkitaan abstraktin tietotyypin "kokonaisluku" operaatioksi "add". "1+1" tulkitaan jo syntaktisella tasolla samanlaiseksi operaatioksi kuin esimerkiksi nykyaikaisen ohjelmointikielen metodikutsut.

Syntaktinen sokerointi on käytössä sekä Rubyssä että jossain määrin Pythonissa.

Muuttamattomat tietotyypit

CLU:ssa on yleisimmistä tietotyypeistä sekä muutettavissa olevat että muuttamattomat (immutable) tietotyypit. Nykyaikaisista ohjelmointikielistä tämä on otettu käyttöön Pythonissa.

Monisijoitus

CLU oli ensimmäinen ohjelmointikieli missä sijoituksen voi tehdä rinnakkain, esimerkiksi

    x,y = y,x

vaihtaa muuttujien x ja y arvot keskenään.

Myös funktion paluuarvon voi olla useampi arvo, jotka sijoitetaan useampaan muuttujaan (vrt. Pythonissa tuple funktion paluuarvona).

Poikkeukset

CLU tukee poikkeuksia.

Lähteet

Aiheesta muualla

🔥 Top keywords: