Skip to main content
Login | Suomeksi | På svenska | In English

Puhdas imperatiivinen uniikkityypitetty ohjelmointikieli

Show full item record

Title: Puhdas imperatiivinen uniikkityypitetty ohjelmointikieli
Author(s): Pärtel, Martin
Contributor: University of Helsinki, Faculty of Science, Department of Computer Science
Discipline: Computer science
Language: Finnish
Acceptance year: 2014
Abstract:
Ohjelmoinnissa puhdas funktio ei vaikuta ohjelman tilaan muuten kuin palauttamalla paluuarvon, joka riippuu ainoastaan annetuista parametreista. Jotkut ohjelmointikielet sallivat lähtökohtaisesti vain puhtaiden funktioiden kirjoittamisen. Nämä kielet ovat yleensä tyyliltään 'funktionaalisia', eli ne suosivat funktion toteutuksen esittämistä yhtenä lausekkeena tavanomaisemman 'imperatiivisen' lausejonon sijaan. Tutkielmassa esitellään uusi ohjelmointikieli Uniic, joka on tyyliltään imperatiivinen, mutta sallii vain puhtaiden funktioiden kirjoittamisen. Uniic käännetään puhtaasti funktionaaliselle kohdekielelle, mikä estää suunnittelemasta kieleen epäpuhtaita ominaisuuksia. Kääntäjästä on toteutettu prototyyppi. Funktionaalisessa kohdekielessä on Clean-kieleen perustuva uniikkityypitysjärjestelmä. Uniikkityypitys mahdollistaa epäpuhtaiden operaatioiden turvallisen mallintamisen rajoittamalla uniikiksi merkityt arvot yhteen käyttökertaan. Uniicin lähdekielessä on rakenne nimeltä lainaus, jolla ohjelmoija voi näennäisesti käyttää uniikkia arvoa monta kertaa. Lainaus on toteutettu siten, ettei kohdekielen uniikkityypitysjärjestelmää tarvitse muuttaa. Uniicin imperatiiviset piirteet sekä lainaus mahdollistavat koodin kirjoittamisen imperatiivisella tyylillä monessa tilanteessa, jossa olemassa olevat puhtaat kielet pakottavat funktionaaliseen tyyliin. Yritykset laajentaa Uniicia kielen puhtautta menettämättä auttavat hahmottamaan funktionaalisen ja imperatiivisen ohjelmoinnin eroavaisuuksia ja toisaalta myös potentiaalisia samankaltaisuuksia.


Files in this item

Files Size Format View
gradu.pdf 1.038Mb PDF

This item appears in the following Collection(s)

Show full item record