Quan comencem a programar, una de les primeres coses que descobrim és que no sempre aconseguim que l’ordinador faci exactament allò que volem. Podem escriure unes instruccions pensant que obtindrem un resultat determinat i, quan executem el programa, trobar-nos amb una cosa completament diferent.
Un personatge que no es mou, una puntuació que no s’actualitza, un botó que no respon o un programa que deixa de funcionar són situacions molt habituals quan estem aprenent a programar. En aquests casos, el més important no és començar de zero, sinó esbrinar què està passant i trobar la manera de solucionar-ho.
Aquest procés de cerca i correcció d’errors s’anomena depuració o debugging, i forma part de la feina de qualsevol programador. De fet, aprendre a depurar un programa és una part fonamental de l’aprenentatge de la programació: ens ensenya a analitzar què està passant, a identificar les causes d’un problema i a provar diferents solucions.
Què passa quan un programa no fa allò que esperàvem?
Imaginem que un nen està creant un petit videojoc i vol que un dels personatges salti quan es prem la barra espaiadora. Escriu les instruccions necessàries, executa el joc i descobreix que el personatge no salta. Pot ser que el programa no detecti que s’ha premut la tecla, que la instrucció que ha de fer saltar el personatge no sigui correcta o que una altra part del codi hi estigui interferint.
Abans de començar a canviar instruccions sense saber ben bé per què, hem d’intentar esbrinar on és el problema. Això és precisament el que fa un programador quan es troba amb un error: analitza què està passant i en busca la causa.
Quins tipus d’errors pot tenir un programa?
Quan parlem d’errors de programació, ens podem trobar amb situacions diferents.
Hi ha errors que impedeixen que el programa s’executi perquè hem escrit alguna instrucció d’una manera que el llenguatge de programació no entén. També pot passar que el programa s’executi, però que es produeixi un error durant el funcionament.
I hi ha un altre tipus d’error especialment interessant: aquell en què el programa funciona correctament, però fa una cosa diferent de la que volíem. En aquest cas, l’ordinador està fent exactament allò que li hem indicat. El problema és que no li hem explicat correctament què volíem que fes.
Això és important perquè, quan programem, l’ordinador no pot interpretar les nostres intencions: només pot seguir les instruccions que li donem. Per tant, trobar un error no sempre consisteix a localitzar una instrucció que està mal escrita. De vegades, hem d’esbrinar quina part del nostre raonament no ha funcionat com esperàvem.
Què fan els programadors per localitzar un error?
Quan alguna cosa no funciona, un programador ha d’investigar. Pot provar una part del programa per separat, comprovar quins valors està utilitzant, observar què passa just abans que aparegui el problema o modificar temporalment alguna instrucció per veure quin efecte té.
A poc a poc, va descartant possibilitats fins que troba la causa de l’error. Així doncs, podem entendre aquest procés com la resolució d’un petit misteri. Tenim un resultat inesperat i hem d’esbrinar què ha passat perquè s’hi hagi arribat.
Per això, depurar un programa s’assembla molt més a investigar un problema que no pas a corregir simplement una línia de codi. A més, aquesta manera de treballar ens obliga a dividir un problema en parts més petites, una estratègia molt útil quan ens trobem davant d’un repte que, d’entrada, sembla complicat.
Què fem després de trobar l’error?
Un cop creiem que hem identificat el problema, podem intentar solucionar-lo. Després, haurem de tornar a executar el programa i comprovar què passa. Pot ser que ara funcioni correctament, però també pot ser que el canvi que hem fet no hagi resolt el problema o, fins i tot, n’hagi provocat un altre de diferent. En aquest cas, haurem de fer marxa enrere, observar de nou què està passant i provar una altra solució.
Aquesta manera de treballar (provar, observar, corregir i tornar a provar) forma part del dia a dia de la programació. I és precisament per això que els errors tenen tanta importància quan aprenem a programar. No són simplement una cosa que apareix quan fem alguna cosa malament, sinó una part habitual del procés d’aprenentatge que ens ajuda a entendre millor com funciona el nostre programa.
Per què són importants els errors quan creem un projecte?
Quan un nen comença a programar, és normal que alguns dels seus primers programes no funcionin a la primera. De fet, seria força difícil que fos d’una altra manera. Un programa pot estar format per moltes instruccions, i n’hi ha prou que una no faci exactament allò que hauria de fer perquè el resultat final sigui diferent del que esperàvem.
Per això, és important que l’error no es converteixi en un motiu per abandonar, sinó en una pregunta: per què ha passat això? A partir d’aquí, podem començar a buscar una explicació, plantejar diferents possibilitats i comprovar quina ens acosta a la solució.
Amb la pràctica, aquest procés esdevé cada vegada més natural, i allò que al principi podia resultar frustrant acaba formant part de l’aprenentatge. Tots els problemes que sorgeixen durant el procés poden servir per continuar treballant en el projecte i entendre millor com funciona. I quan finalment aconseguim trobar l’error i solucionar-lo, la satisfacció és diferent de la que sentim quan simplement seguim unes instruccions i obtenim el resultat esperat. En aquest cas, hem trobat la solució per nosaltres mateixos.
Què aprèn un nen quan aprèn a depurar un programa?
Quan pensem en l’aprenentatge de la programació, normalment ens imaginem algú escrivint codi davant d’un ordinador. Tanmateix, una part important de l’aprenentatge té lloc precisament quan aquest codi no fa allò que esperàvem. És aleshores quan hem d’analitzar el problema, buscar-ne les possibles causes, provar diferents solucions i comprovar-ne els resultats.
Per aquest motiu, aprendre a depurar un programa no serveix únicament per aconseguir que el nostre codi funcioni. També ens ajuda a desenvolupar una manera d’afrontar els problemes: dividir-los en parts més petites, buscar solucions, comprovar si funcionen i canviar d’estratègia quan calgui.
Aquesta manera de pensar i treballar és el que anomenem pensament computacional, una habilitat pròpia de la programació que es pot aplicar en qualsevol àmbit de la vida. A més, ens ensenya aspectes tan importants com parar atenció als detalls i entendre que una primera solució no ha de ser necessàriament la definitiva.
Programar també és aprendre a trobar solucions
Quan un nen aprèn a programar, no aprèn únicament a escriure instruccions perquè l’ordinador faci determinades coses. També aprèn què ha de fer quan aquestes instruccions no produeixen el resultat esperat.
Ha d’observar, fer-se preguntes, buscar possibles causes, provar solucions i tornar a comprovar el resultat. I, de vegades, haurà de repetir aquest procés diverses vegades abans de trobar la resposta. Per això, els errors formen part de l’aprenentatge de la programació. Un bon programador no és necessàriament qui aconsegueix que tot funcioni a la primera, sinó qui sap enfrontar-se a un problema quan alguna cosa no funciona i té les eines necessàries per trobar una solució.
I potser aquesta és una de les parts més interessants d’aprendre a programar: descobrir que, quan alguna cosa surt malament, no sempre s’ha de començar de nou. Sovint només cal aturar-se, observar amb atenció i preguntar-se què podem canviar per aconseguir que funcioni.
