Tony Hoare

Tony Hoare (Kolonbo, 1934ko urtarrilaren 11), Britainia Handiko informatikaria da, 1959-1960 urteetan quicksort izeneko ordenazio-algoritmoa garatu zuena. Sir Charles Antony Richard Hoare edo C. A. R. Hoare izenekin ere ezaguna da. Horretaz gain, programen zuzentasuna egiaztatzeko Hoare logika definitu zuen; prozesu konkurrenteen elkarrekintzak espezifikatzeko Communicating Sequential Processes (CSP) izeneko komunikazio-lengoaia garatu zuen, filosofoen afariaren problema ebazteko erabil daitekeena. Occam programazio-lengoaiaren inspiratzaile ere izan zen.

Formazioa eta gaztaroa 
Ceilango Kolonbo herrian jaioa da (gaur egun Sri Lanka) guraso britainiarrekin. Hoare Ingalaterran hezi zen Oxford-eko Dragon School-en eta Canterburyko King 's School-en. Ondoren, Oxfordeko Unibertsitatean Kultura Klasikoa eta Filosofia Gradua lortu zuen. 1956an graduatu zenean, 18 hilabete egin zituen Royal Navy-n Zerbitzu Nazionalean, non errusiera ikasi zuen. Oxfordeko Unibertsitatera itzuli zen 1958an, estatistikako graduondoko baten ziurtagiria lortzeko, eta han hasi zen ordenagailuen programazioarekin. Ondoren, Moskuko Estatu Unibertsitatera joan zen British Councileko truke-ikasle bezala, non itzulpen automatikoa ikasi zuen Andrey Kolmogorovekin.

Ikerketak eta Karrera 

1960an, Sobietar Batasuna utzi zuen eta Elliott Brothers Ltd enpresan hasi zen lanean. Bertan, ALGOL 60 lengoaia inplementatu zuen eta algoritmo nagusiak garatzen hasi zen. Informazioa Prozesatzeko Nazioarteko Federazioko (IFIP) 2.1 lan-taldeko kide izan zen, eta ALGOL 60 eta ALGOL 68 hizkuntzak babestu eta mantentzen ditu.

1968an Konputazio Zientzietako irakasle bihurtu zen Belfasteko Queen 's Unibertsitatean, eta 1977an Oxfordera itzuli zen konputazio irakasle gisa Programazio Talde Ikerketa zuzentzeko Oxfordeko Unibertsitatean Konputazio Laborategiko Programazioan (orain Informatika Saila, Oxfordeko Unibertsitatean), Christopher Strachey hil ondoren. Geroago irakasle emeritua izendatu zuten, eta Microsoft Researchen ikertzaile nagusia ere bada, Cambridgen (Ingalaterra).

Hoare-ren ekarpenik esanguratsuenak honako arlo hauetan egin dira:

 Hainbat zenbaki edo elementu ordenatzeko eta hautatzeko bere algoritmoak (Quicksort eta Quickselect).

 Hoare-ren logika. 1969an, Floyd-en ideiak berreskuratuz, axioma eta inferentzia-erregelez osatutako sistema formala eratu zuen. Sistema horrek programen zuzentasun formala frogatzeko balio du eta asertzio diren inbarianteen metodoaren euskarria da. Geroztik programen zuzentasuna formalki frogatzeko zenbait metodo azaldu da, hala nola, "aldizkako asertzioena" edo semantika denotazionalean oinarritutakoa. Baina guztietan erabiliena Hoare-ren kalkulua izan da ezbairik gabe.
 Communicating sequential processes (CSP, prozesu sekuentzialen arteko komunikazioa) prozesu konkurrenteen arteko elkarreraginak zehazteko erabiltzen dena,
 Konputagailuko sistema eragileak egituratuz monitore kontzeptua eta programazio-lengoaien espezifikazio axiomatikoa erabiliz.

Programa baten zuzentasuna frogatzen. Adibidea 

Hoare-ren logika oinarria da programa informatikoen espezifikazio, egiaztapen eta eratorpen formala bderatzeko. Hona hemen adibide xume bat, non egiaztatzen den if motako baldintzazko egitura batekin bi zenbakiren arteko kenduraren balio absolutua ondo kalkulatzen dela.Froga ezazu ondoko programak z aldagaian
x eta y-ren arteko kenduraren balio absolutua uzten duela:

--true
if x ≥ y then
    z:=x-y; 
else
    z:=y-x; 
end if;
--z = |x-y|

1.- (x ≥ y) → (x-y ≥ 0 ∧ x-y=x-y)
2.- {x-y ≥ 0 ∧ x-y=x-y} z:=x-y {x-y ≥ 0 ∧ z=x-y} (AA)
3.- (x-y ≥ 0 ∧ z=x-y) → (z = |x-y| )
4.- {x ≥ y} z:=x-y {z = |x-y|} 1, 2, 3, (ODE)
5.- ¬(x ≥ y) → (y-x = y-x ∧ ¬(x ≥ y))
6.-{(y-x = y-x ∧ ¬(x ≥ y)} z:=y-x {z = y-x ∧ ¬(x ≥ y)} (AA)
7.- (z = y-x ∧ ¬(x ≥ y)) → (z = |x-y|)
8.- {¬ x ≥ y} z:=y-x {z = |x-y|} 5, 6, 7, (ODE)
9.- {true} if x ≥ y then z:=x-y else z:=y-x {z = |x-y|}
                                          4, 8, (BDE)

Barkamenak eta atzera-egiteak 
2009an egindako hitzaldi batean, Hoarek barkamena eskatu zuen erreferentzia nulua asmatu zuelako:

Mila milioi dolarreko akatsa deitzen diot. Erreferentzia nuluaren asmakuntza izan zen hura 1965ean. Une hartan, erreferentziak egiteko lehen sistema integrala diseinatzen ari nintzen, objektuetara bideratutako lengoaia batean (ALGOL W). Nire helburua erreferentzien erabilera oro erabat segurua izatea zen, konpiladoreak automatikoki egindako egiaztapenekin. Baina ezin izan nion eutsi erreferentzia nulua ere jartzeko tentazioari, hain zen erraza inplementatzeko. Horren ondorioz, makina bat akats, ahultasun eta sistema-akats gertatu dira geroago, eta horrek mila miloi dolarreko mina eta kalteak eragin ditu azken berrogei urteetan.

Urte askoan, Oxfordeko bere departamenduak, bere zuzendaritzapean, espezifikazio formaleko lengoaietan lan egin zuen, CSP eta Zren moduko lengaietan. Sistema horiek ez zuten jaso espero zen moduko harrera industrian, eta 1995ean Hoarek jatorrizko hipotesiei buruz hausnartu behar izan zuen:

Duela hamar urte, metodo formaletako ikertzaileek (eta haien artean nahasietan nahasiena nintzen) iragarri zuten programazioaren munduak eskertuta hartuko zituela programak handiagoak bihurtzen direnean eta haien segurtasuna kritikoagoa denean sortzen diren fidagarritasun-arazoak konpontzeko formalizazioak agindutako laguntza guztiak. Orain, programak oso handiak eta kritikoak izatera iritsi dira - Metodo formalek eroso landu dezaketen eskalatik haratago. Arazo eta porrot asko egon ziren, baina ia beti baldintzen azterketa desegokiari edo kudeaketa-kontrol desegokiari egotzi ahal izan zaizkie. Egiaztatu da ezetz, munduak ez dituela modu esanguratsuan jasaten gure ikerketak jatorrian konpondu nahi zituen arazoak.

Liburuak 
 Dahl, O.-J.; Dijkstra, E. W.; Hoare, C. A. R. (1972). Structured Programming.
 C. A. R. Hoare (1985). Communicating Sequential Processes. Prentice Hall International Series in Computer Science.  (hardback) or  (paperback). (Available online at http://www.usingcsp.com/ in PDF format.)
 Hoare, C. A. R.; Gordon, M. J. C. (1992). Mechanised Reasoning and Hardware Design. Prentice Hall International Series in Computer Science.
 Hoare, C. A. R.; Jifeng, He (1998). Unifying Theories of Programming. Prentice Hall International Series in Computer Science.

Bizitza pertsonala 
1962an, Hoare Jill Pym-ekin ezkondu zen, bere ikerketa taldeko kide batekin.

Sariak eta ohoreak 
 Ohorezko kidea British Computer Society elkartean (1978)
 Irnformatikan gorengo elkartea den ACMren Turing saria "programazio-lengoaiak definitu ahal izateko ekarpen esanguratsuak egiteagatik". Saria Nashvillen eman zioten (Tennessee) 1980ko urriaren 27an egin zuen ACMren Urteko Konferentzian. Hoareren diskurtsoaren transkripzio bat argitaratu zen Communications of the ACM aldizkarian.
 Harry H. Goode Memorial Award (1981)
 Fellow of the Royal Society (1982)
 Zientzietako ohorezko doktorea (Doktore Honoris Causa) Belfasteko Queen's unibertsitatean (1987)
 Zientzietako ohorezko doktorea Bath Unibertsitatean (1993)
 Ohorezko kidea, Oxford-eko Kellogg College (1998)
 Zaldun izendapena (Knight Bachelor), hezkuntzan eta informatikan egiten dituen zerbitzuengatik. (2000)
 Kyoto Prize Informazio zientzietan (2000)
 Royal Academy of Engineering akademiako kidea (2005)
 Computer History Museum (CHM) Mountain View, California museoko kidea izendatu zuten "Quicksort algoritmoa garatzeagatik eta programazio-lengoaien teorian bizitza osoan egindako ekarpenengatik" (2006)
 Ohorezko doktorea (doktore Honoris Causa) Heriot-Watt Univertsitatean (2007)
 Zientzietako ohorezko doktoregoa (Doktore Honoris Causa) Atenasko Ekonomia eta Negozio Unibertsitateko Informatikako Departamenduan (AUEB) (2007)
 Friedrich L. Bauer-Prize, Municheko Teknologia Unibertsitatea (2007)
 SIGPLAN Programming Languages Achievement Award (2011)
 IEEE elkarteko John Von Neumann Domina (IEEE John von Neumann Medal) (2011)
 Ohorezko doktorea, Varsoviako Unibertsitatean (2012)
 Ohorezko doktorea, Madrilgo Complutense Unibertsitatean (2013)

Erreferentziak

Kanpo estekak 
 Tony Hoare. Webgune ofizial pertsonala Oxfordeko Unibertsitatean

Erresuma Batuko informatikariak
Knights Bachelor