Laskenta

Tietokoneellinen laskeminen on sitä, että jokin laskemislaite alkaa alkuarvot saatuaan suorittamaan jonkin säännön mukaista laskentaa. Yksinkertaisimmillaan tämä tarkoittaa soluautomaattia, joista tunnetuin lienee Conwayn ”The Game of Life”, jossa muuten tyhjällä, äärettömällä ruudukolla on muutama musta täytetty ruutu, jotka muutaman säännön mukaan alkavat synnyttää uusia rakenteita. Soluautomaatit voivat olla muunkin muotoisia, lähtötilanteen koostuessa usein yksivärisistä kuvioista tai yhtenäisen tekstuurin omaavista alueista (Durham, 1985).

Sitä millainen kuvio tietyn ajan kuluttua muodostuu, voi osassa tapauksia esittää yksinkertaisella algoritmillä, mutta joidenkin soluautomaattien vaiheita ei voi osoittaa algoritmillisesti, vaan ainoa keino on käydä simulaatio läpi vaihe vaiheelta (Durham, 1985). Turingin kone on myös sellainen yksinkertainen funktio, jonka yksittäiseen vaiheen tilaa ei voi minkään oikokeinon avulla selvittää, vaan on pakko kulkea koko prosessin läpi. Käytännössä tämä tarkoittaa, että jokaiselle ongelmalle on oltava oma Turing koneensa. Soluautomaatissa universaaliksi tietokoneeksi kutsutaan systeemiä, joka voi laskea mitä tahansa mitä Turingin kone voi laskea (LifeWiki, 2009).

Monipuolisemmiksi laskemislaitteiksi voidaan nähdä ohjelmointikielet, joilla voi luoda äärettömältä tuntuvan määrän erilaisia algoritmejä, tietorakenteita (integer, boolean, char, tree, array, avl-puu) ja niitä ohjaavia ohjelmia. Ne tarjoavat kontrollirakenteet, jotka määrittelevät mitä tehdä mitä ohjelman halutaan tekevän, milloin ja missä tilanteissa (Soulie, 2009). Ne mahdollistavat myös heurestiset algoritmit eli käytännöt, joilla tehdään kompromissi laadun ja nopeuden välillä. Laskentaan liittyvät myös likimääräismenetelmät ja satunnaisalgoritmit.

Kommunikointi

Tiedonsiirto on monesti lähtökohtaisesti alttiina tiedon siirrossa tapahtuville virheille, sillä tiedon koostuessa biteistä, joita ei varsinaisesti ole olemassa kuin suurinpiirtein jotain ääriasentoa vastaavina voltteina, valokimppuina tai asentoina, ei voida kaikissa tilanteissa taata, että tieto siirtyy virheettömästi. Tästäkin huolimatta ja erilaisten virheenkorjausmekanismien ansiosta, tietoa kuitenkin siirtynee enimmäkseen oikeisiin paikkoihin ja oikeanlaisena. Kaikkia virheentunnistus- ja virheenkorjausmetodeita rajoittaa kuitenkin se seikka, että mikään niistä ei voi toimia edes teoriassa, jos virheellisten bittien määrä on niin suuri, ettei niiden oikeellisuutta voi laskennallisesti päätellä muiden bittien arvoista (Humphrys).

Digitaalista tietoa paikasta toiseen lähetettäessä, voidaan tuo tieto salata erilaisin algoritmein, jos tavoitteena on, että kukaan tiedonsiirtoa salakuunteleva ei voisi tuota sanomaa sellaisenaan lukea. Suurikokoisten sanomien, jotka voivat koostua mistä tahansa digitaalisesti esitettävästä tiedosta, kokoa voidaan pienentää esipakkaamalla ja täten saada se kulkemaan kapeakapasiteettisen kanavan kautta nopeammin. Jos kyse on audiosta tai kuvasta voidaan pakkaamisessa käyttää tietoa hävittäviä algoritmejä, mahdollisesti kuitenkaan mitään sellaista oleellista kadottamatta, jonka ihminen voisi havata.

Tiedon kulkiessa internetissä OSI-malliin pohjautuvien TCP/IP-pinojen kautta, tarkoitetaan sillä sitä, että tiedon matkan edetessä tiedon välittäjinä toimivat laitteet ja ohjelmat tarkasteltavat tiedon monista ”kääreistä” vain sitä osaa, mikä kulloinkin on oleellista. Tieto voidaan ”vangita” jollekin fyysiselle laitteelle, kuten DVD-levylle tai USB-muistitikulle, joilla kullakin on oma tapansa järjestää bitit sisäänsä.

Koordinointi

Monen tiedollisen tarpeen tyydyttämiseksi on ihmisen tukeuduttava joko toisten ihmisten apuun tai hyödynnettävä tietokoneiden kyvykkyyttä voidakseen viedä päättelyketjunsa haluamaansa tilaan. Ensin mainittu tapaus tavataan mallintaa toimintaketjuna, jossa toteuttaja välittää asiakkaalle tätä tyydyttävän tilan, mitä kuvataan neljälle aikasegmentillä: pyyntö, lupaus, välitys ja hyväksyntä (Denning, 2007).

Tietokoneiden kesken tapahtuvassa kommunikaatiossa tapahtumia (transaktiota) kutsutaan serialisoitaviksi, jos usea pyyntöjen toteuttaja vastaa tiettyyn pyyntöön täsmälleen samalla tavalla, riippumatta siitä tulivatko useat pyynnöt sarjamuotoisesti vai yhtäaikaisesti [1]. Tämä on koordinoitavuuden kulmakiviä; jotta ihminen voisi toimia tietojärjestelmiä hyödyntävän toiminnan koordinaattorina, tietojärjestelmän täytyy toimia ennustettavasti; ihminen- ja tietokone-entiteeteistä koostuva elin pyrkii yhteistoimin samaan päämäärään (Ubiquity, 2004). Algoritmien tasolta lähtien voidaan ajatella matemaattisten funktioiden olevan funktiokoneita, jotka yhteentoimiessaan muodostavat funktiokoneiden verkon, joista muodostuu symbioottinen koneista ja ihmisistä koostuva kommuuni (Denning P. J., 2006).

Ihminen käyttää tietokonetta jonkinlaisen käyttöliittymän kautta, antaa sille syötteitä ja saa siitä myös tietoa ulos. Ihminen—tietokone -kytköksen toiminta on hidasta verrattuna tietokoneiden väliseen kommunikointiin, jonka on välttämätöntä olla sillä tapaa synkronissa, etteivät samanaikaiset transaktiot pääse sekoittamaan toistensa toimintaa yhteiskäyttöisiä resursseja käsiteltäessä. Tämä pätee erityisesti hajautettuihin järjestelmiin, joissa eri tiedonsiirtokanavilla voi olla erilaisia tietovirtojen siirtonopeuksia. Huonosti suunnitellussa järjestelmissä voidaan ajautua nälkiintymistilanteisiin, joissa jokin transaktio ei koskaan saa vuoroaan, tai lukkiutumisiin, joissa kaikki prosessit odottavat ikuisesti, että jotain tiettyä tapahtuisi.

Automatisointi

Puhuttaessa automatisoinnista liittyen ihmiselle tyypillisiin tietojenkäsittelyn tehtäviin, viitataan sekä tietojärjestelmien hyödyntämiseen ihmisälyn täydentäjänä, että myös tietokoneiden omaan automatisoituun oppimiseen, sekä lisäksi ihmisen päätöksenteon mallintamiseen. Koneoppimisesta hyvänä esimerkkinä on Darpan projekti, jossa pyrkimyksenä on luoda autonomisesti toimiva, aiemmista tulkinnoistaan oppiva videokamera, joka havainnoi, tunnistaa, käsitteellistää, tekee itsenäisiä päätöksiä ja ratkaisee ongelmatilanteita (Drummond, 2010). Jos se osaisi lisäksi osaisi myös ilmaista oppimaansa, se lähestyisi Turingin testin edustamaan määritelmää: ”toimii kuin ihminen”.

Mallinnattessa ihmisen toimintaa, näkee traditionaalinen prosedulaarinen tehtäväanalyysi tehtävät sarjana erillisiä toimintoja (Maddrell, 2008), joiden vaiheilla ihminen joutuu tekemään erilaisia mentaalisia operaatioita ja päätöksiä. Osa näistä päätöksistä ja tehtävien suorittamisen aikana tehtävistä havainnoista voivat olla kognitiivisesti toisia kuormittavimpia. Kognitiivisilla simulaatioilla voidaan havainnollistaa ja analysoida vaikkapa sitä, missä kohdin ihminen saattaisi tehdä virheitä. Muun muassa todellisuutta täydentävien välineiden ja asiantuntijajärjestelmien (esim. Exsys [2], joka emuloi ihmisasiantuntijoiden tapoja ratkoa ongelmia) vapauttaessa käyttäjänsä miettimisaikaa muuanne, tullaan oppivien koneiden tehtäväksi jättämään enenevässä määrin rutiininomaisia toimintoja kuten sanomalehtien luokiteltujen mainoksien sijoittelupaikkojen miettiminen (Sebastiani, 2002).

Koneen lähestyessä ihmistä, voitaisiin ajatella myös ihmisen vielä joskus lähestyvän konetta, mikä tosin vaatisi sen, että tietoisuus pitäisi pelkistää elektroniseksi koneeksi ja ladata se datana tietokoneelle, mutta sitten sitä voisikin sekä itse, että muut editoida (Koch, 2008).

Muistaminen

Yksittäisen tietokoneen tapauksessa datan virta kautta fyysisten komponenttien hierarkian voi parhaiten ymmärtää sarjana tapahtumia, jotka viedään läpi prosessorin käsitellessä dataelementtejä, jotka sijaitsevat kussakin tallennustyypissä (Cohen E., 1988) kuten levyasemat, keskusmuisti, prosessorin välimuisti, jne. Toiminnan nopeutta tehostetaan lukuisilla erilaisilla välimuisteilla, jotka mahdollisesti pienestä muistikapasiteetistaan huolimatta voivat nopeuttaa tiedon hakua merkittävästi. Välimuisti toimii sitä tehokkaammin, mitä onnistuneemmin muistikontrolleri on hakenut siihen jo ennalta (viittauksen paikallisuus) sellaista dataa, jota tarvitaan vasta hetken kuluttua (Citizendium, 2010).

Tiedon löydettävyyden kannalta on olennaista, että on luotu jotkin noudettavat säännöt, joiden perusteella tieto on löydettävissä. Eräs tälläinen sääntö on digitaalisessa verkkoympäristössä käytettävä DOI-nimeämissysteemi (Internation DOI Foundation, 2010), jolla voidaan pysyvästi yksilöidä lähes kaikki internetistä löytyvä sisältö. Pysyvä ja muuttumaton verkon osoitejärjestelmä on olennaista koko internetin olemassaolon kannalta. Yksittäisen tietokoneen kannalta on tärkeää, että prosessori on tietokoneen käynnissäoloajan tietoinen, mihin muistialueelle tallennuslaitteelta luettu tieto viedään, mutta tietoa itseään ei tarvitse viedä prosessorin läpi, vaan jos mahdollista se viedään DMA:ta hyödyntäen suoraan muistiin (Gillard, 1997).

Tietyntyyppisessä muistissa olevaa tietoa voidaan hakea sille annetun viitteen nimellä (esim. tiedostot ja verkkosivut) tai sitä voidaan hakea jonkinlaisen näytteen perusteella, jolloin haettava kohde sisältää tuon näytteen. Tietoa voi myös etsiä määrittelemällä rajauksia halutun tiedon koostumukselle (esim. tietokannoista tai verkon hakukoneista) tai hakemalla sitä jonkin algoritmin avulla.


Citizendium. (2010). Locality of reference . Retrieved 3 26, 2010, from http://en.citizendium.org/wiki/Locality_of_reference
Cohen E., K. G. (1988). Storage hierarchies. Retrieved 3 26, 2010, from IBM Systems Journal: http://www.cs.cmu.edu/~sm79/w3/archives/papers/schlosser/cohen.pdf
Denning, P. J. (2007, 8 12). Coordination Principles. Retrieved 3 26, 2010, from Great Principles of Computing: Peter J. Denning, with Craig Martell
Denning, P. J. (2006). Interactive Computation. Retrieved 3 26, 2010, from Springer Link: http://www.springerlink.com.libproxy.helsinki.fi/content/q576573u17723442/?p=fa161061f53b4aad84e9352ba2d5406b&pi=5
Drummond, K. (2010, 3 17). Darpa Wants Self-Guiding, Storytelling Cameras. Retrieved 3 26, 2010, from Wired - Danger room: http://www.wired.com/dangerroom/2010/03/darpa-wants-self-guiding-storytelling-cameras/
Durham, T. (1985, 1 17). Explorations in the Cellular Microworld. Retrieved 3 26, 2010, from Stephen Wolfram: http://www.stephenwolfram.com/interviews/85-computing/
Gillard, P. (1997). Direct memory access. Retrieved 3 26, 2010, from http://www.cs.mun.ca/~paul/cs3725/material/web/notes/node26.html
Humphrys, M. (n.d.). Error detection and correction . Retrieved 3 26, 2010, from http://www.computing.dcu.ie/~humphrys/Notes/Networks/data.error.html
Hutter, M. (n.d.). Algorithmic Information Theory. Retrieved 3 26, 2010, from http://www.hutter1.net/ait.htm
Internation DOI Foundation. (2010). Welcome to the DOI® System . Retrieved 3 26, 2010, from http://www.doi.org/
Koch, C. &. (2008, 6). Can Machines Be Conscious? Retrieved 3 26, 2010, from IEEE Spectrum: http://spectrum.ieee.org/biomedical/imaging/can-machines-be-conscious
LifeWiki. (2009, 6 16). Universal computer. Retrieved 3 26, 2010, from http://conwaylife.com/wiki/index.php?title=Universal_computer
Maddrell, J. (2008, 10 15). Cognitive Task Analysis. Retrieved 3 26, 2010, from Designed to Inspire: http://designedtoinspire.com/drupal/node/625
Sebastiani, F. (2002, 3). Machine Learning in Automated Text Categorization. Retrieved 3 26, 2010, from ACM Computing Surveys (CSUR): http://portal.acm.org.libproxy.helsinki.fi/citation.cfm?id=505283&coll=Portal&dl=ACM&CFID=83604392&CFTOKEN=51332750&ret=1#Fulltext
Soulie, J. (2009, 9 29). Control Structures. Retrieved 3 27, 2010, from cplusplus.com: http://www.cplusplus.com/doc/tutorial/control/
Ubiquity. (2004, 2 4). The Great Principles of Computing. Retrieved 3 26, 2010, from Ubiquity: http://www.acm.org/ubiquity/interviews/v4i48_denning.html