Edsger Wybe Dijkstra

Tietojenkäsittelytieteen historia-seminaari
7.2.2002
Jan-Erik Löflund
Tietojenkäsittelytieteen laitos
Helsingin yliopisto

Johdanto

Edsger Dijkstra on hollantilaissyntyinen tietojenkäsittelytieteilijä, joka on vaikuttanut tietojenkäsittelytieteen alalla jo 1950-luvun alusta lähtien. Hän on saanut paljon aikaan, ja tutkinut tietojenkäsittelyä monipuolisesti. Dijkstran päämääränä tietojenkäsittelyssä on tehdä siitä eleganttia, toimivaa ja yksinkertaista.

1 Nuoruus ja opiskelu Hollannissa

Edsger Wybe Dijkstra syntyi akateemiseen perheeseen Rotterdamissa, Hollannissa vuonna 1930. Hänen isänsä oli kemisti ja äiti taas matemaatikko [Sha 95]. Kahdentoista ikäisenä Dijkstra aloitti Rotterdamin Erasmus-lukion. Tähän aikaan opetus käsitti paljon klassisia, yleissivistäviä aineita. Dijkstra sai mm. paljon opetusta vieraissa kielissä: hän opiskeli kreikkaa, latinaa, ranskaa, saksaa ja englantia. Dijkstra oli lahjakas kielissä, mutta luonnontieteet (matematiikka, fysiikka, kemia ja biologia) olivat kuitenkin aineita, joissa hän menestyi parhaiten. Toinen maailmansota vaikeutti lukio-opintoja, sillä saksalaiset miehittivät Dijkstran kotikaupunkia Rotterdamia, ja ruoan ollessa vähissä Edsger monien lasten tavoin asui erillään vanhemmistaan maaseudulla ruoan vähyyden takia [Sha 95].

Valmistuttuaan ylioppilaaksi sodan jälkeen Dijkstra oli ajatellut oikeustieteen opiskelua, mutta hänen isänsä taivutteli hänet opiskelemaan luonnontieteitä. "Arvosanani matematiikassa, kemiassa ja fysiikassa olivat niin loistavat", Dijkstra on kommentoinut opiskelualan valintaa. Sen sijaan hän meni Leidenin yliopistoon, jossa hänen vielä piti tehdä valinta matematiikan ja fysiikan välillä. Dijkstra valitsi fysiikan, koska ei olisi muuten tullut koskaan oppineeksi sitä. "Matematiikka huolehtisi kyllä itse itsestään", hän kertoo tuolloin ajatelleensa. Opiskellessaan fysiikkaa hän huomasi, kuinka monet ongelmat vaativat paljon laskentaa, joten hän päätti opetella ohjelmoimaan. Valmistuttuaan maisteriksi vuonna 1951 hän lähti Cambridgeen opettelemaan ohjelmointia. Tuohon aikaan Englanti oli Euroopan johtava maa tietojenkäsittelyssä, pitkälti toisen maailmansodan aikana salakirjoitusten murtamiseksi tehdyn työn ansiosta.

EDSAC 1-tietokone Cambridgessa 1950-luvun alussa [WWW2]


Cambridgessa Dijkstra oli mm. Maurice Wilkesin opetuksessa [WWW2]. Dijkstra kertoo tämän kuukauden suuresti muuttaneen hänen uransa kulkua. Hollantiin palattuaan hän jatkoi tohtoriopintojaan ja aloitti osa-aikatyön Amsterdamin matemaattisessa keskuksessa, jossa hän työskenteli yhä enemmän ohjelmoijana ARRA-tietokoneella [Sha95], [WWW2]. Työpaikallaan hän tutustui myös tulevaan vaimoonsa M.C. Debetsiin, joka oli myös ohjelmoija.

ARRA-tietokone Amsterdamissa 1950-luvun alussa [WWW3]

Maisteriksi valmistuttuaan Dijkstra pohti vielä ohjelmoinnin pariin ryhtymistä: olihan fysiikka "tieteiden kuningatar", tietojenkäsittelytiede vielä kehittymätöntä, paljolti pragmaattista laitteiden ehdoilla tapahtuvaa toimintaa. Hänen ohjaajansa Adrian van Wijngaarden antoi neuvon panostaa ohjelmointiin, koska tietokoneet olivat joka tapauksessa tulossa jäädäkseen, ja nythän Dijkstralla olisi mahdollisuus olla tekemässä alasta kurinalaisempaa ja arvostetumpaa, sekä olla mukana muotoilemassa tietojenkäsittelytieteen keskeisimpiä kysymyksiä. Dijkstra ryhtyi tutkimaan matematiikkaa ja tietojenkäsittelytiedettä, ja teki myös väitöskirjan fysiikasta 1956.

Dijkstran jatko-opiskelijakortti vuodelta 1954. Opiskelijalla oli aina oltava kortti mukanaan yliopistolla, ja sen olemassaolo saatettiin tarkistaa pistokokein [WWW1]

Dijkstran 165-sivuinen X8-tietokoneympäristöä käsittelevä tietojenkäsittelytieteen 165-sivuinen väitöskirja valmistui vuonna 1959, nimenä "communicating with automatic computer", ja vuonna 1962 Dijkstrasta tuli professori Eindhovenin tekniseen korkeakouluun [WWW1].

2 Yksinkertaisia ja elegantteja ideoita

1950- ja 1960-luvuilla Dijkstra työskenteli sekä teknillisessä korkeakoulussa että Amsterdamin matemaattisessa keskuksessa tietokoneiden ja niiden käyttöjärjestelmien käytännön kehitystyössä. Tällä ajanjaksolla Dijkstra ryhmineen löysi lukuisia ongelmia ja parannuskohteita laitteistoissa, käyttöjärjestelmissä ja ohjelmissa. Dijkstra keksi näihin ratkaisuja, ja esitteli tuloksensa tieteellisissä lehdissä lyhyinä ja selkeinä artikkeleina. Paitsi ideoiden merkittävyys, myös niiden selkeä, usein arkipäivän ilmiöihin analogioita käyttävä esitystapa on tehnyt näistä löydöistä klassikoita

Kun Dijkstra tutki 1950- ja 1960-luvulla laitteiden, käyttöjärjestelmien ja ohjelmoinnin käytännön toteutusta, niin 1970-luvulta saakka hän on keskittynyt enemmän ohjelmoinnin semantiikkaan ja ohjelmien oikeaksi todistamiseen matemaattista logiikkaa käyttäen.

2.1 Lyhyimmän polun algoritmi, "Dijkstran algoritmi"

Vuonna 1956 Dijkstran oli määrä esitellä ARRA- tietokoneen seuraajaa ARMACia Amsterdamissa. Hän pohti esitystä, jossa joukko kaupunkeja piti tavoittaa rautatielinjoja käyttäen niin, että rautatietä kuljettu matka olisi mahdollisimman lyhyt. Yhtenä aamuna juodessaan kahvia parvekkeella hän keksi ratkaisun.

Kaksi pistettä voidaan yhdistää yhdestä pisteestä toiseen kulkevalla kaarella; kolme pistettä voidaan yhdistää kahdella kaarella. Yleisesti, N pistettä voidaan yhdistää N-1 kaarella. Tällaista kaarien joukkoa voidaan kutsua puuksi. Mahdollisten puiden määrä on N exp(N-2), ja mahdollisten kaarten enimmäismäärä on N*(N-1)/2. Oletetaan, että kaarten pituudet on annettu, ja ne ovat ei-negatiivisia. Tarkoitus on löytää lyhin mahdollinen pisteet yhdistävä puu. Vastaus koostuu kaarten osajoukosta, jossa on N-1 kaarta. Puulle pätee:

1. Se yhdistää kaikki pisteet
2. Siinä on N-1 kaarta
3. Se on syklitön

Mitkä tahansa kaksi ehtoa edellisistä implikoivat toteutuessaan sitä, että myös kolmas ehto on voimassa [Dij 76].

Seuraavassa esitetään Dijkstran havainnollinen ratkaisu teoksesta [Dij76]: värjää satunnaisesti valittu aloituspiste punaiseksi ja muut sinisiksi. Ne kaaret, ja vain ne, jotka yhdistävät sinisen ja punaisen pisteen, ovat "violetteja".

Do number of red points<>N ->
Select the shortest now violet branch;
Colour it and its blue endpoint red
Od.


Kuvassa esitetään Dijkstran algoritmilla saatu lyhin polku, kun lähtöpisteeksi on asetettu R. Polku on R-A-B-C-D-S

Algoritmia on kehittämisestään lähtien käytetty mm. tienrakennukseen, lentoreittien suunnitteluun ja tietoliikenteen reititykseen. Algoritmia voitiin käyttää myös laitteistojen suunnitteluun: ARMAC:in kehittäjät Carol Scholten ja Bram Loopstra olivat suunnittelemassa uutta tietokonetta ja tarvitsivat apua sähkön saamisessa tarvittaviin piireihin käyttäen mahdollisimman vähän kallista kuparilankaa. Dijkstran algoritmia voitiin käyttää kuparilangan käytön minimoimiseen [Sha95].

"Lyhyimmän polun algoritmi oli kätevä, mutta sen julkaisemiselle ei oikein ollut sopivaa lehteä. Julkaisin sen lopulta Numerische Matematik-lehdessä. Artikkelilla ei tietenkään ollut mitään tekemistä numeerisen matematiikan kanssa", toteaa Dijkstra.

2.2 Rinnakkaisuuden hallinta ja semaforit

1960-luvulla Dijkstra oli mukana suunnittelemassa ARMAC:in seuraajia, X1- ja X8- tietokoneita, sekä käyttöjärjestelmiä näihin. X1 ja X8 olivat yksiprosessorisia koneita, jotka pystyivät käsittelemään rinnakkaisia prosesseja. Suunnittelussa oli tärkeää prosessien harmonisen yhteistoiminnan takaaminen; kriittisten resurssit oli jaettava niin, etteivät prosessit häirinneet toisiaan. Tämän lisäksi tuli varmistaa, että prosessit pääsivät etenemään [Dij68a]. Kehitystyössä havaitut kysymykset innoittivat Dijkstran tutkimaan rinnakkaisuudenhallinnan keskeisiä ongelmia ja niiden ratkaisuja. Paitsi rinnakkaisuuden hallinta, X8- koneeseen kehitetyn THE-käyttöjärjestelmän hienouksina olivat mm. muistin segmentointi ja käyttöjärjestelmän kerroksittaisuus.

Vuonna 1961 Dijkstra keksi rautateistä tutulle semaforille sovelluksen tiedon käsittelyssä. Kohtaavilla junilla saattoi olla tietyillä osuuksilla kiskot omiin suuntiinsa, mutta toisilla osuuksilla kisko-osuus jaettiin. Tällöin resurssin (kisko-osuuden) jakaminen toteutettiin semaforien avulla niin, että vain yhteen suuntaan kulkevat junat saattoivat edetä. Semaforilla on kaksi operaatiota P-passeren (wait) ja V-vrijgeben (signal). Halutessaan päästä käyttämään kriittistä resurssia prosessi kutsuu wait-operaatiota ja joko saa resurssin heti käyttöönsä tai odottaa sen vapautumista. Kun prosessi on saanut kriittisen resurssin käyttöönsä, eikä tarvitse sitä enää, se kutsuu signal-operaatiota ja joko vapauttaa resurssin (jos siihen ei ole muita jonottamassa) tai sitten valitsee jonosta uuden prosessin ja siirtää oikeuden resurssin käyttöön. Semaforin käytössä keskeinen ajatus oli myös se, ettei prosessien keskinäisillä nopeuksilla ollut väliä oikeaan lopputulokseen pääsemisessä. Semafori voidaan toteuttaa ohjelmallisesti tai laitteiston avulla. IBM otti 360- sarjan koneessaan idean käyttöön vuonna 1964: prosessorissa oli käsky test and set, jolla voitiin yhden kellojakson aikana tehdä operaatiota, jolloin prosessorin keskeytyksetkään eivät enää voineet katkaista suoritusta kriittisessä kohdassa. Dijkstra esitti ratkaisun mielivaltaisen monen prosessin poissulkemisongelmalle prosessille vuonna 1965. Ratkaisu takasi, että ainoastaan yksi prosessi voi kerrallaan päästä tietylle kriittiselle alueelle. Ratkaisu ei kuitenkaan taannut, että kriittiselle alueelle pääsyä odottanut prosessi lopulta pääsi sinne.

Paitsi eteneminen oikeassa järjestyksessä, myös resurssien saaminen on oikeassa suhteessa on tärkeää. Vuonna 1965 Dijkstra käytti tenttikysymyksenä aterioiva viisikko- ongelmaa, mutta se tuli tunnetuksi nimellä, jonka Dijkstran ystävä ja kollega C.A.R. Hoare antoi sille: aterioivien filosofien ongelma. Viisi filosofia istuu pyöreän pöydän ääressä. Kaikilla on edessään täysi kulho riisiä ja syömäpuikko kummallakin puolellaan. Kunkin filosofin oikea puikko on oikealla istuvan naapurin vasen puikko. Ruokailussa saattaa tapahtua ongelmatilanteita:

1) Filosofi saa yhden puikon, mutta ei kahta: (livelock)
2) Filosofi ei saa yhtään puikkoa: nälkiintyminen: (deadlock)
3) Jotkut filosofit saavat syödä kauemmin kuin toiset (reiluuden puute)

Ongelmasta tuli klassinen rinnakkaisuudenhallinnan kuvaus, jonka havainnollisia ruokailuun liittyviä termejä on käytetty kuvaamaan resurssien jakoa tietojenkäsittelyssä siitä lähtien. Michael Rabin ehdotti pian ongelmaan ratkaisua, joka liittyi toiseen tuohon aikaan nopeasti kehittyvään tutkimusalueeseen, satunnaistamiseen. Vuosia tämän jälkeen Dijkstra huomasi, ettei MIT:n Multics - järjestelmässä oltu huomioitu ongelmaa lainkaan. Dijkstra toteaa: "ei kai heitä voi syyttää siitä, etteivät ole ottaneet huomioon olematonta tietojenkäsittelytieteilijää pienestä hollantilaisesta kaupungista." Myös nukkuva parturi- ongelma ja pankkiirin algoritmi ovat Dijkstran keksimiä [Dij76].

2.3 Ohjelmointikielet ja menetelmät

Dijkstra oli yksi tärkeistä vaikuttajista Algol-kielen suunnittelussa [WWW1]. "Algol tarjoaa monia etuja seuraajiinsa verrattuna", hän toteaa. Mm. Pascal ja C, Ada ja Modula ovat saaneet paljon vaikutteita Algolista, kuten monet muut ohjelmointikielet. Dijkstra on myös mm. kirjoittanut ohjelmointioppaan Algolille [Dij62] ja luonut kuvausvälineitä ohjelmien suunnitteluun [Dij76].

Vuonna 1968 Dijkstra lähetti kuuluisan kirjoituksensa "Go to statements considered harmful" Communications of the ACM-lehteen. Kirjoitus oli toimitukselle lähetetty kirje, joka julkaistiin lehdessä ja vei tilaa puolitoista sivua. Aiheena oli goto - käskyjen aiheuttamat ongelmat ohjelmien ymmärrettävyydessä, varmennettavuudessa ja ylläpidettävyydessä [Dij68b]. Kirjoitus oli havainnollinen ja suoraan ongelman ytimeen iskevä.Kirjoitus onkin syystä saanut klassikon aseman.

Dijkstra on myös kehittänyt vartioitujen käskyjen käsitteen. Vartioidut käskyt ovat muotoa <vahti> -> <lause>, missä vahti on totuusarvoiden ilmaus. Käskyyn liittyvä lause on avoin, jos sen vahtiehto toteutuu. Vahditun toistorakenteen muoto on

DO
<vahti1> -> <lause1>
<vahtin> -> <lausen>
OD

Jokaisella rakenteen evaluointikierroksella valitaan satunnaisesti yksi avoin lause suoritettavaksi. Vahteja evaluoidaan toistuvasti avointen lauseiden selvittämiseksi. Jos yksikään vahti ei ole tosi, poistutaan silmukasta. Vahti mahdollistaa näin lauseiden suorituksen estämisen silloin kun se ei ole suotavaa. Jos on olemassa joukko erilaisia lähtötiloja ja joukko lauseita, jotka toteuttavat erilaisista lauseista halutun lopputilan, voidaan tämä toteuttaa vahtien avulla [Dij76].

Ohjelmistojen kokojen ja monimutkaisuuden kasvaessa 1960-luvulla niiden hallittavuus ja ylläpidettävyys heikentyivät jatkuvasti. Ohjelmien toimivuutta oli yhä vaikeampaa todentaa testaamalla, ja alettiin puhua ohjelmistokriisistä. Dijkstra kehitti predikaattitransformaattoreiden käsitteen helpottamaan ohjelmien oikeaksi todistamista. Predikaattitransformaattoreita käyttäen voidaan määritellä ohjelmointikielen semantiikka niin, että kieli suoraan tukee ohjelmien systemaattista kehittämistä, kun lähtökohtana on niiden formaalinen spesifikaatio. Predikaattilaskentaa käyttäen Dijkstra on johtanut työkaluja, joiden avulla formaaleista todistuksista saadaan Dijkstramaiseen tapaan lyhyitä ja selkeitä [Dij88]. Dijkstran mukaan ohjelma on rakenne, joka muuttaa tila-avaruuden tiloja toisiksi. Totuusarvoiset rakenteet ovat predikaatteja, ja funktiot, jotka kuvaavat predikaatteja, ovat predikaattitransformaattoreja. Systeemiä voidaan kuvata symbolilla S ja lopputilaa symbolilla R. Ehto, joka kuvaa ne lähtötilat, joiden aktivointi varmasti johtaa lopputilaan, on heikoin esiehto, jota kuvataan wp(S,R). Mahdollisia lopputiloja R on usein paljon, joten on käytännöllistä määritellä, miten jotain tiettyä lopputilaa vastaava heikoin esiehto määritellään. Mekanismille S sääntö, joka saa syötteenä predikaatin R (lopputilan) ja palauttaa predikaatin wp(S,R), on predikaattitransformaattori. Dijkstra tiivistää predikaattitransformaattoreiden merkityksen niin, että kun tarkastellaan mekanismia S, itse asiassa tarkastellaan sen predikaattitransformaattoreita [Dij 76].

3 Dijkstra ja tiedeyhteisö

Paitsi merkittäviin yksittäisiin löytöihin, Dijkstran merkitys tietojenkäsittelytieteessä perustuu hänen jatkuvaan laajaan ja monipuoliseen tuotantoonsa ja osallistumiseen alan keskusteluun. Hän on mm. kirjoittanut yhdeksän kirjaa, osallistunut kahdentoista kirjan kirjoittamiseen sekä julkaissut 40 artikkelia tieteellisissä lehdissä. Tämä on vain pieni osa hänen tuotantoaan. Dijkstran kirjoitukset tunnetaan yleisesti nimellä "EWD", ja niitä on yli tuhat [Dij76], [WWW1].

Dijkstran tapa ajatella on kunnioittanut tiettyjä perusarvoja koko hänen uransa ajan. Dijkstraa voidaan pitää perfektionistina ja tietojenkäsittelytieteen "renessanssinerona". Lahjakkuus, yleissivistys, kielitaito ja monipuolinen matematiikan, fysiikan ja tietojenkäsittelytieteen hallinta ovat antaneet pohjan työlle, ja auttaneet ideoiden esilletuomista niin Euroopassa, Yhdysvalloissa kuin muuallakin. Lisäksi hän tuli mukaan vaiheessa, jossa ala oli vielä nykyistä paremmin yhden henkilön hallittavissa. Tästä seurasi laaja perehtyneisyys alan eri kysymyksiin: prosessorit, ohjelmointikielet, rinnakkaisuus, ohjelmien semantiikka ja ohjelmistojen ylläpidettävyys.

Dijkstran mielestä tietojenkäsittelytieteessä tulee keskittyä perusasioihin. Ohjelmointi tulisi ymmärtää sovelletun matematiikan haarana, ja oppilaat pitää kaukana tietokoneista niin kauan kuin mahdollista. "Altistuminen Basicille pilaa lähes ohjelmoijan kuin ohjelmoijan" ja "tietojenkäsittelytiede ei tutki enempää tietokoneita kuin tähtitiede teleskooppeja" ovat Dijkstran ajatuksia tietojenkäsittelyn opiskelusta. Ensiarvoisen tärkeää on, että tutkittavat ongelmat ovat merkityksellisiä, ne todistetaan huolella ja ratkaisut pidetään selkeinä. Tarvittaessa ratkaisut voidaan esittää hyvinkin selkeästi (Vrt. Goto statements-kirjoitus). Dijkstra tunnetaan liitutaulun ja huumorin käyttäjänä, joka ei periaatteilleen uskollisena innostu teknisistä apuvälineistä luennoidessaankaan. Hän on mm. todennut, että kuvat ovat heikkoja mieliä varten. Dijkstran käsialan perusteella on tehty jopa oma fonttimerkistö.

Dijkstra on myös aina pitänyt tärkeänä sitä, että tieteentekijä yrittää parastaan ja tutkii niin vaikeita asioita kuin vain pystyy, koska tämä kehittää ajattelukykyä. Lisäksi tutkittavien asioiden tulee olla merkityksekkäitä. Hänen mielestään on myös tärkeää, ettei tutkita sellaisia asioita, joita joku muukin jo tutkii ja myös pystyy siihen, koska tällaisesta tutkimuksesta ei ole niin paljon hyötyä.

Dijkstra pitämässä luentoa Teksasissa vuonna 1994 [WWW1]

Dijkstra on tunnettu innokkaana, oman arvonsa tuntevana keskustelijana ja yhteydenpitäjänä kollegoihin. Tämän verbaalisesti taitavan esiintyjän ja sanankäyttäjän tyyli voi olla usein aika kärkevääkin. Hän ei voi sietää kehnoa työtä sen enempää muilta kuin itseltäänkään. Seuraavassa on muutamia hänen tunnettuja kommenttejaan: [Dij82], [WWW1]

"Opiskelijan tulisi panostaa yleissivistykseen ja opetella mieluummin oikea vieras kieli kuin uusi ohjelmointikieli- se kehittää ajattelua"

"Ohjelmointi on vaikeinta sovellettua matematiikkaa"

"Miksi ohjelmistokehitys on kallista? Siksi, koska sitä tehdään halvalla työvoimalla"

"Cobolin opetus tärvelee mielen ja tulisi kriminalisoida"

"Monet ovat tehneet itsensä riippuvaiseksi IBM:stä ja myyneet sielunsa paholaiselle"

Dijkstran työ ideat ovat tehneet hänestä tunnetun tietojenkäsittelytieteilijän - ja suorapuheinen ja humoristinen tyyli sekä yhdysvaltalaisen tietojenkäsittelyn kritisointi vielä tunnetumman ja joskus kiistanalaisenkin. Erityisesti Dijkstra näkee tietojenkäsittelyn ongelmiksi kaupallisuuden, eleganssin puutteen, realismin puutteen ja epämatemaattisuuden. Huonon ohjelmoinnin syynä on Dijkstran mukaan usein syynä se, että se on taloudellisesti kannattavaa tekijöilleen - tai sitten ohjelmoijat yksinkertaisesti haluavat vapauden tehdä epäjohdonmukaista, sotkuista työtä, koska se on heidän mielestään luovaa. Dijkstra on verrannut tällaisia "luovia" ohjelmoijia vankeihin, jotka ovat kiintyneet kahleisiinsa. Jotkut kollegat ovat joskus ihmetelleet, ovatko Dijkstran tutkimat ongelmat aina tarkoituksenmukaisia. Dijkstra taas on sitä mieltä, että samaa voidaan kysyä monista muista. Hän on myös todennut olevansa johdonmukainen - välillä pelottavan sellainen. Tämä johdonmukaisuus on antanut voimia ja uskoa tehdä työtä tärkeäksi kokemansa asian puolesta, olivatpa syyt elegantin formalismin syrjinnälle sitten taloudellisia tai ideologisia.

4 Työ elegantin ohjelmoinnin puolesta jatkuu

Vuonna 1972 Dijkstra sai ansioistaan ACM:n myöntämän Turingin palkinnon, jota voidaan pitää tietojenkäsittelytieteen Nobelina. Vuodesta 1973 lähtien hän toimi myös Burroughs-yhtiön palveluksessa. Vuonna 1976 julkaistiin hänen kirjansa "A Discipline of Programming", joka on ohjelmoinnin klassikkoteoksia. Vuonna 1984 hän siirtyi Yhdysvaltoihin Teksasin yliopistoon , jossa hän on tutkinut ja opettanut paitsi tietojenkäsittelytiedettä, myös matematiikkaa. Yhdysvalloissa asuessaankin hän on aktiivisesti vaikuttanut kotimaassaan Hollannissa ja julkaissut äidinkielellään.
Dijkstra ja hänen vaimonsa vuonna 1998 [WWW1]

1980-luvulta lähtien Dijkstran tutkimustyö on keskittynyt tietojenkäsittelytieteen formalismiin. Hän on kehittänyt kattavaa teoriaa ohjelmoinnin ja todistusten samastamisesta matemaattista logiikkaa käyttäen. Tässä olennaisessa osassa ovat mm. aikaisemmin mainitut predikaattitransformaattorit. Dijkstran tärkeitä aiheeseen liittyviä teoksia ovat 1988 julkaistut Formal Development of Programs and Proofs sekä A Method of Programming. Toki Dijkstran mielenkiinto kohdistuu myös samoihin asioihin kuin uransa alkuvaiheessa. Vuonna 1999 Dijkstrasta tuli pitkän työrupeaman jälkeen emeritusprofessori, ja häntä kunnioitettiin Texasin yliopistossa kaksipäiväisellä juhlasymposiumilla [WWW1]. Hän on saanut monia tunnustuksia ansioistaan, mm. ACM Fellow ja Hollannin viime vuosituhannen tärkein tietojenkäsittelijä. Dijkstra vaikuttaa matemaattisten tieteiden alalla edelleen, kuten myös hänen poikansa Rutger, joka on matemaatikko, mutta työskentelee tietojenkäsittelyalalla.

Lopuksi

Dijkstra kuuluu tietojenkäsittelytieteen suurimpiin vaikuttajiin. Hänen tuotantonsa on poikkeuksellisen innovatiivinen, laaja ja monipuolinen. Dijkstran työ on suuresti vaikuttanut ohjelmointikielten ja käyttöjärjestelmien rakenteeseen, kuvaamiseen ja toteuttamiseen. Käyttämällään selkeällä ja matemaattista logiikkaa soveltavalla esitystavallaan Dijkstra on myös vaikuttanut tietojenkäsittelytieteen metodologiaan.

Lähteet

[Dij62] Dijkstra, Edsger. A Primer of Algol 60 Programming. Academic Press, 1962.

[Dij65] Dijkstra, Edsger. Solution of a Problem in Concurrent Programming Control. Communication of the ACM 8,9 (1965,569)

[Dij68a] Dijkstra, Edsger. The structure of THE operating system. Communications of the ACM 11(5) 1968.

[Dij68b] Dijkstra, Edsger. Goto statements considered harmful. Communications of the ACM 11(3) 1968.

[Dij76] Dijkstra, Edsger. A Discipline of programming. Prentice Hall, 1976.

[Dij82] Dijkstra, Edsger. Selected Writings on Computing. A Personal Perspective. Springer, 1982.

[Dij88] Dijkstra, Edsger W. - Feijen, W.H.J. A Method of Programming. Addison Wesley 1988

[Sha95] Shasha, Dennis - Lazere, Cathy. Out of Their Minds. The Lives and Discoveries of 15 Great Computer Scientists. Copernicus, 1995.

[WWW1] In Pursuit of Simplicity. A Symposium Honoring Professor Edsger Wybe Dijkstra. University of Texas 2000. http://www.cs.utexas.edu/users/EWD/symposiumProgram.pdf

[WWW2] University of Cambridge. EDSAC 1 and after - a compilation of personal reminiscences. http://www.cl.cam.ac.uk/UoCCL/misc/EDSAC99/reminiscences/

[WWW3] CWI. Centrum voor Wiskunde en Informatica. http://www.cwi.nl/cwi/about/history.html

[WWW4] ACM Turing Awards. http://www.acm.org/awards/turing_citations/dijkstra.html