Ingezonden persbericht
Promovendus biedt alternatief onbegrijpelijke foutmeldingenIedere software
ERROR "C.hs":6 - Type error in application
*** Expression : semLam <$ pKey "\\" <*> pFoldr1 (semCons,semNil) pVarid <*>
pKey "->"
*** Term : semLam <$ pKey "\\" <*> pFoldr1 (semCons,semNil) pVarid
*** Type : -> ,(Type,Int,Int))] ->
Int -> Int -> -> (Doc,Type,a,b, -> , -> )) ->
Type -> d -> ,(Type,Int,Int))] -> Int -> Int -> e -> (Doc,Type,a,b,f ->
f, -> ), )]
*** Does not match : -> -> Type -> d ->
,(Type,Int,Int))] -> Int -> Int -> e -> (Doc,Type,a,b,f -> f, ->
), )]
Ook voor softwareontwikkelaars is een foutmelding als bovenstaand moeilijk te ontcijferen. Wanneer de locatie van een gevonden fout zo nauwkeurig mogelijk wordt aangegeven biedt dat al verbetering. De toepassing wordt pas echt gebruiksvriendelijk als ook wordt aangegeven hoe een gemaakte fout verbeterd kan worden. Een dergelijke functionaliteit, vergelijkbaar met die van een spellingchecker in een tekstverwerker, is ook gewenst voor de fouten die een compiler rapporteert, betoogt Heeren.
Zelf inrichten
Goede foutmeldingen toevoegen aan een compiler is veel werk, en mede afhankelijk van de programmeerstijl en de expertise van de programmeur. Het uitgangspunt van Heeren is dat de programmeur de mogelijkheid moet hebben om de rapportage van fouten in te richten naar eigen smaak. Door middel van een eenvoudig te gebruiken scriptingtaal kan de programmeur de compiler afstemmen op zijn wensen. Deze technologie is vooral waardevol gebleken in de context van domeinspecifieke programmeertalen. Zonder de compiler aan te passen, kunnen foutmeldingen worden uitgedrukt in termen uit het probleemdomein in plaats van de onderliggende programmeertaal. In de Helium-compiler, mede door Heeren ontwikkeld om precieze, gebruikersvriendelijke foutmeldingen te genereren, ziet bovenstaande foutmelding er heel anders uit:
(6,59): Type error in the operator <*
probable fix: use <*> instead
Best Paper Award
Voor één van zijn publicaties ontving Heeren in 2004 de Best Paper Award van het Nationaal Informatica Onderwijs Congres (NIOC). De ideeën uit dit onderzoek zijn geïmplementeerd en met succes gebruikt in het programmeeronderwijs aan de Universiteit Utrecht.
Meer informatie
20 september 2005, 10:30 uur
Bastiaan Heeren, departement Informatica
Proefschrift: Top Quality Type Error Messages
Promotor: Prof.dr. S. D. Swierstra
Copromotor: Dr. J. Hage
Nederlandse samenvatting: www.cs.uu.nl/people/bastiaan/phdthesis/samenvatting.html
Helium homepage: www.cs.uu.nl/helium/
Voorlichter Celia Nijenhuis (Informatica) (030) 253 1422, C.J.Nijenhuis@math.uu.nl of Roy Meijer (030) 253 3705, r.e.t.meijer@uu.nl