Nederlandse Prijs voor ICT-onderzoek 2013 Waarom willen we bugs vinden? Parallel rekenen Het woord ‘bug’ (letterlijk: insect) als benaming voor een machinefout werd al gebruikt voordat computers be­ stonden. Maar de term werd pas echt bekend in 1947 bij het werk aan een voorloper van onze moderne compu­ ters. Computer-pionier Grace Hopper kwam tijdens een zoektocht naar de oorzaak van een programmafout een mot ­tegen die zich in een elektromagnetische schake­ laar had genesteld. Daardoor werkte de computer niet goed. Ze plakte de mot in haar logboek en schreef daarbij de ­onsterfelijke woorden: ‘First actual case of bug being found.’ (‘Eerste echte bug gevonden.’) Een computer draait op een processor: een chip met een soort rekenmachine die alle computerprogramma’s aanstuurt. Tot enkele jaren geleden hadden com­ puters een single-core processor, een processor met één zo’n reken­machine. Fabrikanten ontwikkelden steeds snellere processoren, totdat allerlei fysieke beperkingen ervoor zorgden dat ze niet meer sneller konden worden. Toch zijn de meeste bugs niet de schuld van insecten of andere verstoringen in de fysieke apparatuur. De meeste computerprogramma’s bestaan uit gigantische hoeveelheden code (computerinstructies), soms wel miljoenen regels. Bovendien worden zulke grote programma’s meestal gemaakt door meerdere programmeurs. Daardoor gebeurt het soms dat programmeurs dingen over het hoofd zien, die ervoor zorgen dat programma’s niet goed werken. Zo’n softwarefout heet een bug. Door zo’n bug kan het gebeuren dat een computer vastloopt, dat een programma opeens stopt met werken of dat er verkeerde dingen worden getoond op het scherm. Maar er kunnen ook veel ergere dingen gebeuren. In de jaren 80 van de vorige eeuw zijn er mensen overleden door een softwarefout in Therac-25, een machine voor radiotherapie. In dit apparaat werden patiënten bestraald, bijvoorbeeld voor kanker. Door een softwarefout gebeurde het een paar keer dat patiënten een veel te hoge dosis straling toegediend kregen: ongeveer 100 keer zoveel als de bedoeling was. Drie patiënten zijn overleden aan deze overdosis straling. Na een onderzoek bleek dat een computerfout in de software ervoor zorgde dat de machine soms verkeerd reageerde als de instructies te snel ingetypt werden. In dat geval voerde de computer twee processen in de verkeerde volgorde uit, waardoor de machine een verkeerde dosis straling toediende. Door meerdere processen tegelijk te draaien op die verschillende rekenmachines, kun je bijvoorbeeld meerdere programma’s tegelijk draaien: terwijl je een spelletje speelt op je smartphone kan er ondertussen een telefoontje binnenkomen. Maar ook één enkel programma kan tegelijkertijd gebruik maken van die meerdere rekenmachines. Dat heet een multi-threaded programma. Marieke Huisman Dr. Marieke Huisman (1973) studeerde informatica aan de Universiteit Utrecht en promoveerde in 2001 aan het Computing Science Institute van de Universiteit Nijmegen. Na haar promotie werkte ze als onderzoeker bij INRIA in Frankrijk. In 2008 keerde ze terug naar Nederland om te gaan werken bij de Universiteit Twente, eerst als universitair docent en sinds 2011 als universitair hoofddocent in de vakgroep Formal Methods en Tools. Cell & Data Memory Huisman werkt aan het vergroten van betrouwbaarheid en correctheid van parallelle software. Hiervoor beschrijft ze het gewenste gedrag van een programma als een wiskundige formule en vervolgens gebruikt ze wiskunderegels om af te leiden of het programma inderdaad dit gedrag heeft. Hiervoor wordt een speciale tak van wiskunde gebruikt, namelijk de logica. In de logica gaat het niet om het berekenen van getallen, maar of eigenschappen waar of niet waar zijn. Huisman heeft diverse prestigieuze beurzen binnen­gehaald, zoals een ERC Starting Grant voor haar project ‘VerCors: Verification of Concurrent Data Structures’ en een NWO Vrije Competitie-beurs voor haar onderzoeksproject ‘SlaLoM: Security by Logic for Multithreaded applications’. Naast haar onderzoek zet ze zich ook in om de interesse voor informatica en techniek te vergroten bij jongeren en met name bij meisjes. Dat doet ze bijvoorbeeld door mee te doen aan high teas met informaticastudentes en speeddates met meisjes op middelbare scholen. Zo presenteert ze zichzelf als rolmodel voor meisjes met interesse in informatica. Marieke vertelt waarom dat belangrijk is: ‘Informatica is veel meer dan hacken en in je eentje achter een computer zitten. Dat is echt een stereotiep en onvolledig beeld. Voor mij is informatica het oplossen van wiskundige puzzels. Daarnaast gaat informatica ook over begrijpen wat voor behoeften mensen hebben. Je moet met de gebruikers van het systeem communiceren en dat vervolgens in een concreet ontwerp vertalen.’ Marieke vertelt in een filmpje voor de EU-campagne ‘Wetenschap: echt iets voor meisjes!’ waarom informatica zo leuk is en hoe haar leven als wetenschapper eruit ziet. IPN: ICT-onderzoek Platform Nederland IPN is een landelijk platform voor het Nederlands ICT-onderzoeksveld. ICT-onderzoek heeft een enorme impact op ons dagelijks leven. Vaak zijn we ons er niet eens van bewust dat we tientallen keren op een dag gebruikmaken van de resultaten van ICT-onderzoek. IPN geeft de ICT in Nederland als wetenschappelijke discipline een sterkere positie en maakt haar zichtbaarder. Door de Nederlandse ICT-inspanningen te coördineren fungeert IPN als hét aanspreekpunt richting Door meerdere rekenmachines naast elkaar op één chip te zetten was het toch mogelijk om computers nóg sneller te maken. Dat heet een multi-core processor. Sinds een paar jaar hebben alle nieuwe computers en de meeste smartphones een chip met twee of zelfs vier rekenmachines naast elkaar. Core 1 Core 2 Core 3 Task Manager Logboek van Grace Hopper. Met dank aan het Naval Surface Warfare Center, Dahlgren, VA., 1988. [Public domain], via Wikimedia Commons Controleren van multi threaded programma s Omdat computerprogramma’s vaak erg groot zijn en ingewikkeld in elkaar zitten, is het best lastig om als programmeur goed in de gaten te houden of alles klopt en of er geen onderdelen elkaar in de weg zitten. Dat geldt in het bijzonder voor multi-threaded programma’s. De verschillende processen die tegelijk lopen, kunnen elkaar verstoren. Als twee processen tegelijk infor­matie in het gedeelde geheugen van de computer willen lezen of schrijven, kunnen er onvoorspelbare dingen gebeuren. beleidsmakers, politiek, bedrijfsleven en andere maatschappelijke groeperingen. Onderzoekers in de informatica en nauw verwante disciplines als elektrotechniek, communicatie en signaalverwerking werken in toenemende mate samen. Het IPN stimuleert deze verandering richting één ICT-onderzoeksveld en draagt daar actief aan bij. Meer informatie: www.ictonderzoek.net Het ene proces kan bijvoorbeeld de resultaten van het andere proces per ongeluk overschrijven. Dan kan het gebeuren dat computers vastlopen of verkeerde resultaten geven. Je kunt je zo’n programma voorstellen als het geheel van alle stoplichten op een kruispunt. Die zijn ook in tijd en volgorde van elkaar afhankelijk: het is niet de bedoeling dat de verkeerde stoplichten tegelijk op groen springen. Als zo’n probleem optreedt, kan het bijvoorbeeld gebeuren dat je computer vastloopt: een crash (letterlijk: botsing) is het gevolg. De programmeur moet er dus voor zorgen dat er niet meerdere dingen tegelijk gebeuren op dezelfde plek in het geheugen van de computer en dat processen in de goede volgorde worden uitgevoerd. Hoe groter en ingewikkelder een computer­programma, hoe moeilijker het is om al die NWO EXACTE WETENSCHAPPEN De Nederlandse Organisatie voor Wetenschappelijk Onderzoek (NWO) is met een budget van ruim 500 miljoen euro per jaar een van de grootste wetenschapsfinanciers in Nederland. NWO stimuleert kwaliteit en vernieuwing in de wetenschap. Binnen NWO richt het cluster Chemische & Exacte Wetenschappen zich op de disciplines astronomie, chemie, informatica en wiskunde. In de discipline processen tegelijk in de gaten te houden. Het zou handig zijn om aan één onderdeel van een computerprogramma te kunnen werken zonder je zorgen te hoeven maken over wat de rest van het programma doet en of dat wel goed samen gaat. Het onderzoek van Marieke Huisman richt zich op het ontwikkelen van software die voor een willekeurig multithreaded programma kan controleren of de verschillende onderdelen van het computer­programma wel goed samenwerken. Als dat niet het geval is, dan krijgt de programmeur informatie over waar de verschillende onderdelen elkaar in de weg zitten. Daar wordt het leven van een programmeur makkelijker van, en als computergebruiker betekent dat dat je snellere computers hebt die minder vaak vastlopen. informatica wordt excellent onderzoek in de gehele keten van nieuwsgierigheidgedreven tot toepassingsgericht gestimuleerd en geïnitieerd. Naast de financiering van onderzoekprojecten is nationale strategieontwikkeling een belangrijke activiteit en wordt er gewerkt aan het ontwikkelen en uitvoeren van thematische publiek-private subsidieprogramma’s. Meer informatie: www.nwo.nl/ew Een multi-core processor. De verschillende rekenmachines (Core 1, Core 2 en Core 3) voeren tegelijkertijd berekeningen uit en kunnen dus tegelijk lezen en schrijven in het geheugen van de computer (Cell & Data Memory). De Task Manager regelt als een soort verkeersleider wat er op het scherm van de computer wordt getoond. Tegenwoordig draaien de meeste computers en smartphones parallelle software: computerprograma’s waarin verschillende processen tegelijk lopen. Omdat verschillende berekeningen tegelijkertijd worden uitgevoerd, wordt de software sneller. Dat principe wordt bijvoorbeeld gebruikt bij het maken van een animatiefilm. Verschillende rekenmachines zijn tegelijkertijd bezig met het maken en inkleuren van verschillende beeldjes. Als de beeldjes klaar zijn, worden ze achter elkaar gezet om er een film van te maken. Dat is sneller dan als één rekenmachine alle beeldjes achter elkaar moet maken. Een beeldje uit een animatiefilm wordt stap voor stap opgebouwd door een 3D-model schaduw te geven en in te kleuren. Auteursrecht: NWO / Exacte Wetenschappen Ontwerp: Smidswater