Blogs 17/01/2011

Bug vol dir cuca

7 min

Avui vull tractar un tema que de ben segur que tots us heu trobat alguna vegada, com son els errors de programació (anomenats col·loquialment “bugs”). De fet, en aquest article faré servir habitualment el terme bug tot i ser un anglicisme ja que, com veureu, el terme és més producte d’una anècdota que d’un ús correcte de la llengua anglesa, i s’ha convertit en un terme habitual per a designar errors de programació en qualsevol idioma del planeta.

Una mica d’història El terme bug, per a referir-se a un error de programació, té un origen ben curiós. Bug, en anglès, significa literalment “cuca”.

Hi ha registres de finals del segle XIX on ja surt la paraula bug referida a errors inexplicables en sistemes mecànics. Es desconeix l’origen del mot en aquest àmbit, tot i que no és difícil imaginar que provenia de la capacitat de les cuques i altres animalons d’introduir-se en sistemes mecànics i provocar comportaments no desitjats. Però no va ser fins mitjans del segle XX que el terme es va fer definitivament popular. El 1946, al Laboratori de Computació de la Universitat de Harvard, un estrany error va començar a afectar a un dels primers ordinadors electromecànics, el Mark II. Quan els tècnics van analitzar la màquina van trobar-se una cuca atrapada a un relé. Van treure aquest cos estrany i l’ordinador va tornar a funcionar amb normalitat. Van decidir enganxar el cadàver de la cuca al llibre de registre del sistema, amb la següent inscripció: “Primera troballa real d’un bug”. Aquí teniu la famosa fulla del llibre de registre de la màquina, que encara es conserva al SmithsonianNational Museum of American History:

Des de llavors, el terme bug ha estat utilitzat per a descriure errors informàtics. L’ús ha estat tan extens que fins i tot s’ha fet servir per a derivar noves paraules en aquest àmbit de la ciència. Així tenim que debug és el mot emprat per a designar el procés de trobar i reduir el nombre d’errors (bugs) d’un sistema. I seguint amb la derivació, un debugger és la persona que busca aquests bugs o el software que permet fer-ho.

Els bugs son errors conseqüència del factor humà a l’hora de programar. L’error pot produir-se per ineptitud del programador, per una especificació mal redactada, per un disseny defectuós, etc... Cadascuna de les fases de desenvolupament de software és susceptible d’introduir bugs en el producte final. És per aquest motiu que tot desenvolupament de software disposa d’un pla de proves exhaustiu que, en teoria, detectarà tots els possibles errors de programació que hagin aparegut. Però com totes les altres fases, la fase de proves també pot presentar defectes.

A més, un cop efectuat el primer pla de proves, el software torna als desenvolupadors per a que arreglin els errors detectats. I un cop arreglats, es torna a executar el pla de proves. I torna als desenvolupadors amb els nous errors detectats. I aquest cicle va patint iteracions constants fins a que tot sembla correcte. Però aquesta iteració comporta també que es tendeixi a obviar zones del programa que en les iteracions anteriors han funcionat correctament, cosa perillosa ja que moltes vegades arreglant algun defecte ja detectat se n’introdueix un de nou a una altra secció del codi. I si aquesta secció és de les que ja es donen inconscientment per correctes, l’error pot arribar al producte final.

Com veiem, les empreses de software posen tot de la seva part per a que el producte final no tingui bugs, però quan les dates d’entrega s’apropen i les pressions comencen a ser realment fortes aquest procés tendeix a ser menys curós del desitjable. Tot i això, dins del mon del software, les empreses que programen videojocs son de les més curoses, però també és cert que és dels softwares més complicats que es comercialitzen... i que els errors en el videojocs tenen molta publicitat, com veurem a continuació.

Bugs molt greusBugs A continuació faig un petit recull de bugs històrics que destaquen per la seva gravetat. Oblivion: Shivering Isles (expansió) PC, XBOX 360, Playstation 3

Els jugadors de Oblivion que van comprar i instal·lar aquesta expansió no sabien que acabaven d’introduir al seu joc un límit d’hores jugables que, un cop assolit, significava el final... però el final, final. Aquesta expansió introduïa un bug al joc (no només a les noves àrees) que feia que, si arribaves a les 150 hores de joc, certs elements comencessin a acaparar recursos del sistema de forma que el joc fos injugable. I estem parlant d’un bug que feia impossible continuar la teva partida quan portaves... 150 hores!!!!!!!! En fi, crec que no soc capaç d’imaginar la sensació de ràbia i ira que em sobrevindria si em trobés en una situació així. De fet, no sé si li hauré dedicat mai 150 hores a un joc...

Per sort, la companyia va desenvolupar un pedaç que solucionava el problema. Bubble Bobble Revolution Nintendo DS

El cas d’aquest joc és ben curiós, sembla mentida que l’hagin provat abans de treure’l al mercat. Si arribes al nivell 30... s’ha acabat! No hi ha forma de passar al nivell 31. No hi ha un monstre final que et mati, ni un salt impossible a realitzar. Simplement, s’acaba. I estem parlant d’un joc tipus acció / puzzle d’una sola pantalla on l’únic objectiu és completar la pantalla i passar al següent nivell.

La companyia va haver de substituir el joc a tots aquells clients que van reclamar per un de nou amb aquest error arreglat.

The Legend of Zelda: Twilight Princess Nintendo Wii

Si gravaves la partida a la Big Cannon Room abans de parlar amb en Shad, quan carregaves la partida en Shad no hi era i quedaves atrapat a la sala sense possibilitat de sortir.

Per a solucionar el problema s’havia d’enviar el joc a Nintendo i t’enviaven un altre amb el bug corregit, però tenint en compte que aquest era un dels jocs estrella en el moment de la comercialització de la nova consola (la Wii) l’error va ser important.

La versió de Gamecube no tenia aquest bug. Jet Set Willy ZX Spectrum

Ara toca un bug d’un joc mític dels 80, de quan els jocs d’ordinador començaven a aparèixer per les nostres llars. En aquest joc de plataformes, quan arribaves a una sala coneguda com l’Àtic, tot el joc es corrompia. Habitacions que mataven només entrar-hi, enemics que havien desaparegut... en definitiva, la impossibilitat de seguir jugant i per tant d’arribar al final del joc.

La desenvolupadora del joc va tractar de justificar-ho dient que aquest comportament era el desitjat (amb excuses com que les sales de mort instantània estaven plenes de gas), però finalment van reconèixer el seu error. Com que en aquella època la distribució de pedaços era força més complicada que avui en dia, la solució que van adoptar va ser publicar una sèrie de modificacions per codi que l’usuari havia de teclejar i executar al seu ordinador per a modificar el joc ell mateix.

Avui en dia això sembla impensable, però en aquells primers anys de l’oci digital era bastant habitual l’existència dels anomenats pokes, que no eren més que petits programes que l’usuari teclejava i compilava al seu ordinador per a modificar el comportament del seu joc (alguns exemples d’aquests pokes eren aconseguir vides infinites, munició infinita, invulnerabilitat, etc...). La font d’aquests pokes eren les revistes especialitzades, que acostumaven a tenir unes pàgines dedicades a publicar el codi font d’aquests programes per a que l’usuari ho modifiqués sobre els propis fitxers del joc.

Bugs recents Ara comentarem alguns bugs curiosos de jocs més o menys recents... GTA IV (o el misteriós cas del gronxador explosiu) Al GTA IV hi ha diverses formes de fer explotar un cotxe, però fer-ho “per fricció contra un gronxador” és potser la més original:

Dragon Age: Origins En aquest joc en podem trobar molts i de molt divertits. Aviso que el primer pot ferir sensibilitats. Si no vas poder dormir durant setmanes després de veure l’Exorcista o et fas pipi a sobre amb els misteris de l’Iker Jiménez et recomano que no vegis el proper vídeo:

I aquí la Leliana es converteix una ésser que fa més por que un exèrcit de Darkspawns... una zombie-contorsionista! No sé a que esperen els desenvolupadors de L4D i Dead Rising per a incloure-la com a enemic final...

Crysis (o l’atac dels gripaus voladors) És ben conegut el nivell gràfic del Crysis, però el que no tothom sap és el potencial dels gripaus que apareixen al joc... son gripaus modificats genèticament? Alienígenes adoptant forma de gripau per a passar desapercebuts? Segurament deu ser alguna resposta encara més esgarrifosa...

Assassin’s Creed (o el misteri del cavall que corria a dos potes) En aquest joc tan cuidat gràficament xocava des del primer moment que no s’hi havia posat la mateixa cura a l’hora d’implementar el moviment del nostre cavall com a l’hora d’implementar el nostre moviment a peu. Però que el nostre cavall sigui mig contorsionista mig volador... això ja és massa:

Oblivion (o l’atac de les ultra-síndries) Un bug de l’Oblivion permetia duplicar qualsevol objecte. Aquí teniu uns exemple de com fer-se distribuïdor de síndries sense tacar-se les mans de fems:

Street Fighter II Aquest bug és molt molest ja que invalida completament la partida, però té la seva gràcia: Mass Effect (o Kaidan Alenko vol ser Billy Elliot) Com podeu veure, el nostre company Kaidan Alenko sembla tenir una afició que mai ens va confessar... Batman: Arkham Asylum (o la tàctica secreta d’en Batman per a derrotar el Joker: posar-li les banyes) L’excel·lent joc del nostre ratpenat favorit no està lliure de bugs. En aquest primer vídeo veiem el que pot ser l’inici d’una bonica relació entre en Batman i la Harley Queen... es posarà gelós el Joker??

I aquí en teniu un altre amb els mateixos protagonistes però menys pujadet de to… o es tracta d’algun ancestral ritual de parella?

Aquests bugs son deguts en general a casuístiques molt específiques que van fer que no apareguessin als plans de proves del joc abans de sortir al mercat. Això demostra que cap equip de proves pot emular el que suposa tenir centenars de milers d’usuaris passant hores i hores amb el teu programa, ja que de ben segur que els usuaris acabaran passant per totes i cadascuna de les possibilitats del joc més d’hora que tard.

I fins aquí el meu petit recull, segur que vosaltres en coneixeu molts més... m’ajudeu a completar la llista? Al fòrum: http://www.vadejocs.cat/smf/index.php/topic,89447.0.html

stats