Debugging: fouten zoeken
Een programma dat in één keer werkt is zeldzaam, ook bij professionals. Het verschil tussen een beginner en een gevorderde is niet dat de gevorderde geen fouten maakt, maar dat hij ze rustig en systematisch vindt. Dat heet debuggen.
Waar het woord vandaan komt
Een fout in een programma heet een bug, een insect. Het verhaal gaat dat er in 1947 een echte mot in een computer zat die een storing veroorzaakte; het woord bestond al langer, maar het bleef hangen. Debuggen is dus letterlijk "ontluizen": de fouten eruit halen.
Twee soorten fouten
De eerste soort snapt de computer niet eens: een ontbrekende dubbele punt, een regel die niet inspringt, een verkeerd gespeld woord. Python stopt dan meteen en geeft een melding. Progio vertaalt die melding in gewone taal, met het regelnummer: "Het woord 'voruit' kent Python niet. Bedoel je vooruit()? (regel 2)". De tweede soort is lastiger: het programma draait, maar doet iets anders dan de bedoeling. De herhaling loopt vier keer in plaats van zes, dus het spoor wordt niet af. Dan is er geen foutmelding, alleen een resultaat dat niet klopt.
Zo pak je het aan
Lees eerst de melding, ook als hij lang is: het regelnummer staat erin. Kijk dan naar die regel en die erboven. Verander één ding tegelijk en probeer opnieuw. Doet het programma iets anders dan je verwacht, vraag jezelf dan bij elke regel: wat gebeurt hier precies? Bij Ada in de stoomtijd kun je dat letterlijk zien: elke stap wordt op het bord afgespeeld, zodat je ziet waar het misgaat.
De drie meest gemaakte fouten in Python
De dubbele punt: elke regel met for, if, while of def eindigt op een dubbele punt. Inspringen: alles wat bij zo'n regel hoort, springt 4 spaties in; een regel die niet inspringt hoort er niet meer bij. Spelling: Python maakt verschil tussen hoofdletters en kleine letters, en tussen leg_rails en legrails. Levels 8, 9 en 10 van de stoomtijd gaan elk over één van deze fouten.
Waarom fouten goed nieuws zijn
Een fout betekent dat je iets probeert. Kinderen die bang zijn voor foutmeldingen leren langzamer dan kinderen die ze als aanwijzingen lezen. Daarom staan er in Progio nooit rode kruisen en nooit "fout!", maar altijd een zin die vertelt wat er is gebeurd en waar je kunt kijken. Zie ook functie, herhaling en als-dan.
Veelgestelde vragen
Wat betekent "regel 3" in een foutmelding?
Het regelnummer van je eigen code, geteld vanaf 1. In de editor van Progio staan de nummers links naast de code.
Mijn programma stopt na 3 seconden. Is dat een fout?
Progio stopt een programma dat niet vanzelf eindigt, bijvoorbeeld een while die nooit onwaar wordt. Kijk of de herhaling wel kan stoppen.