Nykymaailmassa Clean (ohjelmointikieli) on saavuttanut suurta merkitystä ja mielenkiintoa. On olemassa monia tutkimuksia ja keskusteluja, jotka pyörivät Clean (ohjelmointikieli):n ympärillä, koska sen vaikutus kattaa yhteiskunnan eri näkökulmia. Sekä henkilökohtaisella että kollektiivisella tasolla Clean (ohjelmointikieli):stä on tullut toistuva keskustelunaihe ja huomion keskipiste. On tullut ratkaisevan tärkeää ymmärtää ja analysoida Clean (ohjelmointikieli):tä eri näkökulmista, jotta saadaan täydellinen kuva sen ulottuvuudesta ja vaikutuksesta. Siksi on tärkeää käsitellä Clean (ohjelmointikieli):n aihetta yksityiskohtaisesti ja objektiivisesti, jotta voidaan edistää keskustelua ja rikastaa tietoa tästä aiheesta.
| Clean | |
|---|---|
![]() |
|
| Paradigma | funktionaalinen |
| Tyypitys | vahva, staattinen, dynaaminen |
| Muistinhallinta | roskienkeruu |
| Julkaistu | 1984 |
| Kehittäjä | Software Technology Research Group of Radboud University Nijmegen |
| Kehitysversio | 2.2 |
| Merkittävimmät toteutukset | Clean |
| Vaikutteet | Lean, Haskell |
| Käyttöjärjestelmä | Windows, Mac, Linux, Solaris |
| Verkkosivu | http://clean.cs.ru.nl/ |
| Uutisryhmä | julkaisut keskustelu |
Clean on puhtaasti funktionaalinen ohjelmointikieli. Kielen pääasiallinen toteutus on Nijmegenin yliopiston tekemä, ja se on saatavilla Microsoft Windows-, Apple Macintosh-, Solaris- ja Linux-käyttöjärjestelmälle. Toteutus on kaksoislisensöity – se on saatavilla sekä GNU LGPL- että kaupallisen suljetun lähdekoodin lisenssillä. Kielen kehitystyö tapahtuu pääasiassa Windows-alustalla, mikä näkyy siinä, että muille alustoille ei ole vielä saatavilla dynaamista linkkeriä. Myös I/O-kirjastojen toteutuksessa on eroja.
Clean on hyvin samankaltainen kieli kuin Haskell. Kielten syntaksissa on pieniä eroja, minkä lisäksi Clean sisältää joukon Haskell 98 -stardardista puuttuvia ominaisuuksia. Kielen ainutlaatuisiin piirteisiin lukeutuvat uniikit tyypit, joilla jonkin arvon olemassaolo voidaan rajoittaa tarkalleen yhteen paikkaan ohjelmassa. Ominaisuutta voidaan käyttää monadien asemesta pakotetun peräkkäisyyden toteuttamiseen esimerkiksi I/O:ssa. Lisäksi ominaisuudella voidaan taata, ettei arvon muuttaminen paikallaan riko viittauksellista läpinäkyvyyttä. Cleanin laskenta perustuu graafin uudelleenkirjoittamiseen ja reduktioihin. Yhdessä nämä ominaisuudet tekevät kielen toteutuksesta erittäin tehokkaan. Kielen käännös tapahtuu kaksivaiheisesti ABC-tavukoodin kautta natiivikoodiksi.
Kieltä käytetään lähinnä akateemisessa tutkimuksessa.
Kielen merkittävimmät sisäänrakennetut ja muut ominaisuudet ovat:
Start = "Hei maailma"
kertoma 0 = 1 kertoma n = n * kertoma (n - 1) // tulostetaan 10:n kertoma Start = kertoma 10
fib 0 = 0 fib 1 = 1 fib n = fib (n - 2) + fib (n - 1)
Potenssioperaattori:
(^) infixr 8 :: Int Int → Int (^) x 0 = 1 (^) x n = x * x ^ (n - 1)
Yllä tyyppisignatuuri määrää, että funktio on oikealta assosiatiivinen, käyttää infix-muotoa ja sen presedenssin prioriteetti on 8. Tällöin ^ sitoo voimakkaammin kuin *, jonka vuoksi x*x^(n-1) on yhtä suuri x*(x^(n-1)):n eikä (x*x)^(n-1):n kanssa. Tämä funktio on määritelty Cleanin standardiympäristössä.