Kurssin viimeisimmän version löydät täältä: O1: 2024
Sanasto
Tämä sivu selittää valittujen ohjelmointiin liittyvien termien merkityksiä lyhyesti ja Ohjelmointi 1 -kurssin näkökulmaa painottaen.
Selittelyjä
Useilla sanastossa esiintyvistä termeistä on muitakin merkityksiä sekä ohjelmoinnin ulkopuolella että muissa ohjelmointiyhteyksissä. Tällä sivulla keskitytään O1-kurssin kannalta oleellisimpiin merkityksiin. Osa määritelmistä on epämuodollisia ja hieman epätarkkoja mutta kurssimme tarpeisiin riittäviä.
Annetut englanninkieliset lähimmät vastineet eivät aina tarkoita prikulleen samaa kuin suomenkieliset. Tästä sivusta on myös englanninkielinen laitos.
Voit katsoa myös Scala-kielen virallisen sanaston, jota emme tosin kurssilla noudata pilkuntarkasti.
Puuttuuko jotain?
Etsitkö tältä sivulta jotain, mitä täällä ei ole? Ilmoita asiasta Ohjelmointi 1 -kurssin vastaavalle opettajalle (juha.sorva@aalto.fi). Lisäyksiä voidaan tehdä.
Selityksiä
- abstrakti luokka
- abstract class luokka, jolle pätee: 1) siinä voi olla (myös) abstrakteja metodeja ja muuttujia; 2) siitä ei voi luoda ilmentymiä kuin aliluokkiensa kautta; 3) sille voidaan määritellä konstruktoriparametreja ¶ Ks. luku 7.3 ja vrt. piirreluokka.
- abstrakti metodi
- abstract method metodi, jolle on määritelty puumerkki muttei runkoa ¶ Ks. luvut 7.2 ja 7.3. Abstrakteja metodeita voi olla piirreluokissa ja abstrakteissa luokissa eli sellaisissa luokissa, joista ei suoraan luoda ilmentymiä.
- abstrakti muuttuja
- abstract variable ilmentymämuuttuja, jolle on määritelty tietotyyppi muttei arvoa ¶ Ks. luku 7.2. Abstrakteja muuttujia voi olla piirreluokissa ja abstrakteissa luokissa eli sellaisissa luokissa, joista ei suoraan luoda ilmentymiä.
- abstraktio
- abstraction yleistys, käsitteellistys; malli, josta on jätetty pois epäoleellisia yksityiskohtia ¶ Ohjelmointi on abstraktioiden määrittelemistä ja hyödyntämistä; ks. esim. luvut 1.6, 2.1, 2.3, 3.2, 6.1, 6.3, 6.4, 7.2, 7.3 ja 9.1. Abstraktioita on erilaisia. Esimerkiksi parametrin lisääminen funktiolle tai luokalle abstrahoi pois ratkaistavan ongelman yksittäiset käyttötapaukset ja tekee ratkaisusta yleisemmän. Rajapinta voi taas abstrahoida pois ongelman ratkaisutavan eli toteutuksen; ks. abstraktiotaso.
- abstraktiotaso
- level of abstraction
(tällä kurssilla erityisesti:) ratkaisun riippumattomuusaste toteutustavasta ¶ Yleiskäyttöiset
ohjelmointityökalut kuten
do
-silmukka jafoldLeft
-metodi ovat abstrakteja siinä mielessä, että niillä voi ratkaista monia erilaisia ongelmia; ne ovat on abstraktimpia käyttötapausten suhteen kuin vaikkapa nimenomaisesti kokoelman koon palauttavasize
-metodi. Kuitenkin käyttäjänsä näkökulmastasize
on korkeammalla abstraktiotasolla. Sen kutsujan ei tarvitse tietää miten se on toteutettu (silmukalla,foldLeft
illä vai jotenkin muuten); se on abstraktimpi toteutustavan suhteen kuin mainitut yleiskäyttöisemmät työkalut. Termiä käytetään näin mm. luvuissa 6.3, 6.4 ja 8.3. Ks. myös korkean tason kieli ja matalan tason kieli. - AI
- AI artificial intelligence eli tekoäly
- aihealue
- domain ongelmakenttä tai aihepiiri, jota ohjelma käsittelee ¶ Esimerkiksi tietokonepelin aihealueeseen kuuluu pelimaailma sääntöineen. Ks. myös malli.
- ajaa
- run 1) määrätä tietokone toimimaan tietyn ohjelman mukaisesti; 2) toimia ohjelman määräämällä tavalla, suorittaa ¶ Vrt. "Aurora ajoi kirjoittamansa ohjelman ja huomasi tulosteesta, että ohjelmassa oli bugi." ja "Tietokone ajaa ohjelman vaihe vaiheelta käskyjä noudattaen."
- ajonaikainen tyyppi
- runtime type sama kuin dynaaminen tyyppi
- ajonaikainen virhe
- runtime error virhe, joka ilmenee (vasta) ohjelmaa ajettaessa, yleensä siksi, että jonkin toimenpiteen suorittaminen epäonnistuu ¶ Ks. luvut 1.8, 4.2 ja 4.3 ja vrt. käännösaikainen virhe ja looginen virhe. Esimerkiksi nollalla jakaminen ja tietokoneen vapaan muistin loppuminen aiheuttavat ajonaikaisia virheitä. Ajonaikainen virhe johtaa usein ohjelma-ajon "kaatumiseen" eli keskeytymiseen ellei sitä onnistuneesti ehkäistä tai käsitellä.
- ajuri
- driver ohjelma, jonka tehtävänä on ohjata tietyn oheislaitteen, kuten hiiren tai näytönohjaimen, käyttöä ¶ Käyttöjärjestelmä käyttää oheislaitteita ajurien avulla.
- algoritmi
- algorithm vaiheittainen, toimiva ratkaisumenetelmä jollekin ongelmalle ¶ Ks. luku 1.2. Algoritmit eivät välttämättä liity tietokoneisiin tai ohjelmointiin; esimerkiksi tapa, jolla lukuja jaetaan jakokulmassa, on algoritmi (joka voidaan kyllä toteuttaa tietokoneohjelmaksikin).
- aliluokka
- subclass, derived class luokka, joka perii jonkin toisen luokan ja edustaa yliluokkansa kuvaaman käsitteen alakäsitettä ¶ Aliluokka "perii" yliluokan ominaisuudet; ks. luku 7.3. Sen ilmentymät ovat paitsi aliluokan itsensä tyyppisiä, myös yliluokan tyyppisiä. Aliluokka määritellään mm. Scalassa kirjaamalla aliluokan määrittelyyn merkintä välittömästä yliluokasta; aliluokalle voi Scalassa kirjata vain yhden välittömän yliluokan. Vrt. piirreluokan liittäminen ja ks. moniperintä.
- aliohjelma
- subprogram sama kuin funktio
- alkio
- element kokoelman tai vastaavan tietorakenteen sisältämä arvo ¶ Ks. luku 1.5.
- alkiokokoelma
- ks. kokoelma
- ankkuri
- anchor
(O1Libraryssä:) kuvan kohta, josta se kiinnitetään asemoitaessa kuvia suhteessa
toisiinsa ¶ Kuvan ankkurina voi olla esimerkiksi sen keskikohta tai jokin kulmista.
Näin voidaan vaikkapa asemoida "tämän kuvan ankkuri tuon kuvan yläreunan keskelle".
O1Library-kirjastossa ankkureita kuvaa luokka
Anchor
. Ks. luku 2.5 ja tuon luokan dokumentaatio. Any
- Any kaikkien Scala-luokkien yliluokka ¶ Ks. luku 7.3.
AnyRef
- AnyRef
useimpien Scala-luokkien yliluokka ¶ Ks. luku 7.3. Scala-ohjelmaa suorittava virtuaalikone
käsittelee
AnyRef
-olioita viittausten kautta; vrt.AnyVal
.AnyRef
onAny
n välitön aliluokka. Ks. myösObject
. AnyVal
- AnyVal
eräiden tehokkuusoptimoitujen Scala-luokkien yliluokka ¶ Ks. luku 7.3 (ja 3.5).
Scala-ohjelmaa suorittava virtuaalikone ei käsittele
AnyVal
-olioita viittausten kautta; vrt.AnyRef
.AnyVal
onAny
n välitön aliluokka. - API
- API application programming interface eli sovelluskirjasto
apply
- apply
(Scala-kielessä:) nimi, joka voidaan antaa metodille, jotta
tuota metodia voisi kutsua mainitsematta metodin nimeä laisinkaan ¶ Ks. luvut 5.3 ja 6.2.
Eräänlainen "olion oletusmetodi":
olio(parametrit)
on lyhennysmerkintä kutsulleolio.apply(parametrit)
ja toimii vain, jos oliolle onapply
-niminen metodi asianmukaisesti määritelty.apply
-metodeita käytetään Scalassa mm. tehdasmetodeina mutta myös muihin tarkoituksiin. - argumentti
- argument 1) parametrilauseke; 2) parametriarvo ¶ Sanoja "parametri" ja "argumentti" käytetään monesti sekaisin. On kohtalaisen yleistä käyttää sanaa "argumentti", kun funktiolle välitettävää tietoa tarkastellaan funktion itsensä ulkopuolelta (esimerkiksi funktiokutsulausekkeessa), ja sanaa "parametri", kun funktion vastaanottamia tietoja tarkastellaan funktion sisällä (erityisesti: parametrimuuttujista puhuttaessa); joidenkin mielestä tuo on ainoa oikea merkitys. Tämän kurssin materiaalissa on vältetty "argumentti"-termiä.
- arvo
- value
1) "yksittäinen ohjelman käsittelemä tiedonjyvänen" eli lausekkeen evaluoimisen
tulos, jota ei voi enää evaluoida yksinkertaisemmaksi; 2) hakurakenteen
sisältämän avain–arvo-parin toinen osa, joka voidaan hakea avaimen perusteella ¶
Esimerkiksi Scala-kielisen aritmeettisen lausekkeen
1 + 1
arvo on kokonaisluku kaksi (ks. luku 1.3), funktiokutsunmin(10, 5)
arvo on luku viisi (ks. luku 1.6) ja lausekkeenBuffer(10, 2, 3)
arvo on viittaus erääseen puskuriin (ks. luku 1.5). Termiä "arvo" käytetään tällä kurssilla hieman eri tavoin kuin osassa Scala-kieltä hyödyntävästä ohjelmointikirjallisuudesta, jossa arvoiksi sanotaan mitä tahansa olioita. - askeltaja
- stepper muuttuja, jota käytetään pitämään kirjaa arvosta, joka on viimeisin tietyssä etukäteen tunnetussa arvojen sarjassa ¶ Yksi muuttujien rooleista. Ks. luvut 3.1 ja 5.5. Askeltaja voi esimerkiksi pitää kirjaa kasvavasta järjestysnumerosta: 0, 1, 2 jne.
- avain
- key tieto, jonka perusteella voidaan paikantaa tai selvittää toinen tieto; erityisesti: tieto, jonka perusteella hakurakenteesta voidaan hakea arvo ¶ Ks. luku 8.4 ja vrt. indeksi.
- avain–arvo-pari
- key–value pair avaimen ja arvon muodostama pari ¶ Avain–arvo-pareja käytetään hakurakenteiden alkioina; ks. luku 8.4.
- bitti
- b(inary dig)it digitaalisen tiedon perusyksikkö, jolla voi olla yksi kahdesta arvosta ¶ Usein bitin kahteen arvoon viitataan numeroilla 0 ja 1; biteistä voidaan näin muodostaa binaarilukuja. Bittejä järjestelmällisesti yhdistelemällä voidaan kuvata erilaista tietoa esimerkiksi tietokoneessa; ks. luku 5.4.
Boolean
- Boolean
totuusarvoja Scala-ohjelmissa kuvaava tietotyyppi ¶
Boolean
-tyyppisiä arvoja on vain kaksi: tosi ja epätosi, joita kuvaavat Scalassa literaalittrue
jafalse
. Ks. luku 3.3; ks. myös vertailuoperaattori ja logiikkaoperaattori. - bugi
- bug virhe ¶ Sanaa käytetään erityisen usein toimintavirheistä, jotka ilmenevät ohjelmaa ajettaessa, eli ajonaikaisista ja loogisista virheistä.
- build
- build valmistella ohjelma ajamista tai käyttöönottoa varten ¶ Tämä lavea ja epämääräinen termi, jolla ei ole vakiintunutta suomennosta, voi viitata monenlaisiin automaattisiin valmisteluvaiheisiin. Monissa yhteyksissä kääntäminen on keskeinen ohjelman "rakentamisen" vaihe; muita vaiheita voivat olla esimerkiksi automaattinen testaus ja dokumenttien generointi koodin perusteella. O1-kurssilla build tarkoittaa käytännössä ohjelman kääntämistä.
- by name -parametri
- by-name parameter parametri, jota ei evaluoida ennen välittämistä funktiolle vaan aina kun tai jos sen arvoa funktion suorituksen eikana tarvitaan ¶ Ks. luku 7.1. Jos by name -parametrin arvoa ei funktion suorituksen aikana kaikissa tapauksissa käytetä lainkaan, voi parametria sanoa väljästi evaluoiduksi. By name -parametrin evaluointi ei ole laiskaa, vaan parametrilauseke evaluoidaan aina käytettäessä uudestaan. Vrt. by value -parametri.
- by value -parametri
- by-value parameter parametri, joka evaluoidaan tiukasti ja saa arvon ennen funktiokutsun alkua ¶ Mm. Scalassa "tavalliset parametrit" ovat by value -parametreja. Vrt. by name -parametri.
catch
- catch
(Scala-kielessä:) poikkeustenkäsittelyssä käytetty varattu sana,
jolla aloitetaan
try
-lohkon jälkeinen toinen lohko, siinä tapauksessa, ettätry
-lohkoa suoritettaessa tapahtui virhe ¶catch
-lohko suoritetaantry
-lohkon jälkeen mutta mahdollistafinally
-lohkoa ennen. - debugata
- debug etsiä ja korjata virheitä ohjelmasta; erityisesti: etsiä ajonaikaisia tai loogisia virheitä
- debuggeri
- debugger apuohjelma, jonka avulla ohjelmoija voi tutkia ohjelman suoritusta vaiheittain samalla tarkastellen tietokoneen muistin sisältöä ¶ Debuggeria voi käyttää debugatessa tai muusta syystä ohjelmaan perehtyessä. Aiheesta on kurssimateriaalissa erillinen sivu.
- deklaratiivinen ohjelmointi
- declarative programming yleinen ohjelmointiparadigma, jossa ohjelman mielletään muodostuvan ongelman ratkaisemiseen tarvittavista määritelmistä, säännöistä, rajoitteista (tms.) eikä peräkkäisten käskyjen sarjoista kuten imperatiivisessa ohjelmoinnissa ¶ Ks. luku 10.2. Deklaratiiviseen paradigmaan luetaan monesti erilaisia toisistaan paljonkin poikkeavia ohjelmointitapoja. Funktionaalinen ohjelmointi lienee deklaratiivisen ohjelmoinnin merkittävin aliparadigma.
- dialogi(-ikkuna)
- dialog (box) eräänlainen GUI-elementti; ikkuna, joka näytetään käyttäjälle väliaikaisesti ja jota käytetään käyttäjän ja ohjelman väliseen "vuoropuheluun" ¶ Ks. luku 12.3. Monissa sovelluksissa on suurempi pääikkuna, jonka oheen avataan väliaikaisesti erilaisia pienempiä dialogeja.
do
-silmukka- do loop
silmukka, joka on muodostettu
do
-avainsanaa käyttäen ja joka toistaa toimenpidettä yhden tai useampia kertoja ¶ Ks. luku 8.3 ja vrt.while
-silmukka. - dokumentaatio
- documentation ohjelmaa siihen perehtyvälle ihmiselle selkiyttävä asiakirja tai sellaisten kokoelma ¶ Ohjelman osien rajapinnat on tapana kuvata laatimalla niistä dokumentaatiota; ks. luvut 3.2 ja 3.5. Ks. myös Scaladoc.
- dokumentaatiokommentti
- doc(umentation) comment erityisellä tavalla muotoiltu kommentti, jota voi käyttää dokumentaation tuottamiseen osittain automaattisesti ¶ Ks. luku 3.2. Scala-ohjelman ja siihen upotettujen dokumentaatiokommentien perusteella voidaan luoda dokumentaatiota Scaladoc-työkalulla.
- domain
- domain
sama kuin aihealue ¶ Sanalla viitataan muissa yhteyksissä usein myös
verkkotunnuksiin kuten
aalto.fi
, mikä on ihan eri asia. Double
- Double (mm. Scala-kielessä:) tietotyyppi, jolla kuvataan desimaalilukuja liukulukuina ¶ Ks. luvut 1.3 ja 5.4. Vastaavalla tietotyypillä on samankaltainen nimi useassa muussakin ohjelmointikielessä; nimi tulee ilmaisusta double-precision floating-point number.
- DRY
- DRY periaate, jonka mukaan kukin ohjelmistoon liittyvä seikka tulee olla määritelty vain kerran yhdessä paikassa ¶ Sanoista don’t repeat yourself. Lähdekoodin laatimiseen sovellettuna DRY-periaate kannustaa välttämään toisteisuutta koodissa, ja periaatteen noudattaminen parantaa usein mm. ohjelman muokattavuutta. Ks. esim. luvut 1.4, 5.1, 7.2 ja 9.1. Vastaava periaate on esitetty ohjelmoijien keskuudessa myös monella muulla nimellä. Vastakohta: WETWET.
- DSL
- DSL domain-specific language eli täsmäkieli
- dynaaminen
- dynamic ohjelma-ajoon tai ohjelman suorittamisen tuottamaan prosessiin liittyvä, ohjelmaa ajaessa määrittyvä; ei-staattinen, muuttuva ¶ Tietokoneohjelmalla voidaan sanoa olevan kaksi "olomuotoa", staattinen ja dynaaminen; ks. esim. luvut 1.2 ja 2.1. Ohjelman dynaamisiin piirteisiin voi vaikuttaa esimerkiksi ohjelman käyttäjän antama syöte. Ks. myös dynaaminen tyyppi.
- dynaaminen ohjelmointi
- dynamic programming ohjelmien toteuttamistekniikka, jossa pienempien osaongelmien ratkaisuja tallennetaan muistiin, jotta niitä voidaan tehokkaasti hyödyntää (kenties useita kertoja) isompien osaongelmien ratkaisuissa ¶ Tästä tekniikasta on yksi pieni esimerkki luvussa 12.1. Sanalla "dynaaminen" ei ole tässä yhteydessä aivan samanlaista merkitystä kuin muissa kurssilla esiintyvissä yhteyksissä. Sana on valittu tämän tekniikan nimeen osin siksi, että se kuulostaa hienolta.
- dynaaminen sidonta
- dynamic binding, dynamic dispatch käytäntö, jossa vasta ohjelma-ajon aikana lyödään ajonaikaisen tiedon perusteella lukkoon, mitkä funktiot suoritetaan ¶ Olio-ohjelmoinnissa dynaaminen sidonta ilmenee muun muassa siten, että vasta metodikutsua käynnistettäessä tehdään kohdeolion dynaamisen tyypin perusteella päätös siitä, mikä metoditoteutus suoritetaan; päätökseen vaikuttaa siis se, minkä aliluokan olio on viestiä vastaanottamassa. Ks. luvut 7.2 ja 7.3.
- dynaaminen tyyppi
- runtime type, dynamic type arvon tyyppi ¶ Määrittyy dynaamisesti ohjelma-ajon aikana. Staattiselta tyypiltään tietynlaisen lausekkeen tai muuttujan arvolla voi olla mikä tahansa sellainen dynaaminen tyyppi, joka on staattisen tyypin kanssa yhteensopiva; ks. luvut 7.2 ja 7.3.
- dynaamisesti tyypitetty
- dynamically typed (ohjelmointikielestä:) tyyppijärjestelmältään sellainen, että lähdekoodin osille ei määritetä eri tyyppejä staattisesti, ja ainoastaan arvojen dynaamiset tyypit tarkastetaan (ohjelma-ajon aikana) ¶ Esimerkiksi muuttujilla ei siis dynaamisesti tyypitetyssä kielessä ole eri tyyppejä, vaan niihin voi sijoittaa mitä tahansa arvoja. Vrt. staattisesti tyypitetty. Dynaamisesti tyypitettyjä ohjelmointikieliä ovat esimerkiksi Python, JavaScript ja Ruby. Scala ei varsinaisesti ole dynaamisesti tyypitetty, mutta taipuu myös sellaiseen käyttöön.
- Eclipse
- Eclipse eräs sovelluskehitin ¶ Eclipseä käytetiin O1:n varhaisemmissa versioissa.
- editori
- editor sovellusohjelma tekstin muokkaamiseen
- ehdollinen operaattori
- short-circuited operator logiikkaoperaattori, jonka jälkimmäistä operandia ei evaluoida, jos loogisen operaation tulos määrittyy jo ensimmäisen operandin perusteella ¶ Ks. luku 5.1. Ehdollisen operaattorin evaluointi on siis väljää.
- eksplisiittinen
- explicit nimenomaisesti sanottu, selvästi ilmoitettu; ohjelmakoodiin nimenomaisesti kirjattu ¶ Vastakohta: implisiittinen.
- elementti
- element 1) alkio; 2) GUI-elementti
- ensimmäisen asteen funktio
- first-order function funktio, joka ei ole korkeamman asteen funktio
- evaluoida
- evaluate
määrittää lausekkeen arvo ¶ Ks. esim. luku 1.3. Lausekkeen evaluoimiseksi tarvittavat
toimenpiteet riippuvat lausekkeesta. Esimerkiksi aritmeettisen lausekkeen kuten
1 + 1
evaluoiminen edellyttää laskutoimituksen tekemistä, ja muuttujan nimen muodostama lauseke evaluoidaan noutamalla arvo nimetystä muuttujasta. Funktiokutsulauseke evaluoidaan suorittamalla kyseinen funktio; tällaisen lausekkeen arvo on funktion palautusarvo. Evaluointi voi olla tiukkaa tai väljää. - evaluoimaton parametri
- by-name parameter ks. by name -parametri
- evaluointialue
- evaluation area tietokoneen muistin osa (kehyksen sisällä), jota käytetään apuna lausekkeita evaluoitaessa ¶ Ks. esim. luvut 1.3 ja 1.7. Tämä on lähinnä tässä kurssimateriaalissa käytetty termi. Evaluointialue on keskeinen kurssimateriaaliin upotetuissa ohjelman suorittamista kuvaavissa animaatioissa. Se on graafinen abstraktio virtuaalikoneen toiminnasta.
final
- final
(mm. Scalassa:) määre, joka 1) luokan alkuun kirjattuna kokonaan estää periytymisen
tuosta luokasta; 2) metodin alkuun kirjattuna estää tuon metodin korvaamisen ¶ Ks. luku 7.3 ja
vrt. suljetun luokan määrittelevä
sealed
. finally
- finally
(Scala-kielessä:) poikkeustenkäsittelyssä käytetty varattu sana, jolla
aloitetaan
try
-lohkon jälkeinen toinen lohko, joka suoritetaantry
-lohkon (ja mahdollisencatch
-lohkon) jälkeen riippumatta siitä, tapahtuikotry
-lohkoa suoritettaessa aikana virhettä vai ei. for
-silmukka- for loop
silmukka, joka on muodostettu
for
-avainsanaa käyttäen ¶ Ohjelmointi 1 -kurssilla esiintyvätfor
-silmukat ovat ns. foreach-silmukoita eli käyvät läpi annetun kokoelman ja toistavat tiettyä toimenpidettä kunkin tuon kokoelman alkion kohdalla; ks. luvut 5.5 ja 5.6. Monestifor
-silmukoilla käydään läpi tiukasti evaluoituja kokoelmia, jolloin toistokertojen lukumäärä ja läpikäytävät alkiot tunnetaan toiston alkaessa; kuitenkin on mahdollista käsitellä aivan samoin myös väljästi evaluoituja kokoelmia. Scalanfor
-käsky on monipuolinen; lisää aiheesta toisilla ohjelmointikursseilla tai muista lähteistä. - funktio
- function aliohjelma; ohjelman osa, joka huolehtii tietystä tehtävästä ja joka voidaan määrätä suoritettavaksi kutsumalla sitä ¶ Ks. luvut 1.6, 1.7 ja 1.8. Funktio määritellään kirjaamalla ohjelmakoodiin sen puumerkki ja runko. Kun funktio on määritelty, sitä voi kutsua, jolloin sen ohjelmakoodi suoritetaan. Mm. Scala-kielessä funktiot voivat olla vaikutuksellisia tai vaikutuksettomia. Metodit ovat olioihin liitettyjä funktioita. Ks. myös korkeamman asteen funktio ja nimetön funktio.
- funktiokutsu
- function call
1) lauseke, joka evaluoidaan suorittamalla tietyn funktion ohjelmakoodi;
2) tällaisen lausekkeen evaluoimisesta syntyvä toiminta; funktion koodin suorittaminen ¶
Ks. luvut 1.6 ja 1.7. Monille funktioille välitetään parametreja;
parametrilausekkeet kirjataan funktiokutsulausekkeeseen. Kun funktiokutsu
suoritetaan, sen tarpeisiin luodaan (tavallisesti) kehys ja funktion rungon
sisältämät käskyt suoritetaan. Funktiokutsulausekkeen arvo on funktion koodin suorittamisen
tuottama palautusarvo. Scala-ohjelmien funktiot palauttavat aina jonkin arvon, joskin
palautusarvo voi olla vain
Unit
merkkinä siitä, ettei merkityksellistä palautusarvoa ole. - funktioliteraali
- function literal literaali, joka määrittelee nimettömän funktion ¶ Scala tarjoaa useita vaihtoehtoisia tapoja kirjoittaa funktioliteraaleja; ks. luku 6.2. Tunnetaan myös nimellä lambdafunktio.
- funktion runko
- function body funktion määrittelyn se osa, joka määrittelee, mitkä käskyt suoritetaan, kun funktiota kutsutaan ¶ Ks. luku 1.7. Scala-koodissa funktion runko kirjoitetaan funktion puumerkin ja yhtäsuuruusmerkin perään.
- funktionaalinen ohjelmointi
- functional programming ohjelmointiparadigma, joka perustuu vaikutuksettomiin funktioihin ja muuttumattomaan tietoon ja johon tyypillisesti yhdistyy runsas korkeamman asteen funktioiden käyttäminen ¶ Ks. luku 10.2 ja vrt. imperatiivinen ohjelmointi. Funktionaalinen ohjelmointi on keskeinen deklaratiivisen ohjelmoinnin muoto.
- globaali muuttuja
- global variable Muuttuja, joka on näkyvissä kautta koko ohjelman. ¶ Tällä termillä viitataan tyypillisesti vain muuttujiin, jotka on määritelty luokkien ja olioiden ulkopuolella (vaikkakin esimerkiksi olion jäsenmuuttujat voivat olla julkisia). Monet ohjelmoijat paheksuvat globaaleja muuttujia, koska niiden perusteettomasta käytöstä syntyy spagettikoodia.
- graafinen käyttöliittymä
- graphical user interface käyttöliittymä, joka perustuu pelkkien kirjoitusmerkkien sijaan myös graafisiin elementteihin kuten ikkunoihin ja nappuloihin ¶ Ks. luvut 2.7, 3.1 ja 12.3. Graafisiin käyttöliittymiin viitataan suomeksikin usein lyhenteellä GUI. Graafiset käyttöliittymät ovat nykyään hyvin yleisiä, ja aivan erityisen yleisiä ne ovat sellaisissa sovellusohjelmissa, joiden käyttäjät eivät itse ole ohjelmoijia.
- GUI
- GUI graphical user interface eli graafinen käyttöliittymä
- GUI-elementti
- GUI element graafisen käyttöliittymän osa ¶ Ks. GUI-komponentti.
- GUI-komponentti
- GUI component graafisen käyttöliittymän osa; erityisesti: sellainen graafisen käyttöliittymän osa, joka on sijoitettu ikkunan sisälle ¶ Esimerkiksi nappulat ja tekstikentät ovat GUI-komponentteja. GUI-elementillä tarkoitetaan usein samaa, mutta joissain yhteyksissä komponenteiksi kutsutaan vain käyttöliittymäikkunan varsinaisen sisällön muodostavia osia (ei esim. dialogeja ja muita ikkunoita), kun taas "elementti"-sanalla on yleisempi merkitys.
- hakurakenne
- map, dictionary kokoelma, jonka alkiot ovat avain–arvo-pareja ja josta voi poimia arvon käyttämällä tuon arvon yksiselitteisesti osoittavaa avainta ¶ Ks. luvut 8.4 ja 9.2. Hakurakenteita on (esim. Scalassa) sekä muuttuvatilaisia että muuttumattomia. Hakurakenteista käytetään monia muitakin nimiä kuten "sanakirja", "assosiatiivinen taulukko" ja "mäppi".
- heikko tekoäly
- weak AI tekoäly, joka toimii kapeaksi rajatulla erikoisalueella ¶ Tarkoittaa melkein samaa kuin suppea tekoäly; termillä saatetaan lisäksi korostaa eroa vahvaan tekoälyyn, jolla on tietoisuus.
- hierarkia
- hierarchy ks. luokkahierarkia
- IDE
- IDE integrated development environment eli sovelluskehitin
if
- if
monissa ohjelmointikielissä esiintyvä valintakäsky, jolla voidaan määrätä tietokone
valitsemaan kahdesta vaihtoehdosta totuusarvoisen lausekkeen
arvon perusteella ¶ Ks. luku 3.4. Ks. myös
match
. - ilmentymä
- instance luokan perusteella luotu olio, yksittäistapaus luokan kuvaamasta käsitteestä ¶ Ks. luku 2.3. Ilmentymien tietoja ei kirjata ohjelmakoodiin samoin kuin yksittäisolioiden, vaan ne luodaan luokkamäärittelyn perusteella instantioimalla. Ilmentymiä sanotaan myös "instansseiksi".
- ilmentymämuuttuja
- instance variable 1) luokan jäsenmuuttuja; 2) luokan jäsenmuuttujan ilmentymäkohtainen kopio tietokoneen muistissa ¶ Ilmentymien tiedot varastoidaan ilmentymämuuttujiin; ks. luku 2.4.
- imperatiivinen ohjelmointi
- imperative programming yleinen ohjelmointiparadigma, joka perustuu muuttuvatilaisen tiedon käsittelyyn peräkkäin järjestetyillä käskyillä (lauseilla) ja vaikutuksellisilla aliohjelmilla ja johon tyypillisesti yhdistyy runsas silmukoiden käyttö toiston välineenä ¶ Ks. luku 10.2 ja vrt. funktionaalinen ohjelmointi.
- implisiittinen
- implicit kätketty; (vain) epäsuorasti pääteltävissä oleva; ei eksplisiittinen
- implisiittinen riippuvuus
- implicit coupling tilanne, jossa yhden ohjelmakoodin osan muuttaminen edellyttää muutoksia myös toisaalle ohjelmassa, mutta tämä tarve ei ole ilmeinen ¶ Esimerkiksi maagiset luvut aiheuttavat implisiittisiä riippuvuuksia. Implisiittiset riippuvuudet huonontavat ohjelmakoodin muokattavuutta ja kasvattavat bugien riskiä.
import
- import
(Scalassa ja useassa muussakin kielessä:) koodin kirjoittamista kätevöittävä käsky, jolla
ohjelmoija ilmoitettaa etukäteen, että aikoo käyttää työkaluja tietystä pakkauksesta (tai
vastaavasta "työkalupakista") jäljempänä ohjelmassa ¶ Kun sopiva
import
-käsky on annettu, voi pakkauksen sisältöön viitata lyhyesti, kirjoittamatta täydellisiä nimiä. Ks. luvut 1.6 ja 5.2. Käyttämämme REPL-ympäristö suorittaa joitakinimport
-käskyjä automaattisesti; ks. luku 1.6. Ks. myös pakkausolio. - indeksi
- index alkion järjestysnumero sellaisessa kokoelmassa, jonka alkiot ovat numeroidussa järjestyksessä ¶ Esimerkiksi vektorit, puskurit ja taulukot ovat indeksoituja kokoelmia. Indeksoidun kokoelman alkioihin pääsee käsiksi indeksin perusteella; ks. luku 1.5. Joissakin ohjelmointikielissä indeksointi alkaa ykkösestä eli ensimmäisen alkion indeksi on 1. Toisissa (kuten Scalassa) se alkaa nollasta.
- indeksoida
- index
1) osoittaa alkiokokoelman kohta indeksiä käyttäen; 2) varustaa indekseillä ¶
Esimerkiksi lausekkeessa
puskuri(0) = 10
indeksoidaan puskuria (merkitys 1), ja näin sijoitetaan sen ensimmäiseksi alkioksi luku 10. - indeksoitu
- indexed (kokoelmasta:) indekseihin perustuva
- input/output
- input/output ohjelman ja sen ulkopuolisten tahojen välinen viestintä; lukeminen ja kirjoittaminen ¶ "Ulkopuolisia tahoja" voivat olla esimerkiksi tiedostot (ks. luku 11.3), tietokoneen oheislaitteet (esim. näppäimistö, näyttö) ja toiset tietoverkossa sijaitsevat tietokoneet. Usein käytetään lyhennettä I/O tai IO.
- instanssi
- instance sama kuin ilmentymä
- instantioida
- instantiate
luoda olio tietyn luokan ilmentymäksi ¶ Scalassa instantiointiin
käytetään
new
-sanaa; ks. luku 2.3. Instantioinnin yhteydessä uudelle oliolle varataan muistitilaa ja alustetaan olio konstruktorin avulla. Instantiointikäskyn voi sanoa olevan eräänlainen erikoisfunktiokutsu. - IntelliJ IDEA
- IntelliJ IDEA eräs sovelluskehitin ¶ Tunnetaan myös lyhyemmin nimellä IntelliJ tai IJ. IntelliJ’n avoin ilmaisversio (Community Edition) on O1-kurssin virallinen ohjelmointityökalu. IntelliJ’hin on tarjolla A+ Courses -lisäosa, joka kätevöittää mm. tehtävien noutamista ja palauttamista.
- I/O
- I/O lyhenne termille input/output
- iteraatio
- iteration 1) toistaminen siten, että kukin toistokerta jatkaa siitä, mihin edellinen jäi; 2) sellaiseen toistoon perustuva ohjelmien toteutustapa; erityisesti: käskyjen toistaminen silmukalla ¶ Vrt. rekursio ja ks. luku 12.1.
- iteraattori
- iterator olio, joka tarjoaa palvelun tietyn kokoelman sisällön läpikäymiseen väljästi tietyssä järjestyksessä ¶ Ks. luku 11.3.
- itsenäinen yksittäisolio
- standalone object yksittäisolio, joka ei ole kumppaniolio
- Java
- Java 1) eräs ohjelmointikieli; 2) alun perin Java-kielen yhteyteen suunniteltu ohjelmointityökalusto, ns. Java platform, johon sisältyy eritoten Java-virtuaalikone ¶ Java-kieli on tarkoitettu lähinnä imperatiiviseen olio-ohjelmointiin. Java-ohjelmia ajetaan yleensä Java-virtuaalikoneessa kuten Scala-ohjelmiakin, ja Scala-ohjelmistakin on helppo käyttää Java-kielellä laadittuja kirjastoja; ks. luvut 5.4, 11.3 ja 12.3.
- JavaScript
- JavaScript eräs ohjelmointikieli ¶ JavaScriptillä on ohjelmointikielien joukossa de facto -erityisasema sikäli, että nykyiset web-selaimet osaavat suorittaa JavaScript-ohjelmia. Sitä käytetäänkin laajasti web-sivuilla. Muunkielisten ohjelmien kääntäminen JavaScriptiksi on yleistymään päin, ja Scala-kielisiäkin ohjelmia voi kääntää JVM-tavukoodin sijaan myös JavaScriptiksi käyttämällä Scala.js-välineistöä. Nimestään huolimatta JavaScript on aivan eri asia kuin Java; nimien samankaltaisuus johtuu kaiketi markkinointisyistä.
- Java-virtuaalikone
- Java Virtual Machine eräs virtuaalikone ¶ Ks. luku 5.4. Java-virtuaalikone eli JVM suunniteltiin Java-ohjelmointikielen yhteyteen, mutta sittemmin on ryhdytty kääntämään monia muitakin ohjelmointikieliä sellaiseksi tavukoodiksi, jota JVM osaa suorittaa. Scala on yksi näistä kielistä.
- julkinen
- public ulospäin näkyvä; rajapintaan kuuluva; mistä tahansa ohjelmassa käytettävissä oleva ¶ Ks. luku 3.2 ja vrt. yksityinen. Scalassa kaikki sellaiset luokkien ja yksittäisolioiden jäsenet, joiden näkyvyyttä ei erikseen ole rajoitettu, ovat julkisia.
- JVM
- JVM Java Virtual Machine eli Java-virtuaalikone
- järjestäminen
- sorting kokoelman alkioiden asettaminen järjestykseen jonkin kriteerin perusteella ¶ Esimerkiksi lukuja sisältävä kokoelma voidaan järjestää nousevaan tai laskevaan suuruusjärjestykseen; ks. luku 9.2. Järjestämisen yhteydessä voidaan luoda uusi kokoelma järjestettyä tietoa varten; muuttuvatilainen kokoelma voidaan myös järjestää "paikallaan" (in place).
- jäsen
- member nimetty luokan tai yksittäisolion osa ¶ Metodit ja jäsenmuuttujat ovat jäseniä.
- jäsenmuuttuja
- member variable muuttuja, joka on luokan tai yksittäisolion jäsen ¶ Luokkien jäsenmuuttujia sanotaan usein ilmentymämuuttujiksi, koska niistä luodaan muistiin kopio jokaista luokan ilmentymää kohden; ks. luku 2.4.
- kapselointi
- encapsulation sana, jolla tarkoitetaan jompaakumpaa seuraavista tai niiden yhdistelmää: 1) tiedon piilottaminen jonkin rajapinnan taakse esimerkiksi näkyvyysmääreitä käyttäen; 2) aliohjelmien liittäminen samaan kokonaisuuteen niiden käsittelemien tietojen kanssa (kuten olioissa)
- katenoida
- (con)catenate
yhdistää peräkkäin asettaen ¶ Käytetään ohjelmoinnin yhteydessä etenkin
merkkijonoista. Esimerkiksi merkkijonot
"kon"
ja"katenoida"
katenoimalla syntyy merkkijono"konkatenoida"
. - kehys
- (stack) frame osa tietokoneen muistista, joka on varattu tietyn funktiokutsun suorittamiseen tarvittavien tiedon varastoimiseen ¶ Ks. luvut 1.7 ja 1.8. Kehysten tyypilliseen sisältöön lukeutuvat mm. paikalliset muuttujat, osio lausekkeiden evaluoimiselle funktiokutsun aikana sekä tieto siitä, mistä ohjelman kohdasta funktiota on kutsuttu ja mihin siis tulee palata funktiokutsun päättyessä. Kukin kehys pidetään varattuna niin kauan kuin funktiokutsu kestää. Kehykset muodostavat kutsupinon.
- keinoäly
- artificial intelligence (AI) tekoäly
- kenttä
- field sama kuin jäsenmuuttuja
- keskeytyskohta
- breakpoint debuggerissa asetus, joka saa ohjelman suorituksen pysähtymään, kun tarkasteltavan ohjelman suorituksessa saavutaan tiettyyn vaiheeseen ¶ Ks. debuggeria esittelevä sivu.
- kiintoarvo
- fixed value
muuttuja, jonka arvoa ei vaihdeta sen jälkeen, kun muuttuja on kerran alustettu
sopivalla arvolla ¶ Yksi muuttujien rooleista. Ks. luku 2.6 ja vrt.
vakio ja
val
-muuttuja. - kirjasto
- library valikoima aliohjelmia, luokkia tai vastaavia ohjelmien osiksi sopivia komponetteja ¶ Eräät kirjastot, kuten Scala API, liittyvät kiinteästi tiettyyn ohjelmointikieleen. Jotkut kirjastot ovat yleiskäyttöisempiä kuin toiset, eli niiden tarjoamia osia voi hyödyntää useammanlaisten eri ohjelmien "rakennuspalikoina".
- kirjastofunktio
- library function funktio, joka sisältyy johonkin kirjastoon ¶ Sanalla voidaan korostaa, että kyseessä ei ole ohjelmoijan itsensä tiettyyn sovellukseen laatima funktio vaan yleiskäyttöisemmän kirjaston osa.
- kirjoittaa
- write, print 1) välittää tietoa ohjelmasta sen ulkopuolelle (osa I/O:ta) teksti tai binaarilukuina; 2) sijoittaa ¶ Ks. luku 11.3; ks. myös tulostaa.
- klosuuri
- (lexical) closure sama kuin sulkeuma
- koheesio
- cohesion yhteenliittyvyys, yhtenäisyys; se, kuinka tiiviisti tietty ohjelman osa muodostaa yhden selvästi rajatun kokonaisuuden, jonka osat liittyvät toisiinsa ¶ Esimerkiksi luokalla on korkea koheesio, jos se määrittelee yhden selvästi muista erottuvan käsitteen eikä sisällä tähän käsitteeseen liittymättömiä jäseniä. Koheesio on toivottava piirre ohjelmaa suunnitellessa; ks. luku 9.1.
- kokoelma
- collection tietorakenne, jonka tehtävänä on pitää kirjaa useasta tietyntyyppisestä arvosta ¶ Scala-ohjelmissa kokoelmia kuvataan olioina. Kokoelman sisältämiä arvoja sanotaan alkioiksi. Kokoelmia on eri tyyppisiä; erilaiset kokoelmat eroavat toisistaan mm. tehokkuuden osalta. Joissakin kokoelmissa alkiot ovat hyvin määritellyssä järjestyksessä esimerkiksi indeksien perusteella. Jotkin kokoelmat ovat muuttumattomia, toiset muuttuvatilaisia. Monet kokoelmat ovat tiukkoja mutta toiset väljiä. Kokoelmatyypit ovat usein tyyppiparametrillisia. Kurssilla esiin tuleviin kokoelmatyyppeihin lukeutuvat mm. puskurit, merkkijonot, vektorit, taulukot, hakurakenteet, listat, laiskalistat ja ja pinot. Vrt. monikko.
- kokooja
- gatherer muuttuja, jota käytetään kokoamaan tulos useiden yksittäisten arvojen perusteella, näitä arvoja vaiheittain yhdistellen ¶ Kokoojaan voidaan esimerkiksi muodostaa vaiheittain lukujen summa. Kokooja on yksi muuttujien rooleista. Ks. luvut 2.6 ja 5.5.
- komentorivi
- command line tekstipohjainen ympäristö tietokoneen käyttämiseksi ¶ Komentoriviä käyttävä ihminen käynnistää ohjelmia kirjoittamalla ohjelman nimen (tarvittavine lisätietoineen). Tyypillisesti ohjelman tuloste tulee tällöin näkyviin, sekin tekstimuodossa. Komentorivi voi olla vaihtoehto graafiselle käyttöliittymälle; toisaalta komentorivi voi olla myös osa graafista käyttöliittymää. Esimerkkejä komentoriviympäristöistä ovat Windowsin Command Prompt ja Linuxien Terminal-ohjelmat. Luvussa 5.4 on esimerkkejä Scala-työkalujen käytöstä komentorivillä.
- komentosarja
- script skripti (erityisesti: sellainen skripti, jota käytetään työvaiheiden automatisointiin)
- kommentti
- comment lähdekoodiin kirjoitettu ihmislukijalle tarkoitettu osio, jota tietokone ei tulkitse osaksi suoritettavaa ohjelmaa ja joka ei siis vaikuta ohjelman toimintaan ¶ Asianmukainen kommenttien käyttö kuuluu hyvään ohjelmointityyliin. Ks. luku 1.2 ja kurssin tyyliopas. Ks. myös dokumentaatiokommentti.
- komponentti
- component 1) osa; 2) GUI-komponentti
- konekieli
- machine code, machine language ohjelmointikieli, joka sopii (tietynlaisten) prosessorien suoritettavaksi ¶ Ks. luku 5.4. Konekielet ovat yleensä erittäin matalatasoisia laitteistoriippuvaisia kieliä. Prosessorin käsittelemät konekieliset ohjelmat muodostuvat tällöin (binaari)luvuista, mutta konekielinen ohjelma voidaan esittää myös symbolisessa muodossa. Nykyään ohjelmat usein kirjoitetaan korkean tason kielellä, joka muunnetaan konekieleksi ennen ajamista esimerkiksi kääntämällä. Sanaa "konekieli" voidaan käyttää myös symbolisista konekielistä ja virtuaalikoneiden suoritettaviksi sopivista näennäiskonekielistä.
- koneoppiminen
- machine learning tietojenkäsittelyn osa-alue, jossa ohjelmisto tai järjestelmä oppii sille annetun datan perusteella tekemään päätöksiä, ennustuksia tai muita arvioita sellaisistakin tapauksista, jotka vain muistuttavat datassa esiintyviä (mutteivät ole niiden kanssa identtisiä) ja joita ohjelmoija ei ole erikseen koodiksi kirjannut ¶ Koska monet koneoppimisen sovellukset tekevät ihmisiin vaikutuksen, niihin usein viitataan trendikkäästi tekoälynä. Ks. luku 7.1.
- konkatenoida
- concatenate sama kuin katenoida
- konkreettinen luokka
- concrete class luokka, joka ei ole abstrakti eikä piirreluokka ¶ "Tavallinen luokka". Konkreettisessa luokassa ei voi olla abstrakteja jäseniä, mutta myös konkreettinen luokka voi toimia yliluokkana kuten abstrakti luokkakin; ks. luku 7.3.
- konsoli
- console tekstikonsoli
- konstruktori
- (instance) constructor aliohjelma, joka suoritetaan ilmentymää luodessa ¶ Sanalla "konstruktori" viitataan ohjelmakoodiin, joka suoritetaan instantioinnin yhteydessä, kun olion tiedoille on varattu muistitilaa. Konstruktorin pääasiallinen tehtävä on alustaa juuri luodun olion tila halutunlaiseksi. Monesti konstruktorille annetaan parametreja, jotka täsmentävät, millainen ilmentymä luokasta halutaan luoda. Scala-ohjelmiin ei tarvitse kirjoittaa konstruktoria mihinkään erilliseen paikkaan (kuten joissakin muissa kielissä), vaan konstruktori muodostuu luokan runkoon kirjoitetuista käskyistä; ks. luku 2.4. Kuitenkin Scalassakin on mahdollista kirjoittaa erillinen konstruktori, jos halutaan kuormittaa ilmentymien luomiskäskyä; ks. esim. luku 4.1.
- konstruktoriparametri
- constructor parameter konstruktorille välitetty parametri ¶ Ks. luvut 2.3 ja 2.4. Konstruktoriparametreja käytetään, kun luokasta instantioidaan uusia olioita. On tyypillistä, että konstruktoriparametrien arvot sijoitetaan uuden olion ilmentymämuuttujien arvoiksi, mutta niitä voidaan hyödyntää myös muulla tavoin olion alustamisen yhteydessä.
- koodi
- code ks. ohjelmakoodi
- korkeamman asteen funktio
- higher-order function funktio, joka käsittelee toisia funktioita: ottaa niitä parametriksi tai palauttaa niitä ¶ Ks. luku 6.1. Käytetään myös nimeä "korkeamman kertaluvun funktio". Muunlaisia funktioita voidaan sanoa ensimmäisen asteen funktioiksi.
- korkean tason kieli
- high-level language ohjelmointikieli, jonka abstraktiotaso on korkea ja joka ei riipu ohjelmaa suorittavan tietokoneen erityispiirteistä ¶ Kielen "korkeus" on suhteellista, mutta esimerkiksi Scalaa pidetään yleisesti varsin korkean tason ohjelmointikielenä. Vrt. matalan tason kieli ja konekieli. Korkean tason kielet ovat yleensä ihmisten käyttöön sopivampia kuin matalan tason kielet.
- korvata
- override toteuttaa jo määritelty jäsen (metodi tai muuttuja) toisin yleisemmän määrittelyn käyttämisen sijaan ¶ Aliluokassa voidaan korvata yliluokan määrittelemä metoditoteutus toteutuksella, joka sopii juuri tuon aliluokan ilmentymille; ks. esim. luku 7.3. Korvaaminen onnistuu myös yksittäisessä luokan ilmentymässä, jonka toiminnan halutaan poikkeavan luokalle yleisesti määritellystä toiminnasta; ks. esim. luku 2.4.
- kumppaniolio
- companion object yksittäisolio, joka toimii tietyn luokan "kumppanina" ja mallintaa kyseistä luokkaa itseään olio-ohjelmassa ¶ Kumppaniolio on luokkansa kanssa samanniminen ja tulee määritellä samassa lähdekooditiedostossa; ks. luku 5.3. Luokalla ja sen kumppanioliolla on pääsy toistensa tietoihin. Kumppanioliossa voidaan pitää kirjaa esimerkiksi luokkaan liittyvistä vakioista tai muusta sellaisesta tiedosta, joka liittyy luokan edustamaan käsitteeseen mutta ei ole ilmentymäkohtaista.
- kuormittaa
- overload määritellä samaan ohjelmakomponenttiin (esim. luokkaan) keskenään samannimisiä funktioita, joilla kuitenkin on erilaiset parametrit ja siten eri puumerkit ¶ Ks. luvut 1.6 ja 4.1.
- kutsua
- call, invoke, apply määrätä funktio suoritettavaksi ¶ Ks. funktiokutsu.
- kutsumuoto
- signature sama kuin puumerkki
- kutsupino
- (call) stack pinotyyppinen kehyksiä sisältävä tietorakenne, jonka avulla pidetään ohjelma-ajon aikana kirjaa kullakin hetkellä käynnissä olevista funktiokutsuista ¶ Ks. luvut 1.7 ja 1.8.
- käsky
- command tietokonetta ohjeistava määräys ¶ "Käsky"-sanaa käytetään kurssilla epämuodollisesti mistä tahansa tietokoneen komentamisesta. Esimerkiksi tilan muuttamiseen käytettävät lauseet ovat käskyjä, samoin vaikutuksettomat lausekkeet.
- käynnistysolio
- app object (Scalassa:) sovellukseen kuuluva yksittäisolio, jonka yhteyteen kirjataan, mitä tietokoneen kuuluu tehdä, kun kyseinen sovellus käynnistetään ¶ Ks. luku 2.7.
- käyttöalue
- scope se osa ohjelmakoodia, josta käsin tiettyä ohjelman osaa voi käyttää ¶ Esimerkiksi Scalassa luokan julkisen metodin käyttöalue on koko ohjelma, yksityisen vain tuo luokka itse (mahdollisine kumppaniolioineen), ja funktion parametrimuuttujan kyseisen funktion runko. Ohjelman lohkorakenne vaikuttaa käyttöalueeseen; ks. luku 5.6. Ks. myös luku 6.4.
- käyttöjärjestelmä
- operating system ohjelmisto, joka hallinnoi laitteiston käyttöä ja tarjoaa ohjelmoijalle palveluita ohjelmien laatimisen tueksi ja loppukäyttäjälle sovellusten käynnistämiseksi ¶ Käyttöjärjestelmä mm. huolehtii laitteistoresurssien (muisti, prosessori, tiedostot, tietoverkko, oheislaitteet ym.) käytöstä ja tarjoaa ohjelmoijan käyttöön abstraktioita, joiden kautta näitä resursseja voi hyödyntää.
- käyttöliittymä
- user interface ohjelman tai laitteen se osa, jonka kanssa käyttäjä vuorovaikuttaa ¶ Sovellusohjelman käyttöliittymä voi esimerkiksi perustua tekstikonsoliin→ tulostuviin kirjoitusmerkkeihin tai se voi olla graafinen. Ks. myös näkymä ja vrt. malli.
- käyttöliittymätapahtuma
- GUI event (graafiseen) käyttöliittymään liittyvä tapahtuma ¶ Esimerkiksi hiiren liikkeet sekä käyttöliittymän nappuloiden painaminen ovat käyttöliittymätapahtumia. Ks. luvut 3.1 ja 12.3.
- käännösaikainen virhe
- compile-time error virhe, joka havaitaan automaattisesti ohjelmaa staattisesti käsittelemällä eli ohjelmaa ajamatta; erityisesti: virhe, joka havaitaan ohjelmaa kääntäessä ¶ Ks. luvut 1.8, 3.5 ja 7.2 ja vrt. ajonaikainen virhe ja looginen virhe. Monet käännösaikaiset virheet ovat syntaksivirheitä.
- kääntäjä
- compiler apuohjelma, joka muodostaa annetusta lähdekoodista toisenkielisen version; erityisesti: apuohjelma, joka muodostaa käännetyn version staattisesti, ohjelma-ajosta erillään ¶ Ohjelmia voidaan kääntää välikielelle tai suoraan konekieleksi. Scala-ohjelmia käännetään yleensä Java-virtuaalikoneelle sopivalle välikielelle. Ks. luku 5.4 ja vrt. tulkki. Ks. myös *build*.
- laama
- llama ohjelmointiin pitkälti liittymätön nisäkäslaji
- laiteajuri
- device driver ks. ajuri
- lajitteleminen
- sorting sama kuin järjestäminen
- lambdafunktio
- lambda function sama kuin nimetön funktio ¶ Erityisesti kielissä, joissa sellaisen määrittelemiseen käytetään sanaa "lambda" tai vastaavaa kreikkalaista aakkosta. Nimen taustaa on selitetty luvussa 6.2.
- lambdalauseke
- lambda expression sama kuin funktioliteraali ¶ Erityisesti kielissä, joissa funktioliteraaleissa käytetään sanaa "lambda" tai vastaavaa kreikkalaista aakkosta. Nimen taustaa on selitetty luvussa 6.2.
- laiska
- lazy
väljä ja lausekkeiden toistuvaa evaluointia välttävä ¶ Ks. luku 7.1. Tämä adjektiivi
kuvaa erästä tapaa, jolla lausekkeita voidaan evaluoida. Laiska muuttuja saa arvon
siihen sijoitettavasta lausekkeesta väljästi eli vain kun tai jos tuon muuttujan arvoa
käytetään; tämän jälkeen arvo on tallessa muuttujassa, josta se saadaan lauseketta uudelleen
evaluoimatta. Scalassa laiskan muuttujan voi määritellä ilmaisulla
lazy val
. Laiskan kokoelman kuten laiskalistan alkioista muodostetaan vain ne, joita käytetään; nuo alkiot varastoidaan tällöin muistiin. - laiskalista
- lazy-list
eräänlainen muuttumaton, laiska alkiokokoelma, joka sopii käytäväksi läpi järjestyksessä ¶
Nimensä mukaisesti laiskalistat ovat laiskasti evaluoituja listoja→. Scalassa
niitä kuvaa luokka
LazyList
. Koska laiskalistoja ei evaluoida tiukasti, ne voivat olla päättymättömiä eikä niitä läpikäyvän korkeamman asteen metodin tai silmukan toistokertojen määrää ole välttämätöntä määrittää ennalta. Ks. luvut 7.1 ja 8.3. Scala-kielen vanhemmissa versioissa vastaavasta kokoelmasta käytettiin nimeä "virta" (Stream
), ja tuota vanhaa nimeä käytetään edelleen monissa lähteissä. - lause
- statement
käsky, joka määrää tietokoneen suorittamaan jonkin toimenpiteen ¶ Esimerkiksi
Scalan tulostuskäskyä
println(1 + 1)
ja sijoituskäskyäa = 10
voi sanoa lauseeksi. Lauseella ei välttämättä ole merkityksellistä arvoa; esimerkiksi Scala-lause voi tuottaa vainUnit
-arvon ja olla silti hyödyllinen. Lause voi sisältää lausekkeita, jotka evaluoidaan lauseen suorittamisen aikana: esimerkiksi lauseprintln(1 + 1)
sisältää lausekkeen1 + 1
. Yksi lausekekin voi muodostaa lauseen. Lauseita voi kirjoittaa ohjelmakoodiin peräkkäin, ja näin voidaan määrätä toimenpiteitä suoritettaviksi peräkkäisessä järjestyksessä. Scala-kielessä funktioiden ja luokkien määrittelyt sekäimport
-käskyt luetaan virallisesti eräänlaisiksi lauseiksi nekin; ne eivät toisaalta ole lausekkeita, koska niille ei voida määrittää arvoa. (Vrt. tulostuslause on Scala-ohjelmassa paitsi lause myös lauseke, koska sillä onUnit
-arvo.) Lauseen käsite liittyy lähinnä imperatiiviseen ohjelmointiin; puhtaasti funktionaalisessa ohjelmoinnissa lausekkeen käsite yleensä riittää. Ohjelmointi 1 -kurssin materiaalissa tätä termiä ei juurikaan käytetä. - lauseke
- expression
ohjelmointikielen ilmaisu, jolle voidaan määrittää arvo ¶ Ks. esim. luku 1.3.
Lausekkeita ovat esimerkiksi literaalit, aritmeettiset lausekkeet kuten
1 + 1
, muuttujien nimet ja ohjelmakoodiin kirjoitetut funktiokutsut. Arvon määrittämistä sanotaan lausekkeen evaluoimiseksi. Vrt. lause. - LIFO
- LIFO pinojen noudattama periaate, jonka mukaan alkiota poistettaessa poistetaan aina viimeksi lisätty alkio ¶ Sanoista last in, first out. Ks. luku 11.2.
- liittää (piirre)
- mix in (a trait) määritellä luokka (tai yksittäisolio) piirreluokan alakäsitteeksi ¶ Ks. luku 7.2. Kun luokkaan on liitetty tietty piirre, sen ilmentymät ovat paitsi luokan itsensä tyyppisiä, myös liitetyn piirreluokan tyyppisiä. Piirteen liittävä luokka kuvaa piirreluokan kuvaaman käsitteen alakäsitettä. Luokkaan voi liittää useita piirreluokkia.
- lippu
- flag muuttuja tai vastaava tietorakenne, jota käytetään ilmoittamaan jostakin kaksijakoisesta asiaintilasta ¶ Ks. luku 5.6 ja yksisuuntainen lippu. Lippu voidaan toteuttaa esimerkiksi totuusarvoisena muuttujana.
- Liskovin periaate
- Liskov substitution principle tietotyyppien määrittelyyn liittyvä suunnitteluperiaate, jonka mukaan alatyypin (esim. aliluokan) arvoja täytyy voida mielekkäästi käyttää missä tahansa yhteydessä, jossa ylätyypinkin (esim. yliluokan) arvoja voi ¶ Ks. luku 7.3.
- lista
- list
1) luettelo; 2) (Scalassa ja useassa muussa kielessä:) eräänlainen muuttumaton alkiokokoelma,
jonka toteutus perustuu alkioiden ketjuun ja joka sopii käytäväksi läpi järjestyksessä ¶
Scalassa listoja kuvaa luokka
List
; ks. luku 7.1 ja jatkokurssit. Laiskalistat ovat nimensä mukaisesti laiskoja listoja. Eri ohjelmointikielet käyttävät sanaa "lista" erilaisista kokoelmatyypeistä. - literaali
- literal
yksinkertainen lauseke, jonka arvo on kirjoitettu suoraan ohjelmakoodiin ¶
Esimerkiksi
10
on kokonaislukuliteraali ja"laama"
merkkijonoliteraali. Ks. myös funktioliteraali. - liukuluku
- floating-point number tietokoneissa yleisesti käytetty bittitason esitystapa desimaaliluvuille ¶ Liukuluvun määrittävät etumerkkibitti, kerroin eli mantissa, kantaluku ja eksponentti. Kantalukuna käytetään yleensä (esim. Scalassa) lukua kaksi ja muut osat tallennetaan lukukohtaisesti. Aihetta sivutaan luvussa 5.4.
- logiikkaoperaattori
- logical operator
operaattori, jonka operandit ovat totuusarvoja ja joka tuottaa
totuusarvotyyppisen tuloksen ¶ Esimerkiksi
&&
(and) ja||
(or) ovat logiikkaoperaattoreita; ks. luku 5.1. - lohko
- block (Scalassa:) aaltosulkeiden sisään kirjoitettujen peräkkäisten käskyjen yhdistelmän muodostama lauseke ¶ Esimerkiksi funktion runko määritellään lohkoksi, kun runkoon kuuluu useita peräkkäisiä käskyjä. Samoin valintakäskyjen ehdollisesti suoritettavat osat voidaan kirjata lohkoiksi. Lohkot vaikuttavat käyttöalueisiin. Erityisesti: paikallisen muuttujan käyttöalue rajautuu lohkoon, jossa muuttuja on määritelty; ks. luku 5.6.
- looginen operaattori
- logical operator sama kuin logiikkaoperaattori
- looginen virhe
- logical error virhe, joka ilmenee ohjelman ei-toivottuna toimintana eikä teknisenä virhetilanteena ¶ Esimerkiksi jos ohjelma laskee vääriä tuloksia, tervehtii käyttäjää vääränlaisella viestillä tai jättää toivottuja toimintoja suorittamatta, on kyseessä looginen virhe. Vrt. käännösaikainen virhe ja ajonaikainen virhe.
- lukea
- read 1) vastaanottaa tietoa ohjelmaan sen ulkopuolelta (osa I/O:ta); 2) selvittää muuttujaan tallennettu arvo (kun muuttujaa käytetään lausekkeessa) ¶ Ks. luku 11.3; ks. myös syöte.
- luokan runko
- class body luokan määrittelyn varsinainen sisältö ¶ Luokan rungossa mm. määritellään luokkaan kuuluvat ilmentymämuuttujat ja metodit. Scalassa runko rajataan aaltosulkeilla. Suoraan Scala-luokan runkoon, metodien ulkopuolelle, kirjoitetut käskyt suoritetaan, kun luokasta luodaan ilmentymä; runko siis toimii konstruktorina.
- luokka
- class
1) olioita kuvaava tietotyyppi; 2) tällaisen tietotyypin määrittely ohjelmakoodissa ¶
Ks. luvut 2.1, 2.3 ja 2.4. Luokka määrittelee millaisia tietyntyyppiset oliot ovat; vrt.
yksittäisolio, joka on määritelty kaikista muista olioista erikseen. Siinä missä olio kuvaa
yksittäista asiaa, luokka kuvaa yleisempää käsitettä, josta oliot ovat yksittäistapauksia.
Luokan voi instantioida, jolloin syntyy uusi kyseisen tyyppinen olio eli luokan ilmentymä.
Ks. myös piirreluokka, abstrakti luokka. (Tarkennus: kurssilla sanomme Scala-luokkia
tietotyypeiksi tai tietotyyppien määrittelyiksi, mikä on pieni yksinkertaistus.
Huolellisemmin sanoen Scalan luokat ovat määrittelyjä, jotka voivat kuvata yhden tai useamman
tietotyypin. Esimerkiksi luokka
Int
kuvaa yhden tietotyypin, ja luokkaBuffer
kuvaa useita tietotyyppejä, jotka saadaan käyttämällä eri tyyppiparametreja:Buffer[Int]
,Buffer[String]
jne.) - luokkahierarkia
- class hierarchy luokkien välisten ylä- ja alakäsitesuhteiden kokonaisuus, luokkien "sukupuu" ¶ Ks. luku 7.3 sekä yli- ja aliluokka.
- luokkakirjasto
- class library kirjasto, joka sisältää luokkia
- luokkapolku
- classpath ohjelmointityökalujen (mm. JVM:n) asetus, joka kertoo, mistä kansioista ja/tai pakkauksista ohjelman osat löytyvät ¶ IntelliJ’ssä luokkapolkua voi muokata moduulikohtaisesti valitsemalla File → Project Structure... → Modules ja kyseisen moduulin kohdalta Dependencies. Näin voi esimerkiksi määritellä yhden moduulin hyödyntämään toista; ks. luku 10.1.
- luokkatiedosto
- class file
eräänlainen Java-virtuaalikoneelle tarkoitettu tiedosto, joka sisältää
virtuaalikoneelle sopivaa välikieltä ¶ Scala-ohjelmat yleensä käännetään
luokkatiedostoiksi Java-virtuaalikoneessa suorittamista varten. Luokkatiedostot nimetään
.class
-päätteisiksi. - lähdekoodi
- source code tekstimuotoinen kääntämätön ohjelmakoodi, joka on tarkoitettu ihmisen käsiteltäväksi ¶ Ks. luku 5.4. Kurssilla käsittelemme Scala-kielellä kirjoitettua lähdekoodia.
- maaginen luku t. arvo
- magic number, magic constant literaali, jonka tarkoitus ohjelmassa ei ole ohjelmakoodista ilmeinen ¶ Maagiset luvut voivat hankaloittaa ohjelman lukemista, ja maagisen luvun toistuessa voi syntyä implisiittisiä riippuvuuksia. Maagisia lukuja voi välttää esimerkiksi määrittelemällä vakioita niiden sijaan; ks. esim. luku 2.6.
- malli
- model 1) kuvaus jostakin asiasta tai kokonaisuudesta; erityisesti: kuvaus siitä aihealueesta, jota ohjelma käsittelee; 2) se sovellusohjelman osa, joka kuvaa aihealueen käsitteet (käyttöliittymästä riippumattomasti) ¶ Malleja voidaan muodostaa ohjelmointikielen rakenteita, esimerkiksi luokkia, käyttäen. Tätä sanaa käytetään usein korostettaessa eroa aihealuetta kuvaavan mallin ja tuon mallin käsittelemiseen tarkoitetun käyttöliittymän (eli näkymän) välillä; ks. luvut 1.2, 2.7, 3.1 ja 9.1.
- matalan tason kieli
- low-level language ohjelmointikieli, jonka abstraktiotaso on matala ja joka on riippuvainen ohjelmaa suorittavan tietokoneen erityispiirteistä ¶ Matalan tason kieliksi sanotaan yleensä lähinnä konekieliä. Matalan tason kielillä voi myös ohjelmoida, ja näin voidaan saavuttaa parempi suoritustehokkuus, mutta korkean tason kielet ovat moneen tarkoitukseen paljon käytännöllisempiä.
match
- match
valintakäsky, jolla voidaan määrätä tietokone valitsemaan kahdesta tai useammasta vaihtoehdosta
tutkimalla, mikä koodiin kirjatuista tapauksista vastaa tietyn lausekkeen arvoa ¶
Kukin
match
-käskyn tapauksista kuvaa ns. hahmon, johon tutkittavan lausekkeen arvo sovitetaan mikäli mahdollista. Hahmonsovitus perustuu arvon dynaamiseen tyyppiin. Ks. luvut 4.3 ja 4.4 ja vrt.if
. - merkkijono
- string
peräkkäisten merkkien jono, jossa kullakin merkillä on oma sijaintinsa ¶ Esimerkiksi
merkkijonossa
laama
on viisi merkkiä tietyssä järjestyksessä. Merkkijonot ovat eräs yleisimmistä tietokoneohjelmissa käytetyistä tietotyypeistä. Scalassa merkkijonoja kuvaa ennen muutaString
-tietotyyppi (luku 1.3), mutta myös vaihtoehtoisia esitystapoja merkkijonoille on olemassa (ks. esim. luku 10.2). Monien ohjelmointikielten peruskirjastoissa on paljon merkkijonojen käsittelemiseen sopivia aliohjelmia (ks. esim. luku 5.2 ja Scalaa kootusti). Merkkijonot voidaan lukea indeksoiduksi kokoelmatyypiksi, jossa kokoelman alkiot ovat yksittäisiä merkkejä (luku 5.6). - merkkijonoupotus
- string interpolation lausekkeiden kirjoittaminen merkkijonoliteraalin sisään siten, että syntyvän merkkijonon osiksi tulevat upotettujen lausekkeiden arvoja kuvaavat merkit ¶ Esitellään luvussa 1.4; lisäesimerkkejä mm. luvuissa 1.6, 2.4 ja 2.5.
- metodi
- method olioon liitetty funktio ¶ Olion metodit määrittävät, millaisiin viesteihin olio osaa reagoida ja miten se niihin reagoi; ks. luku 2.1. Scala-ohjelmakoodissa kukin metodin määrittely kirjoitetaan osaksi joko yksittäisolion tai luokan määrittelyä. Scalassa myös operaattorit ovat metodeita; ks. luku 5.2. Keskustelufoorumeita lukiessa on hyvä tietää, että kaikki Scala-ohjelmoijat eivät käytä sanaa aivan samalla tavalla kuin me ja virallinen Scala-sanasto.
- metodikutsu
- method call funktiokutsu, jossa kutsuttu funktio on metodi ¶ Ks. luku 2.1. Scalassa metodikutsulausekkeen voi kirjoittaa joko pistenotaatiolla tai operaattorinotaatiolla.
- metodin runko
- method body ks. funktion runko ¶ Metoditkin ovat funktioita.
- MIDI
- MIDI Musical Instrument Digital Interface, eräs sähköisten musiikkilaitteiden ohjelmoimiseen ja niiden väliseen viestintään määritelty standardi ¶ Ks. luku 1.4.
- modulo-operaattori
- modulo operator
operaattori jakojäännöksen laskemiseen ¶ Scalassa ja monessa muussa ohjelmointikielessä
modulo-operaattori on
%
. Ks. luku 1.7. - moduuli
- module (IntelliJ’ssä:) kokonaisuus, johon ohjelmointihankkeeseen liittyviä tiedostoja voi ryhmitellä, jotta niitä olisi helpompi hallita ¶ Moduuli (tässä mielessä) on IntelliJ-sovelluskehittimeen liittyvä käsite, kun taas pakkaus on ohjelmointikielen käsite. Ks. luku 1.2. Joissakin muissa sovelluskehittimissä samantapaisesta asiasta käytetään muuta termiä. "Moduuli"-termillä on muissa ohjelmointiyhteyksissä muitakin merkityksiä.
- monikko
- tuple usean, keskenään mahdollisesti erityyppisen jäsenen yhdistelmä, jossa jäseniä on vakiomäärä ja jossa ne ovat määrätyssä järjestyksessä ¶ Kaksialkioista monikkoa sanotaan pariksi. Mm. tämän kurssin terminologiassa monikot eivät ole kokoelmia, mutta joskus niitä eräänlaisiksi kokoelmiksikin sanotaan. Monikon kullekin jäsenelle on määritellään staattinen tyyppi erikseen, toisin kuin kokoelmassa, jonka alkioilla on yhteinen tyyppi. Monikon sisältöä ei voi käydä läpi samalla tavoin kuin kokoelman ilman erillisiä muuntotoimenpiteitä. Scalassa→ monikot ovat muuttumattomia. Ks. luku 8.4.
- moniperintä
- multiple inheritance periytyminen useasta välittömästä yliluokasta ¶ Scalassa ei ole varsinaista moniperintää useasta yliluokasta, mutta piirreluokkien avulla voi käytännössä täyttää samat tarpeet.
- muisti
- memory tietokoneen osa tai oheislaite, johon voidaan varastoida tietoa hetkellisesti tai pysyvämmin muistityypistä riippuen ¶ Ohjelmien käsittelemää tietoa pidetään tallessa muistissa, yleensä bitteinä. Kullakin muistin kohdalla on oma osoitteensa, eräänlainen järjestysnumero, joka identifioi kyseisen muistipaikan. Ohjelmien ajonaikaista muistinkäyttöä kuvataan tällä kurssilla abstrakteilla, animoiduilla diagrammeilla luvusta 1.3 alkaen.
- muistivuoto
- memory leak haitallinen ohjelman toiminta, jonka vuoksi ohjelma ei vapauta kaikkea varaamaansa muistia muuhun käyttöön sittenkään, kun se ei tuota muistitilaa enää tarvitse ¶ Muistia vuotava ohjelma varaa käyttöönsä (kenties vähitellen) yhä enemmän muistia, mikä voi mm. johtaa ohjelman kaatumiseen, kun tarjolla olevat muistiresurssit ehtyvät. Muistivuotoja syntyy esimerkiksi silloin, jos roskan viemää muistitilaa ei vapauteta.
- muodollinen parametri
- formal parameter sama kuin parametrimuuttuja
- muuttuja
- variable nimetty varastointipaikka yhdelle arvolle tietokoneen muistissa ¶ Ks. luvut 1.4 ja 2.6.
- muuttujan rooli
- role of a variable tyypillinen muuttujan käyttötapa; eräänlainen kuvaus tavasta, jolla muuttujaa käytetään ohjelmassa ¶ Ks. esim. luvut 2.6 ja 5.5. Rooleja ovat mm. kiintoarvo, tilapäissäilö, kokooja, tuoreimman säilyttäjä, säiliö, sopivimman säilyttäjä ja yksisuuntainen lippu. Rooleilla ei ole teknistä merkitystä, vaan ne ovat ihmisille tarkoitettuja kuvauksia muuttujien käytöstä ohjelmissa.
- muuttumaton
- immutable (kokoelmasta tai muusta oliosta tai tietorakenteesta:) sellainen, jonka tila ei missään tapauksessa vaihdu toiseksi ohjelma-ajon aikana ¶ Esimerkiksi vektorit ovat muuttumattomia kokoelmia, koska kerran luodussa vektorissa on pysyvästi samat alkiot; puskuri taas on muuttuvatilainen. Ks. luvut 4.2 ja 10.2.
- muuttuvatilainen
- mutable (kokoelmasta tai muusta oliosta tai tietorakenteesta:) sellainen, jonka tila voi vaihtua toiseksi ohjelma-ajon aikana ¶ Esimerkiksi puskurit ovat muuttuvatilaisia kokoelmia, koska samassa puskurissa voi olla eri hetkinä eri sisältö; vektori taas on muuttumaton. Ks. luvut 4.2 ja 10.2.
- myöhäinen sidonta
- late binding käytetään (mm.) dynaamisen sidonnan synonyyminä
- nimetön funktio
- anonymous function funktioliteraalin määrittelemä ja siis nimeämätön funktio ¶ Ks. luku 6.2. Tunnetaan myös nimellä lambdafunktio.
- nimetön parametri
- anonymous parameter alaviivalla merkitty nimeämätön parametrimuuttuja Scalan lyhennetyissä funktioliteraaleissa ¶ Ks. luku 6.2.
- nimiö
- label yksinkertainen GUI-komponentti, jonka tehtävänä on näyttää käyttäjälle jokin teksti ja/tai kuva ¶ Myös esim. "labeli", "lappu". Ks. luku 12.3.
None
- None
Option
-tyyppinen yksittäisolio, joka ei sisällä yhtään tietoalkiota ¶ Ks. luku 4.3 ja vrt.Some
. Toisin kuinnull
-viittauksen, viittaustaNone
-olioon ei voi sijoittaa mielivaltaisen tyyppiseen muuttujaan;Option
-tyyppiseen muuttujaan kuitenkin voi. - notaatio
- notation merkintätapa ¶ Ks. pistenotaatio ja operaattorinotaatio.
- null-viittaus
- null reference
olemattoman tiedon merkkinä käytetty arvo; viittaus, joka ei osoita mihinkään kohtaan
tietokoneen muistissa ¶ Esimerkiksi Scalassa null-arvo on tyyppiyhteensopiva lähes
minkä tahansa tietotyypin kanssa (vrt.
Option
, joka ei ole). Null-viittausten käyttö on omiaan aiheuttamaan bugeja. Niiden käyttöä usein vältetään Scala-ohjelmoinnissa. Ks. luvut 4.2, 4.3 ja 12.1. NullPointerException
- NullPointerException
sellaisten ajonaikaisten virheiden tyyppi, jotka syntyvät yritettäessä käyttää
null
-viittauksen osoittamaa tietoa (jota ei ole) ¶ Esimerkiksi jos Scala-ohjelmassa yritetään kutsua metodia muuttujalle, johon on tallennettu null-viittaus eikä viittausta olemassa olevaan olioon, syntyyNullPointerException
; ks. luvut 4.2 ja 4.3. Tämä virhetyyppi esiintyy samalla nimellä myös mm. Java-ohjelmointikielessä. Monissa muissa kielissä on vastaavia virhetyyppejä eri nimillä. - näennäissatunnaisluku
- pseudorandom number luku, jonka on tuottanut aitoa satunnaisuutta jäljittelevä algoritmi ¶ Ks. luku 3.6 ja satunnaislukujen siemen.
- näkymä
- view
1) sovelluksen osa, joka näkyy käyttäjälle; käyttöliittymä; 2) (erityisesti:)
käyttöliittymän se osa, joka esittää aihealueen mallin käyttäjälle ¶ Jälkimmäisessä, suppeammassa
merkityksessä näkymä erotetaan sekä aihealueen mallista että niistä käyttöliittymän osista, jotka
reagoivat käyttäjän toimiin ja päivittävät mallia; ks. Model–View–Controller Wikipediassa. Ks. myös
View
. - näkyvyys
- visibility
ohjelman osan ominaisuus, joka kuvaa tuon osan käyttöaluetta ¶ Voidaan esimerkiksi sanoa,
että
private
on "näkyvyysmääre" ja että luokkaan yksityiseksi määritelty muuttuja "näkyy" vain kyseisen luokan sisällä. - O1Library
- O1Library tämän kurssin tarpeisiin laadittu ohjelmakirjasto ¶ Monet kurssin esimerkkiohjelmat hyödyntävät tätä kirjastoa. Se sisältää työkaluja, joilla voi mm. laatia yksinkertaisia kuviin perustuvia graafisia käyttöliittymiä sekä tuottaa MIDI-ääntä kätevästi. Valittuja osia O1Librarystä esitellään tämän oppimateriaalin luvuissa. Kirjastosta on myös dokumentaatio, ja Scalaa kootusti -sivulla on lyhyt johdanto sen graafisiin työkaluihin.
Object
- Object
(Scala-näkökulmasta:) toinen nimi luokalle
AnyRef
sellaisissa yhteyksissä, joissa Scala-ohjelmaa ajetaan JVM-alustalla - ohjelma
- program 1) tietokoneen suoritettavaksi tarkoitettu toimintaohje; 2) tällaisen ohjeistuksen suorittamisesta syntyvä dynaaminen prosessi ¶ Ohjelmia ovat mm. sovellukset, käyttöjärjestelmät ja ajurit; ks. luku 1.2. Kun ohjelma on kokonaisuus, johon kuuluu oheistiedostoja tai erillisiä pienempiä ohjelmia, voidaan siitä käyttää myös termiä ohjelmisto.
- ohjelmakirjasto
- software library ks. kirjasto
- ohjelmakoodi
- program code 1) ohjelmateksti, lähdekoodi; 2) ohjelma konekielisessä muodossa ¶ Kurssillamme ohjelmakoodi käytännössä tarkoittaa Scala-kielistä lähdekoodia; konekielisistä ohjelmista ei puhuta kuin hitunen luvussa 5.4.
- ohjelmisto
- software ohjelma tai ohjelmien yhdistelmä, johon voi lisäksi liittyä oheistiedostoja varsinaisen suoritettavan ohjelman lisäksi ¶ Käytetään erityisen usein laajemmista kokonaisuuksista.
- ohjelmointi
- programming tietokoneohjelmien laatiminen: niiden suunnitteleminen ja toteuttaminen ¶ Ks. luku 1.2.
- ohjelmointikieli
- programming language keinotekoinen ohjelmien kirjoittamiseen tai muulla tavoin ilmaisemiseen tarkoitettu kieli ¶ Ohjelmointikieliä usein kirjoitetaan tekstimuotoon, mutta esim. ns. visuaalisessa ohjelmoinnissa ohjelma esitetään ainakin osin diagrammeina tai kuvina.
- ohjelmointiparadigma
- programming paradigm ohjelmoinnin suuntaus; tapa lähestyä ja ratkaista ohjelmointiongelmia ¶ Ks. luvut 2.1 ja 10.2. Tällä kurssilla puhetta on olio-ohjelmoinnista, imperatiivisesta ohjelmoinnista, funktionaalisesta ohjelmoinnista ja hieman myös proseduraalisesta ohjelmoinnista.
- ohjelmointityyli
- programming style ohjelmien laatimiseen liittyvät (kenties kirjoittamattomat) säännöt, toimintatavat tai periaatteet; erityisesti: säännöt, toimintatavat tai periaatteet, jotka liittyvät lähdekoodin muotoilemiseen ¶ Hyvällä ohjelmointityylillä pyritään auttamaa ohjelmaa lukevia ja sitä muokkaavia ihmisiä; ks. kurssin tyyliopas. Ohjeita ohjelmointityylistä kirjataan tyylikäytännöiksi.
- olio
- object eräänlainen yksittäistä asiaa mallintava abstraktio; ohjelman osa, joka osaa vastaanottaa viestejä ja reagoida niihin ohjelmoijan määrittelemällä tavalla ¶ Oliot ovat olio-ohjelmoinnin perusta; ks. luku 2.1. Olioiden toiminnallisuus toteutetaan määrittelemällä niille funktioita, joita kutsutaan metodeiksi. Oliolla voi olla muuttuva tila. Ks. myös yksittäisolio ja luokka.
- olio-ohjelmointi
- object-oriented programming yleinen ohjelmointiparadigma, jossa ohjelmat rakennetaan kuvaamalla ongelmakenttä olioina ja niiden välisenä viestintänä ¶ Ks. esim. luvut 2.1 ja 10.2. Scala on puhdas olio-ohjelmointikieli: kaikki tieto esitetään olioina (ks. luvut 5.2 ja 5.3). Olio-ohjelmointiin liitetään usein myös esimerkiksi luokan ja periytymisen käsitteet, mutta ne eivät oikeastaan ole olio-ohjelmoinnin kannalta välttämättömiä.
- olion muuttuja
- ilmentymämuuttuja tai yksittäisolion jäsenmuuttuja ¶ Kurssilla käytetty "epävirallinen" ilmaisu. Olioiden tiedot varastoidaan olioiden muuttujiin.
- OOP
- OOP object-oriented programming eli olio-ohjelmointi
- operaattori
- operator
kirjoitusmerkki tai merkkien yhdistelmä, joka lähdekoodiin kirjoitettuna
määrää tietyn toimenpiteen suoritettavaksi ohjelmointikielen sääntöjen
mukaisesti ¶ Esimerkiksi
+
on monessa ohjelmointikielessä yhteenlaskuoperaattori ja<=
eräs vertailuoperaattori. Kuten operaattoritkin, myös funktiokutsut määräävät toimenpiteitä suoritettaviksi, ja ero operaattorien ja funktiokutsujen välillä voi olla häilyvä. Operaattoreiksi sanotaan yleensä sellaisia merkkejä tai merkkiyhdistelmiä, joita käytetään hyvin yksinkertaisella ja tyypillisistä funktiokutsuista poikkeavalla syntaksilla. Scalassa ei varsinaisesti ole erillistä operaattorin käsitettä ollenkaan, vaan metodeita voi käyttää joko operaattorinotaatiolla tai pistenotaatiolla (luku 5.2). Metodeita kuten+
, joita käytetään yleensä operaattorinotaatiolla, voidaan Scalassakin nimittää operaattoreiksi. - operaattorinotaatio
- (infix) operator notation
metodien kutsumiseen käytetty merkintätapa, jolle on ominaista välimerkkien
puuttuminen metodikutsulausekkeesta ¶ Esim.
olio metodi parametri
tai1 + 1
. Scalassa operaattorinotaatiota voi käyttää tietyissä yhteyksissä pistenotaation sijaan; ks. luku 5.2 ja kurssin tyyliopas. Ks. myös operaattori. - operandi
- operand
1) lauseke, johon operaattori kohdistetaan; 2) tällaisen lausekkeen arvo ¶ Esimerkiksi
laskutoimituksessa
2 * (1 + 10)
ovat kertolaskuoperaattorin operandeina literaali2
ja aritmeettinen lauseke(1 + 10)
. Option
- Option
luokka, jonka avulla voidaan kuvata tietoa, joka saattaa puuttua ¶ Kukin
Option
-tyyppinen arvo on olio, joka joko sisältää yhden tietoalkion (Some
) tai on tyhjä (None
); ks. luku 4.3.Option
-luokan käyttö tekee arvojen mahdollisesta puuttumisesta eksplisiittisen osan ohjelmakoodia ja mahdollistaa käännösaikaiset virheilmoitukset sellaisissa tilanteissa, joissa null-viittauksia käyttämällä syntyisi ajonaikaisia virheitä.Option
on yksinkertainen alkiokokoelmatyyppi; ks. luku 8.2. - paikallinen funktio
- local function funktio, joka on määritelty toisen funktion rungossa ja jota voi käyttää vain tuon ulomman funktion sisältä ¶ Ks. esim. luvut 6.4 ja 12.1 ja vrt. paikallinen muuttuja. Ks. myös sulkeuma.
- paikallinen muuttuja
- local variable funktion sisään vain tuon funktion omaa käyttöä varten määritelty muuttuja ¶ Ohjelmoija voi määritellä funktion rungossa paikallisia muuttujia (ks. esim. luvut 1.7 ja 5.5), minkä lisäksi parametrimuuttujia voidaan sanoa paikallisiksi muuttujiksi. Paikalliset muuttujat pidetään tallessa kutsupinon kehyksissä, joten ne ovat olemassa vain väliaikaisesti funktiokutsun aikana; ks. kuitenkin sulkeuma. Ks. myös käyttöalue.
- pakkaus
- package nimetty kokonaisuus, joka sisältää joukon ohjelman osia ¶ Esimerkiksi Scala-ohjelman osat ryhmitellään yhteen tai useampaan pakkaukseen; ks. luku 1.2. Yhdessä IntelliJ-moduulissa voi olla yhteen tai useampaan pakkaukseen kuuluvia osia. Saman pakkauksen jäseninä ei voi olla keskenään samannimisiä luokkia tai yksittäisolioita, mutta eri pakkauksissa voi. Useimpien pakkausten sisältö tulee erikseen ottaa käyttöön ennen kuin sitä voi hyödyntää tuon pakkauksen ulkopuolelta käyttämättä täydellisiä nimiä; ks. luku 1.6. Ks. myös Scala API ja pakkausolio.
- pakkausolio
- package object itsenäinen yksittäisolio, joka kuvaa pakkauksen ja jonka jäsenet muodostavat tuon pakkauksen sisällön ¶ Ks. luku 5.2.
- palauttaa
- return välittää palautusarvo ¶ Palauttaminen päättää funktiokutsun.
- palautusarvo
- return value
arvo, joka välitetään funktiokutsun päättyessä funktion kutsujalle ja josta
tulee funktiokutsulausekkeen arvo ¶ Funktio voi välittää palautusarvollaan esimerkiksi
laskutoimituksen lopputuloksen tai tietoa toiminnon onnistumisesta tai epäonnistumisesta.
Joillakin funktioilla ei ole merkityksellistä palautusarvoa lainkaan; Scala-ohjelmissa
tällaiset funktiot palauttavat
Unit
-arvon merkkinä siitä, ettei merkityksellistä palautusarvoa ole. Scala-funktion palautusarvo on sen lausekkeen arvo, joka funktiokutsun aikana evaluoidaan viimeiseksi (ellei funktion suoritus keskeytynyt ajonaikaiseen virheeseen, jolloin palautusarvoa ei synny). Ks. myösreturn
. - paluuarvo
- return value sama kuin palautusarvo
- paneeli
- panel GUI-komponentti, joka voi sisältää useita muita komponentteja ja jota käytetään muiden komponenttien ryhmittelemiseen ja asemointiin ¶ Ks. luku 12.3.
- parametri
- parameter, argument ohjelman osalle välitettävä tieto; erityisesti: funktiolle välitettävä lisätieto, joka tarkentaa sitä, mitä funktiokutsun tulisi tehdä ¶ Ks. luvut 1.3, 1.6, 1.7 ja 2.1. Funktion vastaanottamien parametrien määrä (nolla tai useampia) kirjataan funktion määrittelyyn. Parametreihin liittyvä termistö vaihtelee eri yhteyksissä. Tällä kurssilla sanomme, että funktiokutsuun kirjataan parametrilausekkeita. Kun funktiokutsu suoritetaan, parametrilausekkeet evaluoidaan ja saadaan parametriarvoja, jotka välitetään funktiokutsua varten luotuun kehykseen, jossa ne tallentuvat parametrimuuttujiin. (Äskeinen pätee tavallisesti, kun evaluointi on tiukkaa, mutta väljässä evaluoinnissa paramerilausekkeiden evaluointia lykätään.) Ks. myös parametriluettelo, tyyppiparametri ja argumentti.
- parametriarvo
- argument arvo, joka saadaan evaluoimalla parametrilauseke ¶ Parametriarvoja välitetään funktiokutsua vastaavaan kehykseen parametrimuuttujiin; ks. luvut 1.3, 1.6 ja 1.7. Myös termiä "argumentti" käytetään samasta asiasta.
- parametrilauseke
- argument lauseke, joka kirjoitetaan funktiokutsulausekkeeseen ja joka evaluoimalla tuotetaan parametriarvo ¶ Ks. luvut 1.3, 1.6, 1.7 ja 7.1. Myös termiä "argumentti" käytetään samasta asiasta.
- parametriluettelo
- parameter list 1) parametrimuuttujia sisältävä luettelo funktion määrittelyssä; 2) parametrilausekkeita sisältävä luettelo funktiokutsulausekkeessa ¶ Parametriluettelot kirjoitetaan Scalassa kaarisulkeisiin. Luetteloja voi olla yksi (ks. luvut 1.6 ja 1.7), nolla (ks. luvut 1.8 ja 2.6), tai useampia (ks. luku 6.1).
- parametrimuuttuja
- parameter (variable)
paikallinen muuttuja, joka on määritelty puumerkissä ¶ Ks. luku 1.7. Parametrimuuttujan
arvoksi tallentuu parametriarvo funktiokutsun alkaessa (ainakin tavallisesti; ks. kuitenkin
by name-parametri). Scalassa parametrimuuttujat ovat aina
val
-muuttujia. (Scala-kielen virallisessa termistössä parametrimuuttujat on itse asiassa erotettu paikallisista muuttujista rinnakkaiseksi käsitteeksi, mutta kurssilla käytämme näitä termejä tässä kuvattuun tapaan.) - pari
- pair monikko, jossa on tasan kaksi jäsentä ¶ Pareja voi käyttää esimerkiksi hakurakenteissa avain–arvo pareina. Eräs toinen yleinen käyttötarkoitus pareille on kahden arvon palauttaminen funktiosta: vaikka (Scala-)funktio voikin palauttaa vain yhden arvon, voi tämä arvo olla esimerkiksi pari. Ks. luku 1.8 ja etenkin luku 8.4.
- perintä
- inheritance sama kuin periytyminen
- periytyminen
- inheritance olio-ohjelmointiin liittyvä tekniikka, jossa suhdetta ylä- ja alakäsitteen välillä kuvataan määrittelemällä luokalle (tai yksittäisoliolle) yliluokka ¶ Ks. luku 7.3. Määritelmästä riippuen piirreluokat mielletään joko periytymiselle rinnakkaiseksi tavaksi kuvata ylä- ja alakäsitesuhteita ohjelmissa tai yhdeksi periytymisen muodoksi.
- perustapaus
- base case rekursiivisen algoritmin tai ohjelman osa, jossa (osa)ongelman ratkaisu selviää ilman rekursiivista kutsua ¶ Ks. luku 12.1.
Pic
- Pic O1Library-kirjastossa kuvien esittämiseen määritelty luokka ¶ Ks. esim. luvut 1.3, 2.3, ja 2.5 sekä luokan dokumentaatio.
- pikseli
- pixel kuvapiste ¶ Tietokoneen näytölle piirtyvä näkymä koostuu pikseleistä. Erivärisiä pikseleitä käyttämällä saadaan näkyviin kuvia ja kirjoitusmerkkejä eri kirjasinlajeilla. Sana on lyhennys englannin sanoista picture element.
- piirre
- trait 1) sama kuin piirreluokka; 2) (kuten yleiskielessä:) ominaisuus, seikka ¶ Sekaannusten välttämiseksi kurssilla käytetään yleensä pidempää sanaa "piirreluokka", kun halutaan viitata nimenomaan piirreluokkiin.
- piirreluokka
- trait
luokka, jolle pätee: 1) siinä voi olla (myös) abstrakteja metodeja ja
muuttujia; 2) se voidaan liittää alakäsitettä
kuvaavaan luokkaan (tai yksittäisolioon); 3) siitä ei voi luoda ilmentymiä
kuin alakäsitteittensä kautta; 4) sillä ei voi olla konstruktoriparametreja ¶
Ks. luvut 7.2 ja 7.3 ja vrt. abstrakti luokka ja yliluokka. Piirreluokat määritellään
Scalassa sanaa
trait
sananclass
sijaan käyttäen. Tämän kurssin materiaalissa piirreluokatkin luetaan eräänlaisiksi luokiksi, toisin kuin englanninkielisessä Scala-kirjallisuudessa, jossa trait ja class ovat usein keskenään rinnakkaiset termit. - pino
- stack 1) eräänlainen LIFO-periaatetta noudattava alkiokokoelma; 2) kutsupino ¶ Pinotyyppisiä alkiokokoelmia on (esim. Scalassa) sekä muuttuvatilaisia että muuttumattomia.
- pinokehys
- stack frame ks. kehys
- pistenotaatio
- dot notation
metodien kutsumiseen käytetty merkintätapa, jolle on ominaista
kutsun vastaanottavan olion ja metodin nimen väliin kirjoitettava pistemerkki ¶
Esim.
olio.metodi(parametri)
. Pistenotaatiota käytetään monissa ohjelmointikielissä, mm. Scalassa. Ks. luvut 2.1 ja 5.2 sekä kurssin tyyliopas. Vrt. operaattorinotaatio. - poikkeus
- exception eräistä ajonaikaisista virheistä käytetty nimitys
- poikkeustenkäsittely
- exception handling
ajonaikaisten virheiden havaitseminen ja niihin reagoiminen ¶
Ks. luku 11.3 sekä
try
,catch
jafinally
. Pos
- Pos O1Library-kirjastossa kaksiulotteisten koordinaattien kuvaamiseen määritelty luokka ¶ Ks. esim. luvut 2.5 ja 3.1 sekä luokan dokumentaatio.
- proseduraalinen ohjelmointi
- procedural programming yleinen ohjelmointiparadigma, jossa ohjelmat rakennetaan kuvaamalla ongelmakenttä aliohjelmina, jotka kutsuvat edelleen toisia aliohjelmia suorittaakseen osatehtäviä ¶ Ks. luku 10.2 ja vrt. olio-ohjelmointi, jossa ongelma jäsennetään olioina ja aliohjelmat (metodit) liitetään niihin. Proseduraalinen ohjelmointi on keskeinen imperatiivisen ohjelmoinnin muoto.
- proseduuri
- procedure 1) vaikutuksellinen funktio; 2) (joskus nimenomaan:) sellainen vaikutuksellinen funktio, joka ei palauta arvoa tai palauttaa vain sisällöttömän yksikkötyyppisen arvon
- pseudokoodi
- pseudocode ihmislukijalle tarkoitettu ainakin jossain määrin ohjelmointikieltä muistuttava tekstimuotoinen kuvaus algoritmista tai ohjelmasta ¶ Ks. esim. luku 2.5. Pseudokoodi on yleensä epätäsmällisempää kuin konkreettinen ohjelmakoodi. Se ei yleisesti ottaen kelpaa tietokoneen käsiteltäväksi. Pseudokoodia käytetään esimerkiksi ohjelmia suunnitellessa ja dokumentoidessa.
- pseudosatunnaisluku
- pseudorandom number sama kuin näennäissatunnaisluku
- puhdas funktio
- pure function funktio, joka on paitsi vaikutukseton myös riippumaton ohjelman tilasta ja palauttaa jokaisella kutsukerralla saman arvon, kunhan parametriarvot ovat samat ¶ Esimerkiksi muuttuvatilaisen olion metodi voi olla vaikutukseton (jos se ei muuta olion tilaa) muttei silti puhdas (jos sen palautusarvo riippuu olion muuttuvasta tilasta). Puhdasta funktiota kutsuva lauseke on referentiltään läpinäkyvä.
- puskuri
- buffer eräänlainen muuttuvatilainen kokoelma, jonka alkiot ovat indeksien mukaisessa järjestyksessä ja joita voi lisätä ja poistaa ¶ Ks. luku 1.5. Vrt. esim. taulukko ja vektori.
- puumerkki
- signature 1) funktion määrittelyn se osa, joka määrittelee, miten funktiota kutsutaan; 2) vastaava määrittely jostakin muusta ohjelman osasta kuin funktiosta ¶ Scala-funktion puumerkin muodostavat sen nimi, parametrimuuttujat tyyppeineen sekä palautusarvon tyyppi (paitsi nimettömien funktioiden tapauksessa, jolloin nimeä ei ole). Funktion runko ei kuulu sen puumerkkiin. Englanninkielisellä sanalla "signature" ei ole vakiintunutta suomennosta, ja puumerkkien lisäksi puhutaan myös "signatuureista", "kutsumuodoista", ym. Muissa ohjelmointikielissä on Scalasta osin poikkeavia määrittelyjä puumerkille, mutta perusajatus on sama. Puumerkin tunteminen riittää funktion kutsumiseen teknisessä mielessä; lisäksi on tietysti syytä tuntea funktion tarkoitus ja semantiikka. Ks. myös kuormittaminen.
- pöytätestaus
- desk checking ohjelman tai algoritmin toimivuuden tarkastaminen manuaalisesti, ohjelmaa ajamatta ¶ Pöytätestaava ihminen voi esimerkiksi lukea ohjelmakoodia näytöltä tai paperilta ja käydä mielessään läpi sen suorituksen vaiheita.
- rajapinta
- interface 1) "julkisivu", jonka kautta tiettyä ohjelman osaa tai muuta palvelua käytetään; 2) (eräissä ohjelmointikielissä:) rajapintaluokka ¶ Scala-kielisen kurssimme kannalta vain 1. merkitys on tärkeä. Esimerkiksi luokalla on rajapinta, johon sisältyvät sen julkiset osat. Rajapinnan tunteminen on välttämätöntä luokan käyttämiseksi, kun taas toteutuksen tunteminen ei ole. Ks. luku 3.2 ja vrt. käyttöliittymä.
- rajapintaluokka
- interface eräs abstrakteja luokkia ja etenkin piirreluokkia muistuttava rakenne ¶ Ei esiinny Scalassa vaan eräissä muissa ohjelmointikielissä, joista tunnetuimpana Javassa. Javan rajapintaluokat eroavat Scalan piirreluokista erityisesti niin, että rajapintaluokassa voi määritellä kyseisen tyyppisille olioille ainoastaan abstrakteja metodeja, kun taas piirreluokilla ei ole tällaista rajoitusta.
- rakentaja
- constructor sama kuin konstruktori
- rakenteellinen rekursio
- structural recursion rekursion muoto, jossa tietorakenteen (kuten luokan) määrittelystä viitataan tuohon määrittelyyn itseensä ¶ Ks. luvut 2.6 ja 12.1. Esimerkiksi henkilöluokan määrittelyyn voidaan kirjata henkilön vanhemmat, jotka myös ovat henkilöitä. Rekursiivisen rakenteen käsittelyyn sopivat usein sellaiset rekursiiviset kutsut, jotka kohdistetaan vähitellen pienenevään osaan olemassa olevasta rakenteesta.
- refaktoroida
- refactor muokata ohjelmaa tai ohjelman osaa muuttamatta sen olemassa olevaa toiminnallisuutta ¶ Ks. esim. luvut 3.1, 7.5 ja 9.1. Refaktoroinnilla pyritään ohjelman laadun parantamiseen, esimerkiksi ohjelman jatkokehityksen helpottamiseen.
- referentin läpinäkyvyys
- referential transparency lausekkeen ominaisuus, jolla tarkoitetaan, että lausekkeen voi yhtä hyvin korvata sen arvolla muuttamatta ohjelman merkitystä ¶ Ei siis ole ohjelman tuottaman tuloksen kannalta merkityksellistä, evaluoidaanko referentiltään läpinäkyvä lauseke kerran, useasti vai ei kertaakaan, kunhan lausekkeen arvo saadaan selville. Referentin läpinäkyvyys edellyttää, että lausekkeessa kutsutaan vain vaikutuksettomia ja muutenkin puhtaita funktioita. Tämä ominaisuus voi tehdä ohjelmista helpommin luettavia, muokattavia ja tehokkaita ja on keskeinen varsinkin funktionaalisessa ohjelmoinnin. Ks. luku 10.2.
- rekursiivinen kutsu
- recursive call funktiokutsu, jossa tietystä funktiosta käsin kutsutaan tuota samaa funktiota ¶ Ks. rekursio ja luku 12.1.
- rekursio
- recursion 1) asian itsensä käyttäminen sen omassa määrittelyssä, kuvauksessa tai toteutuksessa; erityisesti: funktion määritteleminen siten, että se kutsuu itseään; 2) sellaisiin funktioihin perustuva ohjelmien toteutustapa ¶ Rekursiivinen ohjelma palauttaa ratkaistavan ongelman kohti perustapausta ratkaisemalla siitä osan rekursiivisella kutsulla; ks. luku 12.1 ja vrt. iteraatio. Ks. myös rakenteellinen rekursio.
- REPL
- REPL ohjelmointiympäristö, jossa käyttäjän kirjoittamat ohjelmointikieliset käskyt suoritetaan välittömästi niiden kirjoittamisen jälkeen, yksitellen, ja syötettyjen lausekkeiden arvot tulostuvat samoin välittömästi näytölle ¶ REPL on lyhenne ilmaisusta read–eval–print loop. REPLiä käytetään esimerkiksi Scala-ohjelmoinnin yhteydessä runsaasti; ks. luku 1.3. REPListä voidaan puhua myös "tulkkina" tai "interaktiivisena tulkkina", ja Scala-REPL tunnetaan myös nimellä Scala Interpreter.
return
- return
käsky, joka katkaisee funktiokutsun ja palauttaa arvon välittömästi,
kun se suoritetaan ¶ Scalassa
return
-käskyä ei käytetä usein; ks. luku 8.3. Joissakin muissa ohjelmointikielissä vastaavaa käskyä tulee käyttää kaikissa sellaisissa funktioissa, jotka palauttavat arvon. - RGB
- RGB värien esitysmuoto, jossa kukin väri kuvataan punaisen (R), vihreän (G) ja sinisen (B) valon yhdistelmänä ¶ Kukin kolmesta komponentista on luku, joka kertoo, paljonko yhdistelmässä on tuota väriä. Ks. luku 5.4.
- rooli
- role ks. muuttujan rooli
- roska
- garbage tietokoneen muistiin varastoitu tieto, johon sen varastoinut ohjelma ei pääse käsiksi ¶ Roskaa on esimerkiksi olio, johon ei ole yhtään viittausta. Hyvin laaditussa ohjelmassa roskaksi saisi jäädä vain sellaisia tietoja, joita ohjelma ei (enää) tarvitse, jotta varattu muisti voidaan vapauttaa roskankeruulla.
- roskankeruu
- garbage collection toimenpide, jolla roskan viemä muistitila vapautetaan muuhun käyttöön ¶ Roskankeruu voidaan tehdä automaattisesti, ja näin esimerkiksi Java-virtuaalikoneessa tehdäänkin. Tämä osaltaan ehkäisee muistivuotoja.
- runko
- body ks. funktion runko, luokan runko
- rutiini
- (sub)routine aliohjelma; Scalan ja tämän kurssin termistöllä siis funktio
- sanakirja
- map, dictionary sama kuin hakurakenne
- satunnaislukujen siemen
- random seed näennäissatunnaislukuja tuottavalle algoritmille välitetty parametri, joka alustaa algoritmin tilan ¶ Tietty näennäissatunnaisalgoritmi tuottaa samalla siemenellä aina saman satunnaislukujen sarjan. Ks. luku 3.6.
- Scala
- Scala eräs ohjelmointikieli ¶ Scala on suunniteltu kieleksi, jolla voi ohjelmoida usean eri ohjelmointiparadigman puitteissa ja paradigmoja yhdistellen. Kieli painottaa olio-ohjelmointiparadigmaa, johon ohjelmoija voi yhdistää imperatiivista ja funktionaalista ohjelmointia. Näistä viimeksi mainittuun usein kannustetaan Scala-kielen yhteydessä. Scalan valintaa tälle kurssille on selostettu kurssin Usein kysyttyjä kysymyksiä -sivulla. Scala-kielisiä ohjelmia ajetaan usein JVM-virtuaalikoneessa mutta kääntäminen JavaScriptiksi on myös mahdollista.
- Scala API
- Scala API
Scala-ohjelmoinnissa käytetty laaja, yleishyödyllinen sovelluskirjasto ¶ Koko nimeltään
Scala Standard Library API. Jakautuu pakkauksiin, joilla on
scala
-alkuiset nimet. Nämä pakkaukset sisältöineen on kuvattu Scaladoc-dokumentein; ks. luku 3.2. Osa Scala API:sta — pakkaus nimeltä vainscala
— liittyy lähtemättömästi Scala-kieleen; ks. luku 1.6. - Scaladoc
- Scaladoc 1) apuohjelma, jolla voi tuottaa Scala-lähdekoodista ja siihen upotetuista dokumentaatiokommenteista dokumentaatiota; 2) tällä työkalulla tuotettu dokumentaatio ¶ Ks. luvut 3.2 ja 3.5. Scaladoc-dokumenteissa kuvataan eritoten ohjelman osien julkiset rajapinnat. Scala API on kuvattu Scaladoc-dokumentein. Monille muillekin ohjelmointikielille on vastaava työkalu kuten Javadoc (Java) ja Pydoc (Python).
sealed
- sealed sana, jolla Scalassa määritellään suljettu luokka
- semantiikka
- semantiikka
ilmaisujen merkitys ¶ Erotetaan usein syntaksista. Esimerkiksi
Scala-kielen käskyt
x = x + 1
jax += 1
ovat syntaktisesti erilaiset, mutta niillä on sama semantiikka: kasvatetaan muuttujanx
arvoa yhdellä. - siemen
- seed ks. satunnaislukujen siemen
- signatuuri
- signature sama kuin puumerkki
- sijoittaa
- assign
asettaa muuttujalle (uusi) arvo ¶ Esimerkiksi
Scala-kielistä käskyä
muuttujanNimi = 10
sanotaan sijoituskäskyksi. Se sijoittaa (var
-)muuttujan uudeksi arvoksi luvun kymmenen, korvaten muuttujan vanhan arvon. Ks. luku 1.4. - silmukka
- loop
1) ohjelman osa, jonka suorittamista toistetaan useita kertoja; 2) toistokäsky, jolla
tällainen ohjelman osa voidaan määritellä ohjelmakoodiin ¶ Ks. luvut 5.5,
5.6 ja 8.3. Scala-kielessä silmukoita voi määritellä
for
-,do
- jawhile
-käskyillä. Yleisesti ottaen silmukan luomiseen ei välttämättä tarvita nimenomaista toistokäskyä, vaan kielestä riippuen voi olla mahdollista käyttää hyppykäskyä kutengoto
(ks. luku 11.2). Silmukoiden avulla voidaan toteuttaa iteratiivisia algoritmeja. - sisentää
- indent aloittaa tekstirivi reunaa sisemmältä ¶ Johdonmukainen sisentäminen on keskeinen osa hyvää ohjelmointityyliä; ks. luvut 1.7 ja 3.4 ja kurssin tyyliopas.
- sivuvaikutus
- side effect tilaa muuttava toimenpide, vaikutus ohjelman tilaan ¶ Ilmaisua käytetään funktionaalisen ohjelmoinnin yhteydessä, kun vaikutuksellisia funktioita vältetään.
- skooppi
- scope sama kuin käyttöalue
- skripti
- script korkean tason kielellä laadittu ohjelma, jolle pätee yksi tai useampia seuraavista: 1) se on koodiltaan lyhyehkö; 2) sen koodi muodostuu peräkkäisten komentojen sarjasta; 3) se tulkataan eikä käännetä; 4) sen päätehtävä on muodostaa annetun syötteen perusteella jokin tulos; 5) se käsittelee jotakin olemassa olevaa ohjelmaa tai muuta järjestelmää "ulkoapäin"; 6) sitä käytetään manuaalisestikin suoritettavissa olevien työvaiheiden automatisointiin; 7) se on kirjoitettu skriptikielellä ¶ Termillä on useita osin toisiinsa liittyviä merkityksiä, jotka ovat eläneet aikojen saatossa. Se on nykyään niin moniselitteinen, että sen käyttöä kannattaa välttää, ellei yhteydestä tule selväksi, mitä sanalla tarkoitetaan.
- skriptikieli
- scripting language korkean tason ohjelmointikieli, joka sopii skriptien laatimiseen ¶ Esimerkiksi PHP:ta, Pythonia ja Luaa sanotaan melko usein skriptikieliksi. Myös Scalaa voi käyttää skriptikielenä.
Some
- Some
luokka, joka kuvaa sellaisia
Option
-tyyppisiä olioita, jotka sisältävät yhden tietoalkion ¶ Ks. luku 4.3 ja vrt.None
.Some
onOption
in aliluokka; ks. luku 7.3. - sopivimman säilyttäjä
- most-wanted holder muuttuja, jota käytetään pitämään kirjaa sellaisesta arvosta, jonka kohdalla tietty kriteeri parhaiten toteutuu ¶ Yksi muuttujien rooleista. Ks. luvut 4.2 ja 5.5.
- sovellus(ohjelma)
- application (program) tietokoneohjelma, joka on tarkoitettu loppukäyttäjän käytettäväksi ja sopii tiettyyn tarkoitukseen ¶ Ks. luvut 1.1 ja 1.2.
- sovelluskehitin
- integrated development environment ohjelmoijan avuksi laadittu apuohjelma, joka kokoaa yhteen erilaisia ohjelmoijan työkaluja kuten editorin, kääntäjän, virtuaalikoneen tms. ¶ Ks. luvut 1.2 ja 5.4. Esimerkiksi kurssilla käytetty IntelliJ on sovelluskehitin. Nimensä mukaisesti sovelluskehittimen avulla voi laatia uusia ohjelmia, esimerkiksi sovelluksia.
- sovelluskirjasto
- application programming interface kirjasto, jota voi käyttää apuna erilaisten sovellusohjelmien laatimisessa ¶ Monien ohjelmointikielten yhteyteen on määritelty kieleen enemmän tai vähemmän kiinteästi liittyvä sovelluskirjasto, jota voi hyödyntää laajasti erilaisissa kyseisellä ohjelmointikielillä laadituissa ohjelmissa. Scalan tapauksessa tällainen sovelluskirjasto on Scala API.
- spagettikoodi
- spaghetti code huonolaatuinen, sotkuinen ohjelmakoodi, jossa osat riippuvat toisistaan monimutkaisesti ¶ Spagettikoodin toiminnasta on vaivalloista tehdä päätelmiä. Sitä voi olla vaikeaa jatkokehittää, koska muutokset yhdessä ohjelman osassa vaikuttavat moniaalle. Tällainen koodi on erityisen ongelmallista, kun ohjelma on suuri.
- staattinen
- static 1) ohjelmakoodiin kiinteästi liittyvä, ohjelmakoodista sitä ajamatta määrittyvä, ohjelman ajamiseen liittymätön; ei-dynaaminen, muuttumaton, kiinteä; 2) luokkaan itseensä eikä sen ilmentymiin liittyvä ¶ Tietokoneohjelmalla voidaan sanoa olevan kaksi "olomuotoa", staattinen ja dynaaminen; ks. esim. luvut 1.2 ja 2.1. Ohjelman staattisiin piirteisiin ei voi vaikuttaa esimerkiksi ohjelman käyttäjän antama syöte. Ks. myös staattinen tyyppi.
- staattinen tyyppi
- (static) type ohjelmakoodin osan tietotyyppi, joka voidaan määrittää ja tarkastaa staattisesti eli ohjelmaa ajamatta ¶ Staattisesti tyypitetyissä kielissä kuten Scala lausekkeilla ja muuttujilla on staattiset tyypit. Esimerkiksi Scala-muuttujan staattinen tyyppi rajaa sitä, millaisia sijoituksia muuttujaan voi tehdä, ja staattiselta tyypiltään yhteensopimattoman lausekkeen käyttö sijoituksessa tuottaa käännösaikaisen virheilmoituksen. Ks. luvut 7.2 ja 7.3 ja vrt. dynaaminen tyyppi.
- staattisesti tyypitetty
- statically typed
(ohjelmointikielestä:) tyyppijärjestelmältään sellainen, että kullakin
lähdekoodin osalla (eli ohjelman staattisen "olomuodon" osalla, etenkin
lausekkeilla ja muuttujilla) on tietotyyppi, joka voidaan tarkastaa
staattisesti ¶ Scala on (normaalikäytössä) staattisesti tyypitetty: esimerkiksi
muuttujilla ja lausekkeilla on staattiset tietotyypit
(sen lisäksi, että niiden arvoilla on dynaamiset tyypit). Scala on myös
tyyppiturvallinen, ja niinpä yritys sijoittaa vaikkapa
Int
-tyyppiseen muuttujaanString
-tyyppinen arvo tuottaa käännösaikaisen virheilmoituksen. Muita staattisesti tyypitettyjä kieliä ovat esimerkiksi Java, C# ja Haskell. Vrt. dynaamisesti tyypitetty. - stack trace
- stack trace (or traceback) ajonaikaisen virheen kuvaamiseksi muodostettu raportti siitä, mitä kutsuja oli käynnissä virhetilanteen syntyessä ¶ Käytetään debuggauksessa apuna. Ks. luku 4.2.
- sulautettu järjestelmä
- embedded system tietotekninen järjestelmä, jolla on rajattu, suhteellisen suppea-alainen tarkoitus ¶ Esimerkiksi pankkiautomaatit ja monet robotit ovat sulautettuja järjestelmiä, samoin modernit autot. Vrt. yleiskäyttöinen tietokone ja ks. luku 1.1.
- suljettu luokka
- sealed class (or trait)
luokka, jolle ei voi määritellä välittömiä alityyppejä muualla kuin sen
kanssa samassa kooditiedostossa ¶ Scalassa luokka suljetaan sanalla
sealed
. Ks. luvut 7.2 ja 7.3. Vrt.final
. - sulkeuma
- (lexical) closure rakenne, johon sisältyy funktion määrittely sekä pääsy tiettyihin tuota funktiota ympäröivässä kontekstissa määriteltyihin muuttujiin ¶ Ks. luku 6.4.
- suodin
- filter
(kuvankäsittelyssä:) toiminto, joka suorittaa tietyn muunnoksen kuvalle tai kuvan osalle ¶
Esimerkiksi harmaasävysuodin tuottaa annetusta värikuvasta version, jossa kaikki pikselien
värit ovat enemmän tai vähemmän kirkkaita harmaan sävyjä. Sanoilla "suodin" ja "filter" on
tietotekniikassa muitakin merkityksiä; esimerkiksi Scalassa on kokoelmia käsittelevä
korkeamman asteen metodi nimeltä
filter
. - suorittaa
- execute toimia ohjelman määräämällä tavalla; ajaa
- suppea tekoäly
- narrow AI tekoäly, joka toimii kapeaksi rajatulla erikoisalueella ¶ Suppea tekoäly voi olla erikoistunut esimerkiksi kielen kääntämiseen, hakutulosten parantamiseen, auton ajamiseen tai kasvojen tunnistamiseen kuvista. Vastakohta: yleinen tekoäly. Heikko tekoäly tarkoittaa suunnilleen samaa.
- Swing
- Swing eräänlainen graafisten käyttöliittymien ohjelmoimiseen tarkoitettu kirjasto ¶ Swingejä on useita: tämänniminen kirjasto kehitettiin alun perin Java-kielen yhteyteen, mutta myös Scalassa on samanniminen kirjasto (joka rakentuu Java-version varaan). Ks. luku 12.3. Ks. myös O1Library.
- symbolinen konekieli
- assembly (language) ohjelmointikieli, jossa konekielisiä käskyjä suoraan vastaavat käskyt on esitetty symbolisessa muodossa, yleensä tekstinä
- syntaksi
- syntax ohjelmointikielen ilmaisujen muodostamissäännöstö ¶ Syntaksi määrää, mitä ilmaisuja ohjelmointikielessä voi käyttää ja miten niitä voi yhdistellä. Syntaksi erotetaan usein semantiikasta eli siitä, mitä ilmaisut merkitsevät.
- syntaksivirhe
- syntax error virhe, joka johtuu siitä, että lähdekoodi on ohjelmointikielen syntaksin vastainen ¶ Ks. luvut 1.8 ja 3.5. Syntaksivirheet ovat usein käännösaikaisia.
- syntaktinen sokeri
- syntactic sugar
sellainen osa syntaksia, joka ei kasvata ohjelmointikielen ilmaisuvoimaa eikä ole
sikäli välttämätön, vaan jonka tarkoitus on kätevöittää ohjelmakoodin kirjoittamista tai lukemista ¶
Ks. luku 4.1. Esimerkkejä syntaktisesta sokerista Scalassa ovat mm. ilmentymämuuttujien määritteleminen
konstruktoriparametrien yhteyteen (luku 2.4), laskutoimituksia ja sijoituksia yhdistelevät operaattorit
kuten
+=
(luku 4.1), erilaiset funktioliteraalit (luku 6.2) jafor
-silmukat (luvut 5.5 ja 6.3). - syöte
- input ohjelman käsiteltäväksi jostakin lähteestä välitetty tieto ¶ Ks. luvut 2.7 ja 11.3 ja ks. myös input/output. Syötettä on esimerkiksi sovelluksen käyttäjän näppäimistöllään ohjelmalle välittämä tieto. Jotkin ohjelmat vastaanottavat syötettä tiedostoina; ks. esim. luku 5.2. Myös käyttäjän toimista seuraavat käyttöliittymätapahtumat voidaan lukea eräänlaiseksi syötteeksi.
- säiliö
- container muuttuja, jota käytetään kokoelman muokkaamiseen ¶ Yksi muuttujien rooleista. Ks. luku 4.2.
- tapahtuma
- event toiminto tai sattumus, johon ohjelma voi reagoida ¶ Ohjelmia voidaan laatia tapahtumavetoisesti, jolloin havaituista tapahtumista välitetään tieto kyseisenlaisiin tapahtumiin liittyville tapahtumankuuntelijoille. Näin tehdään usein esimerkiksi graafisissa käyttöliittymissä. Ks.myös käyttöliittymätapahtuma.
- tapahtumankuuntelija
- event listener ohjelman osa, esimerkiksi olio, joka on määritelty vastaanottamaan tieto tietynlaisista tapahtumista ¶ Tapahtumankuuntelija yleensä reagoi tapahtumiin suorittamalla tapahtumankäsittelijän. Ks. luvut 3.1 ja 12.3.
- tapahtumankäsittelijä
- event handler ohjelman osa, esimerkiksi funktio, joka määrittelee, mitä tietynlaisen tapahtuman sattuessa tulee kyseisessä ohjelmassa tapahtua ¶ Tapahtumankäsittelijä voi esimerkiksi sisältää sen ohjelmakoodin, joka suoritetaan, kun käyttäjä painaa tiettyä nappulaa ohjelman käyttöliittymässä.Tapahtumankäsittelijä kytketään yleensä tapahtumankuuntelijaan; ks. luvut 3.1 ja 12.3.
- tapausluokka
- case class
Scala-ohjelmaan
case
-sanaa käyttäen määritelty luokka, jolle tulee implisiittisesti määritellyksi eräitä ominaisuuksia ¶ Tapausluokissa ei sinänsä ole mitään sellaista, mitä ei voisi luokalle muutoinkin määritellä, muttacase
-sana on helppo tapa lisätä luokkaan tietyt ominaisuudet. Näihin ominaisuuksiin kuuluvat mm.: 1) tapausluokan ilmentymän voi "purkaa osiinsa" kätevästimatch
-käskyyn kirjatussa tapauksessa (luku 4.4); 2) tapausluokasta voi luoda ilmentymän ilmannew
-sanaa (koska luokalla on automaattisesti kumppaniolio ja silläapply
-tehdasmetodi); 3) tapausluokkientoString
-metodi on muiden olioiden oletusarvoistatoString
-toteutusta havainnollisempi. - taulukko
- array eräänlainen muuttuvatilainen mutta kooltaan muuttumaton kokoelma, jonka alkiot ovat indeksien mukaisessa järjestyksessä ¶ Ks. luku 11.1 ja vrt. esim. vektori ja puskuri. Taulukko on monissa ohjelmointikielissä, mm. Scalassa, eräänlainen "peruskokoelmatyyppi", jonka avulla on toteutettu monia muita kokoelmatyyppejä.
- tavu
- byte kahdeksan bitin muodostama kokonaisuus ¶ Ks. luku 5.4.
- tavukoodi
- bytecode eräistä välikieliksi sopivista kielistä käytetty nimitys ¶ Ks. luku 5.4. Mm. sitä välikieltä, jolle Scala-ohjelmia yleensä käännetään ja jota Java-virtuaalikone suorittaa, sanotaan tavukoodiksi.
- tehdasmetodi
- factory method metodi, jonka ainoa tehtävä on luoda uusi olio ja palauttaa se (tai viittaus siihen) ¶ Ks. luku 5.3.
- tehokkuus
- efficiency ohjelman resurssienkäytön määrää kuvaava suure ¶ Tehokkuudella viitataan erityisesti ohjelman vaatimaan suoritusaikaan ja myös sen vaatimaan muistitilaan. Tehokkuutta käsitellään lähinnä muilla ohjelmointikursseilla; ks. kuitenkin esim. luvut 5.5 ja 12.1.
- tekoäly
- artificial intelligence (AI) 1) (perinteisesti:) mm. tietojenkäsittelytiedettä ja psykologiaa yhdistelevä tutkimusalue, joka pyrkii mallintamaan ihmismieltä ja keinotekoisesti jäljittelemään sitä esimerkiksi tietokoneohjelmissa; 2) (nykyään arkikielessä ja muutenkin:) lähes mikä tahansa sovellus, jonka toiminta luo (nyky)ihmiselle vaikutelman älykkyydestä tai sälyttää koneelle tehtäviä, jotka perinteisesti on hoitanut ihminen ¶ Jälkimmäisessä merkityksessä tekoälykäs ohjelma ei monesti lainkaan pyri ihmismäiseen ajatteluun. Monet nykyään tekoälyksi kutsutut ohjelmat perustuvat koneoppimiseen. Tekoäly jaotellaan monesti suppeaan ja yleiseen tai heikkoon ja vahvaan. Ks. luku 7.1.
- tekstialue
- text area tekstin syöttämisen ja muokkaamisen mahdollistava GUI-komponentti; erityisesti: tällainen komponentti, jossa on useita rivejä ¶ Vrt. tekstikenttä.
- tekstikenttä
- text field tekstin syöttämisen ja muokkaamisen mahdollistava GUI-komponentti; erityisesti: tällainen komponentti, jossa on vain yksi rivi ¶ Vrt. tekstialue.
- tekstikonsoli
- text console
ympäristö, johon ohjelman tuloste ilmestyy näkyviin tekstimuodossa ja josta jotkin
ohjelmat myös lukevat näppäimistösyötettä ¶ Moneen ohjelmointiympäristöön sisältyy
tekstikonsoli; esimerkiksi IntelliJ’ssä on sellainen. Scala-ohjelman
println
-käskyt tyypillisesti tulostavat tekstikonsoliin. Joidenkin ohjelmien käyttöliittymä toimii kokonaan tekstikonsolissa eikä ole graafinen; ks. esim. luku 2.7. Usein sanotaan "tekstikonsolin" sijaan vain "konsoli". - tekstitiedosto
- (plain) text file tiedosto, jonka sisältämä data on tarkoitettu tulkittavaksi (vain) kirjoitusmerkeiksi ¶ Ks. luvut 5.2, 5.4 ja 11.3.
- testaus
- testing ohjelman tutkiminen virheiden ja muiden ongelmien havaitsemiseksi; erityisesti: ohjelman tai sen osien suorittaminen ajonaikaisten ja loogisten virheiden havaitsemiseksi ¶ Yksinkertaisimmillaan ohjelmaa, funktiota tai luokkaa voi testata koekäyttämällä sitä valituilla parametriarvoilla tai syötteillä. Määrätietoisemmassa ohjelmistokehityksessä laaditaan usein ns. yksikkötestejä, joilla ohjelman eri osia voi testata järjestelmällise, toistuvaan ja ainakin osin automatisoituun testaukseen; tähän on olemassa aputyökaluja, joita käsitellään jatkokursseilla.
this
- this (mm. Scalassa:) erityinen parametrimuuttuja, joka on kaikilla metodeilla ilman erillistä määrittelyä ja joka viittaa siihen olioon, jonka metodia on kutsuttu ¶ Ks. luku 2.2.
- tiedon piilottaminen
- information hiding ohjelmien suunnitteluun liittyvä periaate, jonka mukaan rajapinnat tulee erottaa toteutuksista ¶ "Piilottamisella" tarkoitetaan sitä, ettei ohjelman osan (esim. luokan) käyttäjän tarvitse olla riippuvainen kuin siitä rajapinnasta, jonka hän "näkee". Käyttäjä voi "unohtaa" toteutuksen tai olla siitä kokonaan tietämätön. Kun toteutustekniset seikat on piilotettu rajapinnan taakse, niin niitä voi vapaasti muokata ohjelman kehittyessä (esimerkiksi tehokkuuden parantamiseksi): kunhan rajapinta pysyy samana, niin muutoksia ei tarvita muualle ohjelmaan, josta tätä osaa käytetään. Ks. luku 3.2.
- tiedosto
- file tietokoneen varastoima tietoresurssi; erityisesti: kiintolevylle tai muuhun pysyväismuistiin tallennettu tietoresurssi ¶ Ks. myös tekstitiedosto.
- tietokone
- computer laite, joka käsittelee tietoa suorittamalla ohjelmia ¶ Tietotekniset järjestelmät perustuvat tietokoneisiin. Tietokone ei välttämättä ole elektroninen mutta yleensä on.
- tietorakenne
- data structure jollakin tietyllä tavalla jäsennetty kokonaisuus, johon tietokone varastoi tietoa ¶ Sanaa käytetään erityisen usein (ja joskus ainoastaan) kokonaisuuksista, jotka on suunniteltu suurienkin tietomäärien tehokkaaseen käsittelyyn, kuten alkiokokoelmien toteutuksista. Myös tiedostoilla on oma sisäinen tietorakenteensa. Tällä kurssilla käytämme sanaa hyvin laajassa mielessä ja viittaamme sillä suhteellisen yksinkertaisiinkin rakenteisiin: joissakin yhteyksissä sanomme esimerkiksi oliota muuttujineen eräänlaiseksi tietorakenteeksi.
- tietotekninen järjestelmä
- computer system tietokonelaitteiston ja ohjelmien yhdistelmä ¶ Tietoteknisiä järjestelmiä ovat eritoten yleiskäyttöiset tietokonejärjestelmät ja sulautetut järjestelmät.
- tietotyyppi
- data type
määritelmä tietynlaisesta tiedosta ja siitä, mitä tuollaisella tiedolla voi tehdä ¶
Ks. esim. luvut 1.3 ja 2.3. Usein puhutaan "tietotyyppien" sijaan vain "tyypeistä".
Ohjelmointikieliin on yleensä määritelty valmiita tietotyyppejä yleisiin tarpeisiin; esimerkiksi
Scalan tietotyyppi
Int
kuvaa kokonaislukuja ja määrittelee mm. sen, että kokonaislukuja voi laskea yhteen. On myös yleistä, että ohjelmoija voi itse määritellä uusia tietotyyppejä. Ks. myös tyyppiparametri, staattinen tyyppi, dynaaminen tyyppi ja luokka. - tila
- state
tietyllä ajanhetkellä varastoituna olevan tiedon muodostama kokonaisuus ¶ Ohjelmoinnissa "tila"
viittaa eritoten tietokoneen muistiin tallennettuun tietoon, jota ohjelma käsittelee.
Ohjelma-ajolla kokonaisuutena on tila; esimerkiksi sijoitukset
var
-muuttujiin muuttavat tilaa, jolloin ohjelman tila voi vaihdella ajanhetkestä toiseen ohjelman suorittamisen aikana. Funktiot voidaan luokitella vaikutuksellisiin ja vaikutuksettomiin sen perusteella, vaikuttavatko ne ohjelman tilaan. Olio-ohjelmassa olioilla on kullakin oma tila (ks. esim. luku 2.1), ja olio voi olla joko muuttuvatilainen tai tilaltaan muuttumaton; olioiden tilat ovat osa koko ohjelma tilaa; Jotkin ohjelmointiparadigmat eroavat toisistaan ratkaisevasti siinä suhteessa, miten tilaa ja tilanmuutoksia mallinnetaan. - tilapäissäilö
- temporary muuttuja, jota käytetään väliaikaisesti apuna tietyn algoritmin toteutuksessa ¶ Yksi muuttujien rooleista; ks. luku 2.6.
- tiukka
- strict lausekkeet vähintään kerran evaluoiva ¶ Ks. luku 7.1. Tämä adjektiivi kuvaa erästä tapaa, jolla lausekkeita voidaan evaluoida. Tiukasti evaluoitu parametri on parametri, jonka arvon määräävä lauseke evaluoidaan vähintään kerran riippumatta siitä, käytetäänkö tuota arvoa funktion suorituksen aikana todella. Tiukasti evaluoitu kokoelma on kokoelma, jonka kaikki alkiot kerätään talteen muistiin riippumatta siitä, tullaanko jokaista niistä käyttämään. Useimmissa ohjelmointikielissä evaluointi on tiukkaa. Näin on tavallisesti myös Scalassa: parametrit ovat tiukasti evaluoituja by value -parametreja sikäli kun ei toisin määritellä, ja yleisimmät kokoelmat (vektorit, listat, hakurakenteet ym.) ovat tiukkoja. Vastakohta: väljä.
toString
- toString
(Scala-kielessä:) metodi, jonka tehtävänä on palauttaa merkkijonomuotoinen
kuvaus oliosta ¶ Ks. luku 2.5. Jonkinlainen
toString
-metodi on määritelty kaikille Scala-olioille, ja esimerkiksi "oliontulostamiskäsky"println(olio)
tulostaa merkkijonokuvauksen oliosta eli kutsuu oliolletoString
-metodia ja tulostaa sen palauttaman merkkijonon (kutenprintln(olio.toString)
).toString
-metodit ovat avuksi mm. REPLissä ja ohjelmaa debugatessa, ja niiden palauttamia merkkijonoja voi muutenkin käyttää ohjelman toteutuksessa apuna. - toteutus
- implementation 1) tapa, jolla jokin abstraktimpi malli, suunnitelma tai algoritmi käytännössä toimii; 2) se osa jostakin kokonaisuudesta, jonka tunteminen ei ole välttämätöntä tuon kokonaisuuden käyttämiseksi ¶ Sanaa käytetään ohjelmoinnin yhteydessä usealla erillisellä mutta toisiinsa liittyvällä tavalla. Esimerkkejä: 1) ohjelma tai aliohjelma voi olla jonkin yleisemmän algoritmin toteutus; 2) ohjelman osalla kuten luokalla voi olla julkinen rajapinta, joka määrää, miten tuota osaa käytetään, sekä piilotettu toteutus, joka määrää, miten tietokone osaa käytettäessä toimii; 3) funktiolla on puumerkki, joka kuvaa sen käyttötapaa, ja runko, joka toimii funktion toteutuksena ja jota funktion kutsujan ei tarvitse tuntea. Tällä yleisellä sanalla on tietenkin myös muita merkityksiä, jotka sopivat ohjelmointiinkin (esim. "suunnitella ohjelma ja sitten toteuttaa suunnitelma").
- totuusarvo
- truth value
arvo, joka kertoo jonkin väittämän paikkansapitävyydestä; erityisesti: arvo, joka kertoo, onko
väittämä tosi vai epätosi ¶ Ohjelmoinnissa usein käytetään Boolen logiikkaa, jossa väittämät
ovat yksiselitteisesti joko tosia tai epätosia; ks. luku 3.3 ja
Boolean
. try
- try (Scala-kielessä:) poikkeustenkäsittelyssä käytetty varattu sana, jolla aloitetaan lohko, jonka suorittaminen voi epäonnistua ajonaikaisen virheen vuoksi
- tulkki
- interpreter apuohjelma, joka suorittaa annettua ohjelmaa muuntaen sen tarvittaessa konekieleksi ¶ Esimerkiksi Java-virtuaalikoneen keskeinen osa on tavukooditulkki. Ks. luku 5.4 ja vrt. kääntäjä.
- tulostaa
- print (tietokoneesta:) kirjoittaa kirjoitusmerkkejä ¶ Ohjelmoinnin yhteydessä tulostamisella ei useinkaan tarkoiteta tulostimen eli printterin käyttöä. Esimerkiksi tietokoneen näytölle tai tekstitiedostoon voi tulostaa.
- tunnus
- identifier ohjelman osalle annettu nimi ¶ Esimerkiksi muuttujien, funktioiden ja luokkien nimiä sanotaan joskus tunnuksiksi.
- tuoreimman säilyttäjä
- most-recent holder muuttuja, jota käytetään pitämään kirjaa viimeisimmästä arvosta jossakin arvojen sarjassa ¶ Yksi muuttujien rooleista. Tuoreimman säilyttäjässä voidaan esimerkiksi pitää kirjaa viimeisimmästä arvosta, joka on asetettu olion ominaisuudelle (luku 2.6), tai viimeisimmästä kokoelman alkiosta, joka on käyty läpi (luku 5.5).
- tyhje
- whitespace character whitespace-merkki
- tyhjä merkkijono
- empty string
merkkijono, jossa ei ole yhtään merkkiä eli jonka pituus on nolla ¶ Tyhjä merkkijonokin
on kuitenkin olemassa oleva merkkijono (Scalassa
String
-tyyppinen olio) toisin kuinnull
-viittaus. Ks. luvut 1.4 ja 4.1. - tyylikäytäntö
- coding conventions ohjeisto siitä, millaista ohjelmointityyliä suositaan ¶ Tyylikäytännöillä pyritään mm. parantamaan ohjelmien luettavuutta. Eri ohjelmointikielille on yleensä omat tyylikäytäntönsä, ja samallekin kielelle on yleensä useita vaihtoehtoisia; esimerkiksi eri yrityksillä voi olla omat suosituksensa tai -määräyksensä. Ohjelmointi 1:n tyyliopas kuvaa erään tyylikäytännön.
- tyyppi
- type (ohjelmoinnin yhteydessä yleensä:) sama kuin tietotyyppi
- tyyppiannotaatio
- type annotation sama kuin tyyppimäärittely
- tyyppijärjestelmä
- type system säännöstö, joka määrää miten tietotyyppejä käytetään jossakin ohjelmointikielessä ¶ Ks. staattinen ja dynaaminen tyypitys sekä tyyppiturvallisuus.
- tyyppimäärittely
- type annotation lähdekoodiin kirjoitettu merkintä ohjelman osan staattisesta tietotyypistä ¶ Tyyppimäärittelyt voivat selkeyttää ohjelmaa ja välillisesti parantaa ohjelman suoritustehokkuutta; toisaalta tyyppimäärittelyt voivat myös tarpeettomasti hankaloittaa ohjelmoijan työtä. Monissa staattisesti tyypitetyissä ohjelmointikielissä (esim. Java) esimerkiksi muuttujien ja palautusarvojen tyypit on aina kirjoitettava ohjelmakoodiin tyyppimäärittelyin. Dynaamisesti tyypitetyissä kielissä (esim. Python) tyyppimäärittelyjä ei (tavallisesti) kirjoiteta lainkaan. Scalassa tyyppimäärittelyjä on aina luvallista kirjata koodiin eksplisiittisesti, mutta tyyppipäättelyn vuoksi se ei usein ole tarpeen; ks. luku 1.8. Kuitenkin esimerkiksi tyhjää alkiokokoelmaa luodessa (luku 1.5), funktion parametrimuuttujia määritellessä sekä kuormitettujen ja rekursiivisten funktioiden yhteydessä tyyppimäärittelyjen käyttö voi Scalassakin olla välttämätöntä. Tapauksesta riippuen tyyppimäärittelyjen vapaaehtoinen kirjaaminen Scala-koodiin auttaa kääntäjää tuottamaan selkeämpiä virheilmoituksia tai parantaa koodin luettavuutta. Monissa yhteyksissä on hyvä ajatus merkitä tyypit ainakin Scala-luokkien julkisille jäsenille.
- tyyppiparametri
- type parameter eräiden luokkien ja metodien vaatima lisämääre, jolla täsmennetään, millaisesta tietotyypistä on kyse ¶ Esimerkiksi Scala-ohjelmassa monia alkiokokoelmia luodessa on välitettävä tyyppiparametri, joka kertoo kokoelman alkioiden staattisen tietotyypin; ks. esim. luvut 1.5, 4.3 ja 7.4. Scalassa tyyppiparametrit ovat muiden tyyppitietojen tapaan usein pääteltävissä automaattisesti.
- tyyppipäättely
- type inference automaattinen lausekkeiden ja muuttujien tietotyyppien määrittäminen staattisesti ¶ Esimerkiksi Scala-kieleen tyyppipäättely liittyy kiinteästi. Ks. luku 1.8. Aihetta sivutaan myös mm. luvuissa 3.5 ja 7.2.
- tyyppiturvallisuus
- type safety ohjelmointikieltä kuvaileva ominaisuus, joka kertoo siitä, kuinka voimakkaasti kieli valvoo tietotyyppeihin liittyvien rajoitusten noudattamista ¶ Ks. luku 1.8. Tyyppiturvallisessa kielessä tietyntyyppisellä arvolla ei voi tehdä kuin sellaisia asioita, joita arvon tietotyyppi nimenomaisesti sallii. Scala on huomattavan tyyppiturvallinen kieli, ja Scala-työkalut varoittavat ns. tyyppivirheistä yleensä käännösaikaisilla virheilmoituksilla. Ks. myös staattinen tyypitys.
- tyyppiyhteensopiva
- conformant, type compatible
(tietotyypeistä:) yhteensopiva siten, että yhden tyyppisiä arvoja voi käyttää
toisentyyppisten arvojen paikalla ¶ Esimerkki: Jos Scala-ohjelman
Opiskelija
-luokka onIhminen
-luokan aliluokka, niin sen määrittelemäOpiskelija
-tyyppi on tyyppiyhteensopivaIhminen
-tyypin kanssa jaIhminen
-tyyppiseen muuttujaan on laillista sijoittaa viittaus mihin tahansaOpiskelija
-luokan ilmentymään. Kaikki Scala-tyypit ovat tyyppiyhteensopiviaAny
-tyypin kanssa. Ks. myös Liskovin periaate. - täsmäkieli
- domain-specific language ohjelmointikieli, joka ei ole yleiskäyttöinen vaan sopii käytettäväksi nimenomaisen aihealueen yhteydessä ¶ Ks. luku 11.2.
- täydellinen nimi
- fully qualified name
ohjelman osan koko nimi, joka sisältää myös pakkauksen nimen ¶ Esimerkiksi
Scalassa
Int
-tietotyypin täydellinen nimi onscala.Int
ja funktionsqrt
täydellinen nimi onscala.math.sqrt
. - Unicode
- Unicode eräs merkistöstandardi ¶ Ks. luvut 5.4 ja 5.6. Unicode-standardi määrittelee tavan, jolla kutakin laajaan merkistöön kuuluvaa merkkiä vastaa yksiselitteisesti tietty luku. Sitä käytetään mm. Scalassa ja laajasti muutenkin.
Unit
- Unit
1) yksikkötyypin nimi mm. Scalassa; 2) yksikkötyypin ainoaa
arvoa merkitsevä Scala-kielinen literaali ¶ Ks. luvut 1.6 ja 4.3.
Unit
-arvoa käytetään mm. merkkinä siitä, ettei funktiolla ole merkityksellistä palautusarvoa. ScalanUnit
-literaali kirjoitetaan tyhjinä kaarisulkeina:()
. - vahva tekoäly
- strong AI tekoäly, joka käsittelee ja yhdistelee laajoja kokonaisuuksia eikä ole sidottu tiettyyn sovellusalueeseen kuten heikko tekoäly ¶ Tarkoittaa melkein samaa kuin yleinen tekoäly, minkä lisäksi vahvaan tekoälyyn saatetaan liittää jonkinasteinen ihmismäinen tietoisuus ja ehkä tunteitakin. Vahva tekoäly on satumaisen kunnianhimoinen tavoite; kuitenkin ne nykyään olemassa olevat käytännön sovellutukset, joita tekoälyksi kutsutaan, edustavat heikkoa tekoälyä.
- vaikutuksellinen funktio
- effectful function funktio, joka kutsuttaessa muuttaa ohjelman tilaa ainakin joissakin tapauksissa ¶ Ks. luvut 1.6, 1.7 ja 10.2, ja vrt. vaikutukseton funktio. Luemme vaikutuksellisiksi esimerkiksi sellaiset funktiot, jotka muuttavat puskurin sisältöä, jonkin olion ilmentymämuuttujan arvoa tai tulostavat merkkejä tietokoneen ruudulle. Toisaalta esimerkiksi pelkkää lausekkeiden evaluoimista, ajan kulumista laskentaan, tai kutsupinon käyttöä ei tavallisesti lueta vaikutukseksi. Yleisemmin sanoen vaikutuksellisiksi luetaan sellaiset funktiot, joiden suorittaminen on ohjelman oikean toiminnan kannalta merkityksellistä, vaikka palautusarvo jo tiedettäisiinkin (luku 10.2). Vaikutukselliset funktiot voivat olla hyödyllisiä, vaikka eivät palauttaisikaan merkityksellistä arvoa; toisaalta ne eivät ole referentiltään läpinäkyviä. Vaikutuksellisia funktioita sanotaan myös "sivuvaikutuksellisiksi".
- vaikutukseton funktio
- effect-free function funktio, joka ei kutsuttaessa koskaan vaikuta ohjelman tilaan ¶ Ks. luvut 1.6, 1.7 ja 10.2 ja vrt. vaikutuksellinen funktio. Tällaisia funktioita sanotaan myös "sivuvaikutuksettomiksi". Vaikutuksettomia funktioita kutsutaan niiden palautusarvon määrittämiseksi. Ne muistuttavat koulumatematiikasta tuttuja funktioita. Osa vaikutuksettomista funktioista on puhtaita. Ks. myös referentin läpinäkyvyys.
- vakio
- constant
muuttuja, jonka arvo on tiedossa jo ennen ohjelma-ajoa ja joka edustaa ohjelmassa
pysyvästi tätä arvoa ¶ Ks. luku 2.6 ja kurssin tyyliopas.
Vakiot ovat aina myös kiintoarvoja. Scalassa ne ovat käytännössä aina
val
-muuttujia. val
-muuttuja- val(ue variable)
(Scala-kielessä:) muuttuja, jonka arvoa ei voi vaihtaa toiseksi ¶ Ks. luku 1.4 ja
vrt.
var
-muuttuja.val
-muuttujat määritellään yleensäval
-sanaa käyttäen, mutta myös eräät erikoismuuttujat kuten parametrimuuttujat jafor
-silmukassa käytetyt tuoreimman säilyttäjät ovat Scalassaval
-muuttujia. Kaikkival
-muuttujat eivät ole vakioita, mutta vakiot ovat kyllä yksival
-muuttujien käyttötarkoitus. var
-muuttuja- var(iable)
(Scala-kielessä:) muuttuja, joka määritellään
var
-sanalla ja jonka arvon voi vaihtaa sijoittamalla vanhan arvon tilalle uuden ¶ Ks. luku 1.4 ja vrt.val
-muuttuja. - varattu sana
- reserved word
ohjelmointikieleen kuuluva sana, jolla on kielessä erityismerkitys tai jota ei muusta syystä
voi käyttää tunnuksena ¶ Scala-kielessä on noin 50 varattua sanaa, joista esimerkkejä
ovat
val
,def
,import
,true
,this
,object
,class
,new
,private
,if
,match
,case
jafor
; koko luettelo löytyy Scala-koosteemme lopusta. Perustietotyyppien nimet kutenInt
jaString
eivät varsinaisesti ole varattuja sanoja, mutta niitäkin on sekaannusten välttämiseksi parempi olla käyttämättä tunnuksina. - varoitus
- warning ohjelmointityökalun antama ilmoitus, joka kertoo epäillystä ongelmasta ohjelmassa muttei kuitenkaan välttämättä virheestä ¶ Ks. luku 3.5.
- vektori
- vector eräänlainen muuttumaton kokoelma, jonka alkiot ovat indeksien mukaisessa järjestyksessä ¶ Ks. luku 4.2. Vrt. esim. taulukko ja puskuri.
- vertailuoperaattori
- relational (or comparison) operator
operaattori, jolla voidaan verrata kahta arvoa ja muodostaa vertailun tulosta kuvaava
totuusarvo ¶ Esimerkiksi vertailuoperaattorilla
<
voidaan muodostaa lauseke10 < 100
, jonka arvo ontrue
. Ks. luku 3.3 ja ks. myös logiikkaoperaattori. - viesti
- message olion komentamiseen käytetty käsky, olion metodin kutsu ¶ Olio-ohjelmointi perustuu ajatukseen, että olioille voi lähettää niiden vastuualueeseen liittyviä viestejä, joihin ne reagoivat; oliot voivat myös lähettää vastaavia viestejä toisilleen reagoidessaan vastaanottamiinsa viesteihin. Ks. luku 2.1.
View
- View
O1Library-kirjaston tarjoama luokka graafisten käyttöliittymien
kuvaamiseen ¶
View
-olio tarjoaa näkymän johonkin aihealueen mallina toimivaan olioon. Sille voi määritellä tapahtumankäsittelijöitä. Ks. luvut 2.7, 3.1 ja 3.6 sekä luokan dokumentaatio; Scalaa kootusti -sivulla on myös esimerkki. - viittaus
- reference arvo, joka ilmaisee, mistä tietokoneen muistissa jokin tieto löytyy ¶ Ks. esim. luvut 1.5, 2.3 ja 5.4. Scala-ohjelmissa viittaukset osoittavat muistiin tallennettuihin olioihin.
- virhe
- error, defect 1) ohjelmointikielen sääntöjen vastainen tai muuten ohjelmoijan tarkoituksesta poikkeava piirre ohjelmassa, bugi; 2) sama kuin ajonaikainen virhe ¶ Virheitä voidaan luokitella esimerkiksi käännösaikaisiin, ajonaikaisiin ja loogisiin. Joissain teknisissä yhteyksissä sanalla "virhe" tarkoitetaan vain ajonaikaisia virheitä.
- virta
- stream
(Scalassa:) laiskalistaa erittäin paljon muistuttava kokoelma, jota käytetiin kielen
vanhemmissa versioissa ¶ Scalan versiosta 2.13 alkaen
Stream
-luokan on korvannutLazyList
. Vanhaa nimeä käytetään edelleen monissa lähteissä. Sanalla "virta" on tietojenkäsittelyssä myös useita muita enemmän tai vähemmän samansuuntaisia merkityksiä. - virtuaalikone
- virtual machine virtuaalinen tietokone; tietokoneen kaltaisesti toimiva ohjelma, jonka avulla voidaan ajaa (tietynlaisia) toisia ohjelmia ¶ Ks. luvut 5.4 ja 11.2. Virtuaalikone osaa vastaanottaa tietyn kielisiä ohjelmia; voidaan sanoa, että sen vastaanottama kieli on virtuaalikoneen simuloiman tietokoneen konekieltä. Virtuaalikone sisältää tulkin (tai on tulkki, näkökulmasta riippuen), jonka avulla se muuntaa annetun ohjelman todelliseksi konekieleksi.
- virtuaalinen
- virtual keinotekoinen, matkittu, simuloitu, todellista muistuttava tai jokin näiden yhdistelmä; ikään kuin — vaikkei varsinaisesti tai virallisesti — tietynlainen ¶ Ks. myös virtuaalikone.
- välikieli
- intermediate language kieli, jolle lähdekoodia käännetään mutta joka ei ole konekieltä; erityisesti: virtuaalikoneen "konekielenä" toimiva kieli ¶ Ks. luku 5.4.
- välitön aliluokka
- immediate subclass, direct subclass suoraan toiselta perivä luokka; luokkahierarkiassa heti yhtä alemmassa "polvessa" oleva aliluokka ¶ Vrt. välillinen aliluokka eli jokin välittömän aliluokan omista aliluokista.
- välitön yliluokka
- immediate superclass, direct superclass suoraan peritty luokka; luokkahierarkiassa yhtä ylemmässä "polvessa" oleva yliluokka ¶ Vrt. välillinen yliluokka eli jokin välittömän yliluokan omista yliluokista.
- väljä
- non-strict lausekkeita valikoivasti evaluoiva ¶ Ks. luku 7.1. Tämä adjektiivi kuvaa erästä tapaa, jolla lausekkeita voidaan evaluoida. Väljästi evaluoitu parametri on parametri, jonka arvon määräävä lauseke evaluoidaan ainoastaan, jos tuota arvoa todella tarvitaan ohjelma-ajon aikana; by name -parametrit voivat olla väljiä. Väljästi evaluoitu kokoelma puolestaan on kokoelma, jonka alkioista ei muodosteta kuin ne, joita käytetään; tällaisia kokoelmia ovat Scalassa esimerkiksi laiskalistat. Vastakohta: tiukka. Ks. myös laiska evaluointi.
while
-silmukka- while loop
silmukka, joka on muodostettu
while
-avainsanaa silmukan alussa käyttäen ja joka toistaa toimenpidettä nolla tai useampia kertoja ¶ Ks. luku 8.3 ja vrt.do
-silmukka. - WETWET
- WETWET DRY-periaatteen rikkominen ¶ Sanoista write everything twice write everything twice.
- whitespace
- whitespace tyhjää vaaka- tai pystytilaa kuvaavat, "näkymättömät" kirjoitusmerkit ¶ Esimerkiksi välilyöntejä ja rivinvaihtomerkkejä sanotaan whitespaceksi. Mm. suomennosta "tyhje" on ehdotettu, mutta vakiintunutta suomenkielistä termiä ei ole.
- yhtenäisen osoituksen periaate
- uniform access principle eräiden ohjelmointikielten syntaksin suunnittelussa käytetty periaate, jonka mukaan tiettyä ohjelman osaa hyödyntävän ohjelmoijan on voitava käyttää yhtä ja samaa merkintätapaa kaikkien tuon osan tarjoamien palveluiden käyttämiseen noiden palvelujen kenties erilaisista toteutustavoista riippumatta ¶ Erityisesti: olion käyttäjän on voitava kutsua parametritonta metodia ja selvittää jäsenmuuttujan arvo keskenään samanlaisella merkinnällä. Ks. luvut 2.6 ja 7.3.
- yksikkötyyppi
- unit type
tietotyyppi, jolla on vain yksi arvo ja jolla ei siksi voi ilmaista informaatiota ¶ Ks.
luku 1.6. Yksikkötyyppisiä arvoja on vain yksi. Mm. Scalassa tämä arvo on nimeltään
Unit
. - yksisuuntainen lippu
- one-way flag muuttuja, jolla on yksi kahdesta arvosta ja jonka arvoa ei vaihdeta, kun se on kerran vaihdettu alkuarvosta toiseksi ¶ Yksi muuttujien rooleista, eräänlainen lippu. Ks. luku 5.6.
- yksittäisolio
- singleton object 1) olio, joka on määritelty ohjelmakoodissa yksittäistapauksena eikä luokan kautta; 2) tällaisen olion määrittely ohjelmakoodissa ¶ Ks. luvut 2.1, 2.2 ja 5.3 ja vrt. ilmentymä. Scalassa yksittäisoliot voivat olla luokan kumppaniolioita tai itsenäisiä.
- yksityinen
- private ulospäin näkymätön; rajapintaan kuulumaton; vain sisäiseen käyttöön tarkoitettu; toteutukseen kuuluva ¶ Ks. luku 3.2 ja vrt. julkinen.
- yleinen tekoäly
- general(-purpose) AI tekoäly, joka käsittelee ja yhdistelee laajoja kokonaisuuksia eikä ole sidottu tiettyyn sovellusalueeseen kuten suppea tekoäly ¶ Vahva tekoäly tarkoittaa melkein samaa. Yleinen tekoäly on satumaisen kunnianhimoinen tavoite; kuitenkin ne nykyään olemassa olevat käytännön sovellutukset, joita tekoälyksi kutsutaan, edustavat suppeaa tekoälyä.
- yleiskäyttöinen tietokone
- general-purpose computer tietokone, jolla ei ole tiettyä sovelluskohdetta vaan joka on suunniteltu käytettäväksi moniin erilaisiin tarkoituksiin ¶ Esimerkiksi tyypilliset pöytätietokoneet ja kannettavat tietokoneet ovat yleiskäyttöisiä. Tällaista tietokonetta voidaan hyödyntää eri tavoin ajamalla siinä erilaisia sovellusohjelmia. Vrt. sulautetut järjestelmät ja ks. luku 1.1.
- ylikuormittaa
- overload sama kuin kuormittaa
- yliluokka
- superclass, base class luokka, jolta toinen luokka perii ominaisuuksia ja joka edustaa aliluokkiensa kuvaamien käsitteiden yläkäsitettä ¶ Yliluokan ominaisuudet periytyvät sen aliluokille; ks. luku 7.3. Luokalla voi olla lukuisia välittömiä aliluokkia mutta (Scalassa) vain yksi välitön yliluokka. Vrt. piirreluokka.
Palaute
Tekijät
Tämän oppimateriaalin kehitystyössä on käytetty apuna tuhansilta opiskelijoilta kerättyä palautetta. Kiitos!
Materiaalin luvut tehtävineen ja viikkokoosteineen on laatinut Juha Sorva.
Liitesivut (sanasto, Scala-kooste, usein kysytyt kysymykset jne.) on kirjoittanut Juha Sorva sikäli kuin sivulla ei ole toisin mainittu.
Tehtävien automaattisen arvioinnin ovat toteuttaneet: (aakkosjärjestyksessä) Riku Autio, Nikolas Drosdek, Joonatan Honkamaa, Jaakko Kantojärvi, Niklas Kröger, Teemu Lehtinen, Strasdosky Otewa, Timi Seppälä, Teemu Sirkiä ja Aleksi Vartiainen.
Lukujen alkuja koristavat kuvat ja muut vastaavat kuvituskuvat on piirtänyt Christina Lassheikki.
Yksityiskohtaiset animaatiot Scala-ohjelmien suorituksen vaiheista suunnittelivat Juha Sorva ja Teemu Sirkiä. Teemu Sirkiä ja Riku Autio toteuttivat ne apunaan Teemun aiemmin rakentamat työkalut Jsvee- ja Kelmu.
Muut diagrammit ja materiaaliin upotetut vuorovaikutteiset esitykset laati Juha Sorva.
O1Library-ohjelmakirjaston ovat kehittäneet Aleksi Lukkarinen ja Juha Sorva. Useat sen keskeisistä osista tukeutuvat Aleksin SMCL-kirjastoon.
Tapa, jolla käytämme O1Libraryn työkaluja (kuten Pic
) yksinkertaiseen graafiseen
ohjelmointiin, on saanut vaikutteita tekijöiden Flatt, Felleisen, Findler ja Krishnamurthi
oppikirjasta How to Design Programs sekä Stephen Blochin oppikirjasta Picturing Programs.
Oppimisalusta A+ luotiin alun perin Aallon LeTech-tutkimusryhmässä pitkälti opiskelijavoimin. Nykyään tätä avoimen lähdekoodin projektia kehittää Tietotekniikan laitoksen opetusteknologiatiimi ja tarjoaa palveluna laitoksen IT-tuki. Pääkehittäjänä on tällä hetkellä Markku Riekkinen, jonka lisäksi A+:aa ovat kehittäneet kymmenet Aallon opiskelijat ja muut.
A+ Courses -lisäosa, joka tukee A+:aa ja O1-kurssia IntelliJ-ohjelmointiympäristössä, on toinen avoin projekti. Sen ovat luoneet Nikolai Denissov, Olli Kiljunen ja Nikolas Drosdek yhteistyössä Juha Sorvan, Otto Seppälän, Arto Hellaksen ja muiden kanssa.
Kurssin tämänhetkinen henkilökunta löytyy luvusta 1.1.
Joidenkin lukujen lopuissa on lukukohtaisia lisäyksiä tähän tekijäluetteloon.