Subscribe:

miércoles, 19 de octubre de 2016

Bugs estoréricos

Comienzo a escribir esto siendo las 11:27pm del 18 de octubre del 2016 y teniendo mil y un cosas más importantes que hacer (quizá no mil, pero sí 5 o 6) pero tenía muchas ganas de escribir sobre esto.

Como ya lo he mencionado en múltiples ocasiones por aquí, estudio una carrera relacionada con Ciencias de la Computación y, como en cada carrera, hay memes relacionados. Dentro de la carrera de ISC, y afines, quizá el meme más famoso sea el del punto y coma. Sí, punto y coma ";". Para aquellos que no estén inmersos en la programación, en muchos de los lenguajes de programación (o al menos en la mayoría de los más comunes), lo que marca el fin de una instrucción es un punto y coma.

Habiendo aclarado lo anterior, cuando alguien que recién comienza en el área cuenta sus anécdotas sobre cómo sufrió realizando un proyecto, el error del punto y coma siempre sale a flote, algo así como "El otro día estaba haciendo X proyecto y estuve dos horas buscando un error porque no servía el programa y al final nada más era un punto y coma". Y no lo voy a negar, también llegué a mencionarlo, pero en mi defensa puedo argumentar que no tardé más de 10 minutos en encontrarlo.

Sin embargo, en ese error, toda la culpa recae en el programador porque cualquier compilador te dice dónde es que falta. El problema, que no leemos. Pero esto no es un regaño, sólo quería ejemplificar el error más sencillo de arreglar.

Los errores buenos, aquellos que te hacen sufrir y que cuando los solucionas te puedes sentir Dios o un pendejo son los errores semánticos. Un error semántico es aquel que ocurre porque ESTUPIDO. Bueno no, un error semántico es aquel en el que el código está escrito correctamente pero su "significado" no es el que crees que le estás dando. El ejemplo que me viene a la mente es cuando empiezas a usar Java e intentas llenar una lista de objetos pero reutilizas un objeto, es decir, lo agregas a la lista, luego cambias sus valores y lo vuelves a agregar. Suena bien, ¿no? Pues no, como es la misma instancia y en Java todos los nombres de variables de clases son apuntadores (aunque digan que en Java no existen los apuntadores), al cambiar las propiedades de ese objeto, también cambias la de los objetos que ya metiste en la lista. ¿Cómo se corrige? Creas una nueva instancia de la clase para cada objeto que vayas a agregar a la lista. Y por si se están preguntando, eso me pasó a mí.

Una de las variantes de estos errores y que son de mis favoritos porque los odio con toda mi alma son lo que ocurren debido a la concurrencia, pero ya hablaré de ellos en otro momento. Los que me gustaría mencionar son aquellos a los que les llamo bugs esotéricos. No sé dónde lo leí, pero así les llaman a aquellos que son difíciles de encontrar y que ocurren por cosas que jamás te imaginaste que podrían suceder.

Por ejemplo, en los videojuegos pasa que sale la nueva edición de X franquicia y a mil usuarios diferentes les ocurre el mismo error. Entonces los usuarios se preguntan - Si a tanta gente le sucede, ¿por qué ellos no lo solucionaron? Seguro es para cobrar más por la expansión - Y no, no es eso, es un error con el que se toparon 1000 usuarios, ¿de cuántos? ¿un millón? ¿dos? ¿diez millones? Siguiendo la regla de probabilidad de Laplace, la probabilidad de que un usuario en este caso se encuentre con el bug es de 0.001%

¿A qué se debe? Quizá el detonante sea una seria de pasos que se deben seguir, por ejemplo: Que llegue al nivel 10, visitando primero la ruta de la derecha, habiendo matado a 15 enemigos genéricos y se quedase con sólo 3 balas antes de llegar al checkpoint.

Seguro están pensando que escribo sobre esto porque me ha pasado recientemente y la respuesta es sí, y en un par me he sentido como todo un rockstar por solucionarlos y en otros me he sentido un idiota por estar horas y horas intentando encontrar qué los causaba, ya ni se diga el pensar la solución.

Así que si tienen un amigo, compañero o conocido que se queja de que no encontraba un punto y coma, díganle de mi parte que no sabe de lo que habla :p

Hasta luego

0 Comentarios:

Publicar un comentario