Edsger Dijkstra

**Edsger Wybe Dijkstra** (Rotterdam, Herbehereak, 1930eko maiatzaren 11 &ndash; Nuenen, Herbehereak, 2002ko abuztuaren 6a) informatikari holandarra izan zen. 

Dijkstrak zuzenbidea ikasi zuen, eta etorkizunean egun batean Nazio Batuetan Herbehereak ordezkatzeko ilusioa zuen. Hala ere, 1948an eskolan graduatu ondoren, gurasoek hala eskatuta, matematika eta fisika ikasi zituen, eta gero fisika teorikoa Leidengo Unibertsitatean.

1950eko hamarkadako lehen urteetan, konputagailu elektronikoak berrikuntza ziren. Dijkstrak bere ibilbidearekin topo egin zuen kasualitatez, eta, bere gainbegiralearen bidez,  irakasleak Adriaan van Wijngaarden, Amsterdamgo Zentro Matematikoko Konputazio Departamentuko zuzendaria, ezagutu zuen. Hark lan bat eskaini zion Dijkstrari, eta Herbehereetako lehen "programatzaile" bihurtu zen ofizialki.

Denbora batez, Dijkstrak fisikarekin lotuta jarraitu zuen, eta Leidenen lan egin zuen, astean hiru egunez. Konputazioarekin zuen harremana handitu ahala, ordea, gaiarekin zuen interesa aldatzen hasi zen. Berak gogoratu zuenez:

Maria (Ria) C. Debets-ekin ezkondu zenean 1957an, ezkontzeko paperak betetzerakoan eskatu zioten bere lanbidea zein zen esateko. Adierazi zuen programatzailea zela, baina funtzionariarentzat onartezina zen hori, Herbehereetan lanbide hori ezezaguna baitzen.
 
1959an, Amsterdamgo Unibertsitatean doktoratu zen, "Komunikatzea konputagailu automatiko batekin" izenburuko tesi batekin. Herbehereetan garatutako lehen konputagailu komertzialerako (Electrologica X1) diseinatutako mihiztadura-lengoaia deskribatzen du. Van Wijngaarden irakaslea izan zen tesi-zuzendaria.

### Mathematisch Centrum, Amsterdam 
[ezkerrera|thumb|[Dijkstraren algoritmo|Dijkstraren algoritmoa]]
1952tik 1962ra, Dijkstrak Amsterdameko Mathematisch Centrum-en  lan egin zuen, ordenagailu bat eraikitzeko kontratatuta zeuden Bram Jan Loopstra eta Carel S. Scholten ikertzaileekin lan egin zuen. Haien arteko Interakzio-modua diziplinatua izan zen: lehenik hardwarearen eta softwarearen arteko interfazeari buruz erabakiko zuten, programazio-eskuliburu bat idatziz. Eta gero, hardware-diseinatzaileek kontratu horretan jarritakoarekin arabera eraiki beharko lukete, eta Dijkstrak, programatzaileak, artean ez zegoen makinarako softwarea idatziko luke. Esperientzia horretatik funtsezko bi ikasgai atera zituen: dokumentazio argi batek duen garrantzia batetik, eta bestetik, programazioko erroreen arazketa astuna neurri handi batean hasierako diseinu arduratsuaren bidez saihestu daitekeela.
Dijkstrak ibilbiderik laburrenaren problema enuntziatu eta konpondu zuen 1956an ARMAC ordenagailuaren inaugurazio ofizialeko  baterako. Artean konputazio automatikoari buruzko aldizkaririk ez zegoenez, ez zuen emaitza 1959ra arte argitaratu.

Matematika-zentroan, Dijkstrak eta  lankideak ALGOL 60 programazio-hizkuntzarako lehen konpiladorea garatu zuten 1960ko abuztuan, inongo beste konpiladore bat beste talde batek ekoitzi baino urtebete lehenago. ALGOL 60 lengoaia programazio egituratua garatzeko funtsezko aurrerapena ekartzeagatik izan zen ezaguna.

### Eindhoven Teknologia Unibertsitatea 
[thumb|[Eindhoven, Herbehereetako hegoaldean, non **Dijkstra** matematika irakasle izan zen 1962tik 1984ra.|ezkerrera]]
1962an, Dijkstra Eindhovenera joan zen bizitzera, eta, geroago, Nuenenera, Herbehereetako hegoaldera. Han, irakasle bihurtu zen Eindhoveneko Teknologia Unibertsitateko Matematika Sailean. Unibertsitateak ez zuen informatikako sail independenterik, eta matematika saileko giroa ez zitzaion bereziki gustatzen. Problemak konpontzen lagun zezakeen informatikari talde bat eraikitzen saiatu zen Dijkstra. Hori ezohiko ikerketa-eredua izan zen Matematika Departamentuan. 1960eko amaieran THE sistema eragilea eraiki zuen (unibertsitateak orduan Technische Hogeschool Eindhoven izenez ezaguna), eta sistema horrek eragina izan du ondorengo sistema eragileen diseinuan, softwarean oinarritutako memoria birtuala erabiliz.

### Burroughs Corporation 
Burroughs Corporation-era mugitu zen Dijkstra ikertzaile gisa 1973ko abuztuan. Enpresa hori ezaguna zen garai hartan, hardware-arkitektura berritzaile batean oinarritutako ordenagailuak ekoitzi zituelako. EUrtean zehar enpresaren ikerketa-zentro batzuk bisitatzea zen enpresarekin zuen eginbeharra, eta horretaz gain bere ikerketa egin zuen Burroughs-eko ikerketa-zentro txikienean, hau da, Djistrak berak Nuenen herrian zuen etxeko bigarren solairuko estudioan. Hain zuzen, Dijkstra izan zen Burroughs-eko ikertzaile bakarra, eta etxetik lan egin zuen, noizbehinka Estatu Batuetako sukurtsaletara bidaiatuz. Ondorioz, astean egun bakar batez murriztu zuen unibertsitateko eginbeharra. Egun horretan, asteartean, laster ezagutu zuten 'Tuesday Afternoon Club' izeneko eguna (*Astearte arratsaldeko txokoa*). Mintegi horretan, artikulu zientifikoak eztabaidatzen zituen lagunekin, eta alderdi guztiak aztertzen zituzten: notazioa, antolaketa, aurkezpena, hizkuntza, edukia, etab. 1984an Texasko Unibertsitatera (Austin, AEB) bizitzera joan eta gutxira, Tuesday Afternoon Club taldearen 'adar' berri bat sortu zen Austinen, Texasen.

Burroughseko urteak emankorrenak izan ziren bere ikerketa-artikuluen produkzioan. Ia 500 dokumentu idatzi zituen EWD seriean (beherago deskribatuak), gehienak txosten teknikoak, barne-dokumentazioa talde hautatu baten barruan.

### Texasko Unibertsitatea Austinen 
thumb|Texasko Unibertsitatea, Austinen, bertan Dijkstrak Konputazio Zientzietako katedra hartu zuen 1984tik 1999ra.
Dijkstrak Schlumberger-en Mendeurreneko Katedra onartu zuen Texasko Unibertsitateko Informatika Sailean, Austinen, 1984an.

### Azken urteak 
1999ko azaroan erretiroa hartu zuen arte Austinen lan egin zuen Dijkstrak. Informatika Sailak sinposio bat antolatu zuen, 2000ko maiatzean, Dijkstraren 70. urtebetetzea zela eta, ikerlariak informatikari egin zizkion funtsezko ekarpenak ospatzeko. 40 baino gehiago izan ziren egindako ekarpen horiek.

Dijkstra eta haren emaztea Austinetik itzuli ziren jatorrizko etxera, Nuenen herrian (Herbehereak). Han jakin zuen gaixorik zuela eta hilabete batzuk besterik ez zitzaizkiola geratzen. Austinen, Texasen, erretiroa hartu nahi zuela esan zuen, baina Herbeheretan hil ahal izateko izan zen. Dijkstra 2002ko abuztuaren 6an hil zen, minbiziaren aurkako borroka luze baten ondoren. Berak eta emazteak Maria (Ria) Debetsek hiru seme-alaba izan zituzten: Marcus, Femke, eta Rutger M. Dijkstra informatikaria.

## Ekarpenak 
[thumb|**Dijkstraren** hainbat kontzeptu azaltzen dira liburu honetan. ([Udako Euskal Unibertsitatea|UEU, 2016)]]
Dijkstra-k programen eratorpen formala izeneko metodoa planteatu zuen 1975ean, hau ere Hoare-ren kalkulutik eratorritakoa. Metodo horren arabera, programaren helburua espezifikazio jakin bat betetzea da eta horretara zuzendu behar da diseinua. Espezifikazioaren ondoko baldintzak, batetik, lortu nahi den emaitza nolakoa den adieraziko digu eta aurreko baldintzak, bestetik, datuek bete behar dituzten murriztapenak finkatuko ditu. Programazioa hala planteatuz gero ondoko baldintza bihurtzen da diseinuaren gidari, baina, hori bai, diseinuak eskatzen dituen gutxienezko betebeharrak aurreko baldintzak biltzen dituela aurreikusiz. Funtsezko ideia eta formalismoa Dijkstra-k azaldu bazuen ere, Gries izan zen espezifikaziotik abiatuta programak eratortzeko metodoa gehixeago landu eta ezagutzera eman zuena.

Hauek dira Dijkstraren ekarpen informatiko batzuk: Ibilbide motzenaren problemaren konponbidea (Dijkstraren algoritmoa bezala ere ezagututakoa), *alderantzizko notazio poloniarra* eta erlazionatutako *shunting yard algoritmoa*, *THE multiprogramazio-sistema, bankariaren algoritmoa*, eta prozesadoreak eta programak koordinatzeko asmatutako semaforoa. Dijkstrari zor zaion beste kontzeptu bat auto-oreka da, informatika banatuaren arloan, sistemaren fidagarritasuna ziurtatzeko bide alternatibo bat da. Dijsktraren algoritmoa gehienbat bide motzenean erabilia da, (Open Shortest Path First enrutazio gidaren arabera). Gainera, bere *The Humble Programmer* izeneko liburuan ateratako *Software-ren krisia* espresioa berari dagokio. Espresio hau askotan erabili izan zen OTAN-eko 1968-ko bileran. Turing saria irabazi zuen 1972-an.
thumb|Programen Egiaztapena eta Eratorpena  (UEU, 1993)
Programazioko *GOTO*-ri buruz zuen iritziarengatik ezaguna zen, 1968 urtean *Go to Statement Considered Harmful* artikuluan atera zena. Dijkstra ALGOL-ren zale ezaguna izan zen, eta lengoaia horretarako lehen konpiladorea garatu zuen taldean egon zen. Urte berean, estruktura hierarkikoa zuen lehenengo sistema operatzailea sortu zuen. THE (*Technische Hogeschool, Eindhoven*) izena jarri zitzaion, eta helburu didaktikoetarako erabili zen.
1970tik aurrera, Dijkstraren interes nagusia baieztapen formala izan zen, eta hainbat inbestigazio egin zituen horren inguruan. Dijkstraren azken lanetako askok argudio matematikoak jariotasunez egiteari buruzkoak izan ziren.

## Hautatutako argitalpenak 
### Liburuak 
* (1962). A Primer of ALGOL 60 Programming: Together with Report on the Algorithmic Language ALGOL 60. Academic Press. .
* Dahl, Ole-Johan; Hoare, C.A.R. (1972). Structured Programming. Academic Press. .
* (1976). A Discipline of Programming. Prentice Hall. .
* (1982). Selected Writings on Computing: A Personal Perspective. Monographs in Computer Science. Springer. .
* (1988) Feijen, W.H.J.; Sterringa, Joke A Method of Programming. Addison-Wesley. .
* (1990) Scholten, Carel S.. Predicate Calculus and Program Semantics. Texts and Monographs in Computer Science. Springer-Verlag. .

### Hautatutako artikuluak 
* (1959). "A Note on Two Problems in Connexion with Graphs" (PDF). Numerische Mathematik. 23 (3): 269–271. CiteSeerX 10.1.1.165.7577. doi:10.1007/BF01386390. S2CID 123284777.

* (1962). "Some Meditations on Advanced Programming". Proc. IFIP Congress. Amsterdam: North-Holland. pp. 535–8.

* (1965). Cooperating Sequential Processes (Technical report). Technische Hogeschool Eindhoven. EWD-123. Retrieved 20 September 2020. Reprinted in Genuys, F., ed. (1968). Programming Languages: N.A.T.O. Advanced Summer School Held in Villard-de-Lans in 1966. Academic Press. pp. 43–112. OCLC 499952053. Published as Dijkstra, E.W. (1968). "Cooperating Sequential Processes". In Hansen, P.B. (ed.). The Origin of Concurrent Programming. New York: Springer. pp. 65–138. doi:10.1007/978-1-4757-3472-0_2. .

* (1965). "Solution of a Problem in Concurrent Programming Control". Comm. ACM. 8 (9): 569. doi:10.1145/365559.365617. S2CID 19357737.

* (1965). "Programming Considered as a Human Activity". Proc. IFIP Congress. pp. 213–7.

* (1968). "Go To Statement Considered Harmful". Letters to the editor. Comm. ACM. 11 (3): 147–8. doi:10.1145/362929.362947. S2CID 17469809.

* (1968). "A Constructive Approach to the Problem of Program Correctness". BIT Numerical Mathematics. 8 (3): 174–186. doi:10.1007/bf01933419. S2CID 62224342.

* (May 1968). "The Structure of the 'THE'-Multiprogramming System". ACM Symp. on Operating Systems. Comm. ACM. 11 (5): 341–346. doi:10.1145/363095.363143. S2CID 2021311.

* (April 1970). Notes on Structured Programming (PDF) (Report). 70-WSK-03 – via E.W. Dijkstra Archive. Center for American History, University of Texas at Austin.

* (1971). A Short Introduction to the Art of Computer Programming. Eindhoven: Technische Hogeschool. OCLC 3474242. EWD316.

* (1971). "Hierarchical Ordering of Sequential Processes". Acta Inform. 1 (2): 115–138. doi:10.1007/bf00289519. S2CID 31573213.

* (1972). "The Humble Programmer". Comm. ACM. 15 (10): 859–866. doi:10.1145/355604.361591.

* (June–July 1974). "Programming as a Discipline of Mathematical Nature". American Mathematical Monthly. 81 (6): 608–612. doi:10.2307/2319209. JSTOR 2319209.

* (1974). "On the role of scientific thought". E.W. Dijkstra Archive, Center for American History, University of Texas at Austin. EWD447.

* (1974). "Self-stabilizing Systems in Spite of Distributed Control". Comm. ACM. 17 (11): 643–4. doi:10.1145/361179.361202. S2CID 11101426.

* (1975). "How do we tell truths that might hurt?". Selected Writings on Computing: A Personal Perspective. Monographs in Computer Science. Springer (published 1982). pp. 129–131. .

* (1975). "Craftsman or Scientist". ACM Pacific 1975. pp. 217–223.

* (1975). "On the teaching of programming, i. e. on the teaching of thinking". Language Hierarchies and Interfaces. 1975: 1–10.

* (1977). "Programming: From Craft to Scientific Discipline". International Computing Symposium. 1977: 23–30.

* (1978). "On the Interplay between Mathematics and Programming". Program Construction. Lecture Notes in Computer Science. Vol. 69. pp. 35–46. doi:10.1007/BFb0014649. . S2CID 26233314.

* (1975). "Correctness Concerns And, Among Other Things, Why They Are Resented". (ACM) Proceedings of the International Conference on Reliable Software. 21–23 April 1975, Los Angeles, California, USA: 546–550.

* (1975). "Guarded Commands, Nondeterminacy and Formal Derivation of Programs". Comm. ACM. 18 (8): 453–7. doi:10.1145/360933.360975. S2CID 1679242.

* (1978). "Finding the Correctness Proof of a Concurrent Program". Program Construction. 1978: 24–34.

* (1984). "The threats to computing science". E.W. Dijkstra Archive, Center for American History, University of Texas at Austin. EWD898.

* (1986). "On a Cultural Gap". The Mathematical Intelligencer. 8 (1): 48–52. doi:10.1007/BF03023921. S2CID 120847834.

* (1987). "Mathematicians and Computing Scientists: The Cultural Gap". Abacus. 4 (4): 26–31.

* (1989). "On the Cruelty of Really Teaching Computer Science". A debate on teaching computing science. Comm. ACM. 32 (12): 1398–1404. doi:10.1145/76380.76381. S2CID 16961489.

* (1999). "Computing Science: Achievements and Challenges". ACM SIGAPP Applied Computing Review. 7 (2): 2–9. doi:10.1145/335527.335528. S2CID 34430415.

* (2001). "The End of Computing Science?". Comm. ACM. 44 (3): 92. doi:10.1145/365181.365217. S2CID 31142279.

* (2001). "What led to Notes on Structured Programming". E.W. Dijkstra Archive, Center for American History, University of Texas at Austin.

## Erreferentziak 
## Bibliografia 
* *Programen espezifikazio, egiaztapen eta eratorpen formala*. Javier Alvez Gimenez, **Xabier Arregi Iparragirre**, Jose Gaintzarain Ibarmia, Paqui Lucio Carrasco, Montse Maritxalar Anglada (UEU eta UPV/EHU, 2016), EHUko Informatika Fakultateko 5 irakasleek liburu honetan software fidagarria eraikitzeko oinarrizko prestakuntza-ikastaro baterako materiala eskaintzen dute. Programazio-arloan hasi berria den edonorentzat baliagarria da.

* Dahl, O.J., Dijkstra, E.W., Hoare, C.A.R. "Structured Programming". Academic-Press, 1972.
* Dahl, O.J., Owe, O. "A Presentation of the Specification and Verification Project ABEL". Research Report in Informatics, 90 zb., Aza. 1984. Institutt for Informatikk, University of Oslo.
* Dijkstra, E.W. "Correctness concerns and, among other things, why they are resented". Int. Conf. Reliable Software, SIGPLAN Notices 10, Eka. 1975, pp 546-550.
* Dijkstra, E.W. "Guarded Commands, Nodeterminancy and Formal Derivation of Programs". Comm. to the A. C. M., Bol 18, 3 zb., Aug 1975.
* Dijkstra, E.W. "A Discipline of Programming". Prentice-Hall, 1976

## Ikus, gainera 
* Dijkstraren algoritmo
* Niklaus Wirth
* Metodo formalak
* Software arkitektura
* Informatika
* Programazio egituratu
* Fisika teoriko

## Kanpo estekak 
* Dijkstra-ren argazkiak 
* Dijkstraren idatziak (EWD) 
* "E.W. Dijkstra Archive". Center for American History, University of Texas at Austin.
* "Dijkstra's Rallying Cry for Generalization". Dijkstra-ren lanak eta gogoetak biltzeko webgunea, Edgar Graham Daylight informatikari historiazaleak sortua.