Viitteet lukuun 3:
-
Oheislaitteiden ohjauksen tarve vaihtelee sen mukaan,
kuinka monimutkaisia toimintoja nämä osaavat ja kuinka itsenäisesti
ne pystyvät toimimaan. Monissa kehittyneissä laitteissa on itsessään
oma suoritin, joka ohjaa laitteen toimintaa. Tällainen laite voi esimerkiksi
itsenäisesti siirtää tietoa suoraan keskusmuistiin, kun
tietokoneen oma suoritin on antanut tähän ohjeet.
-
Hiiri on tasaisella pinnalla, yleensä työpöydällä,
helposti liikuteltava pieni laite, jonka alapinnalla on esimerkiksi kumipallo
laitteen liikkeen mittaamista varten. Hiiri on kytketty koneeseen siten,
että kun hiirtä liikutetaan pöydällä, siirtyy
samalla myös koneen kuvaruudulla oleva visuaalinen osoitinmerkki eli
kursori
. Täten hiirtä liikuttamalla voidaan kursori ohjata kuvaruudulla
haluttuun kohtaan ja aktivoida ko. alue (esimerkiksi käynnistää
jokin toiminto) painamalla hiiressä olevaa näppäintä.
-
Levyasemaa käytetään tietojen pysyvään
tallentamiseen. Laitteessa on akselin ympäri pyöriviä tallennuslevyjä,
joilla oleviin tietoihin päästään käsiksi hakuvarren
avulla. Se voidaan ohjata halutun levyllä olevan tallennusuran kohdalle,
josta tietoa halutaan lukea tai johon tietoa halutaan tallentaa. Mikrotietokoneisiin
liitettävistä pienehköistä levyasemista käytetään
nimitystä kovalevy . Samalla periaatteella toimivat myös
levykeasemat
, mutta niissä tallennusvälineenä oleva
levyke ei
ole kiinteä, vaan se voidaan helposti vaihtaa.
-
Kaksijärjestelmä on lukujärjestelmä,
jonka kantalukuna on 2. Normaalisti käytämme laskutoimituksissa
kymmenjärjestelmää. Kaksijärjestelmän lukujen
esittäminen kirjallisessa tekstissä on hankalaa, koska luvut
ovat pitkiä. Esimerkiksi 10-järjestelmän luku 257 on kaksijärjestelmässä
100000001. Tästä syystä esitetään atk-kirjallisuudessa
luvut usein käyttäen oktaali- ja heksadesimaalijärjestelmiä
, joissa kantaluvut ovat 8 ja 16. Ne soveltuvat hyvin tähän tarkoitukseen,
koska edellisessä yksi oktaalinumero vastaa aina kolmea binäärinumeroa,
jälkimmäisessä puolestaan yksi heksadesimaalinumero vastaa
neljää binäärinumeroa. Luku 25710 on oktaalilukuna
esitettynä 401 ja heksadesimaalinumerona 101.
-
Tietokonetta kutsutaan muistiarkkitehtuurinsa mukaan
joko tavukoneeksi tai sanakoneeksi. Erona on se, että edellisessä
pienin osoitettavissa oleva muisti- yksikkö on tavu ja jälkimmäisessä
sana.
-
Pelkkä puhuminen kiloista ei siis riitä, vaan
täytyy määritellä, onko kyseessä kilotavuja vai
kilosanoja. Esimerkiksi 16-bittisessä koneessa 32 Ksanaa vastaa 64
Ktavua muistia, jos tavussa on 8 bittiä. On olemassa myös termi
kilobitti, jota käytetään tietoliikenteessä kuvattaessa
tiedonsiirron nopeutta.
-
Niiden toimintaa on selitetty edellä viitteessä
3.
-
Muistitekniikan kehittymisen myötä jako nopeaan
kalliiseen keskusmuistiin ja hitaampaan halpaan massamuistiin on jossain
määrin hämärtymässä.
-
Kyseessä on täysin kuvitteellinen kone, jolla
ohjelmointi olisi hyvin hankalaa käskykannan suppeuden vuoksi. Käytännössä
suorittimien käskykantaan kuuluu muutamia kymmeniä tai suurissa
koneissa muutamia satoja eri käskyjä. Käsky- kanta on yleensä
jokaisen eri valmistajan suorittimissa erilainen, joten koneet, joissa
on erilainen suoritin, eivät ymmärrä toiselle koneelle laadittua
binääristä ohjelmaa. Jos koneilla on samanlainen suoritin,
ne yleensä ymmärtävät toistensa ohjelmia, vaikka niillä
ei olisikaan samaa valmistajaa.
-
Tietoa tallennetaan koneessa myös varsinaisen suorittimen
sisällä sijaitseviin erityismuistipaikkoihin, joita kutsutaan
nimellä rekisteri tai akku . Ne eroavat tavallisista
muistipaikoista siten, että kone pystyy käsittelemään
niiden sisältöä monipuolisemmin kuin keskusmuistin sanojen
sisältöä. Niihin liittyvät toiminnot ovat yleensä
myös nopeampia kuin muut muistioperaatiot.
-
Näitä asioita on yritetty simuloida ns. tekoälyyn
liittyvässä tutkimuksessa, mutta tulokset ovat olleet toistaiseksi
rajallisia. Tekoälyyn liittyvät tekniikat perustuvat ohjelmointiin,
kuten kaikki tietokoneiden käyttö, mutta ne ovat luonteeltaan
toisenlaisia kuin perinteisessä lausekielisessä ohjelmoinnissa,
jota käsitellään tässä kirjassa. Tekoälyn
eräs tärkeä tutkimusalue on luonnollisen kielen ymmärtäminen.
-
Käytännössä ihmisen ja koneen välinen
kommunikointi ohjelmointikielen välityksellä ei suju useinkaan
noin mutkattomasti: ohjelmat eivät toimi lainkaan tai toimivat väärin.
Tämä asia on hyvin harvoin koneen vika, vaan johtuu siitä,
että ohjelmoija ei osaa esittää ajatuksiaan oikealla tavalla
käyttäessään ohjelmointikieltä. Yhtä usein
syynä vaikeuksiin on se, että ohjelmoijan ajattelema ongelman
ratkaisutapa on virheellinen tai puutteellinen.
-
Kyse ei ole siis kielen laadusta: muodostavatko sen
käskyt mielekkään kokonai- suuden, onko niissä puutteita
tai tarpeetonta päällekkäisyyttä, vaikeita ilmaisuja
tms. Mitä korkeamman tasoinen jokin kieli on, sitä erikoistuneempi
se on. Sen toiminnot on suunniteltu nimenomaisesti jotain erikoissovellusta
varten, esimerkiksi matemaattisten lausekkeiden symbolista käsittelyä
varten. Tämän seurauksena kielellä on usein hankalaa tai
mahdotonta kirjoittaa ohjelmia jotain toisenlaista sovellusta varten.
-
Päinvastainen asia ei päde. Monilla korkean
tason kielillä, mm. Pascalilla, ei ole mahdollista kirjoittaa ohjelmia,
jotka käsittelevät koneenläheisiä asioita, esimerkiksi
laitteiden fyysistä ohjausta.
-
Korkean tason kielellä on kyllä mahdollista
kirjoittaa tietystä koneesta tai ohjelmointijärjestelmästä
riippuvia ohjelmia. Tämä perustuu siihen, että ohjelmissa
käytetään standardikielestä poikkeavia tai siihen lisättyjä
toimintoja, jotka on toteutettu vain tietyssä koneessa olevassa ohjelmointijärjestelmässä.
-
Tämä on osaltaan syynä standardi-Pascalin
rajoittuneisuuteen, mikä aiheuttaa ongelmia monissa käytännön
sovelluksissa.
-
Kääntäminen ei ole ainoa tapa prosessoida
ohjelmaa, mutta Pascal-järjestelmissä se on yleisin. Toinen menetelmä
on ohjelmointikielen tulkitseminen , jossa ohjelman merkitystä
tulkitaan lause lauseelta. Suorittajana on tällöin
ohjelmointikielen
tulkki. Kääntäjät ja tulkit ovat ns. tietokoneen
varusohjelmia , joilla tarkoitetaan koneessa olevia käyttäjälle
välttämättömiä ohjelmia, jotka eivät itsessään
liity mihinkään erityiseen sovellukseen. Yksi olennaisen tärkeä
varusohjelma on koneen käyttöjärjestelmä , joka
huolehtii koneen hallinnasta fyysisellä tasolla ja tarjoaa käyttäjälle
lukuisan joukon valmiita palveluita.
-
Asiaan liittyy myös muita toimintoja. Kääntäjän
tulee mm. varata muistista tilaa ohjelman muuttujille ja tallentaa ohjelman
sisältämät vakiot muistiin (vrt. esimerkkiohjelmaa kohdassa
3.1 ja sen käännösversiota). Kääntäjän
konekieliseksi muuntama ohjelma ei useinkaan sellaisenaan vielä kelpaa
suoritettavaksi, vaan se täytyy ensin ladata keskusmuistiin
ja siihen täytyy yhdistää apuohjelmia oheislaitteiden käsittelyä
ja matemaattisten funktioiden laskemista varten.
-
Tämä pätee edellyttäen, että
kääntäjäohjelma itse on virheetön. Joskus hyvin
harvoin kääntäjä saattaa tuottaa alkuperäisestä
ohjelmasta konekielisen version, joka toimii väärällä
tavalla.
-
Eri järjestelmissä käännösaikaisten
ja ajonaikaisten virheilmoitusten taso vaihtelee huomattavasti. Etenkin
ajonaikaisten virhetilanteiden käsittelyssä on monissa järjestelmissä
puutteita: Pascal-standardi määrittelee jonkin tilanteen virheelliseksi,
mutta järjestelmä ei huomaa sitä, vaan antaa ohjelman suorituksen
jatkua.
-
Valitettavasti loogiset virheet voivat joskus tuottaa
tuloksia, jotka vaikuttavat oikeilta olematta oikeita.