sábado, 27 de diciembre de 2008

¿Qué es un Bug?

Un bug es un bicho, en el sentido más literal de la palabra (su traducción directa del inglés).

Pero, qué es un Bug en términos informáticos? Un bug es, simplemente, un fallo en el proceso de creación de un programa.
Por ejemplo, en la suite Microsoft Office 2007 si intentamos multiplicar 850 por 77'1... El resultado debería ser 65.535, pero da 100.000!!!.


El origen de éste bug seguramente esté relacionado con un desbordamiento de bits, aunque lo desconozco.
Digo esto al ver que 65.535, en binario (1´s y 0´s) usando 16 bits es 0111 1111 1111 1111, lo que supone el límite si queremos usar el primer bit para el signo (simplificando un poco). Así que puede que por estos derroteros vaya el Bug, pero a saber... Lo importante es que Microsoft lo solucionó en sucesivas versiones.
(mis disculpas a quien no ha entendido ni una sola palabra de éste último párrafo).

Pero... y por qué cojones un error informático se llama "bicho"? Pues la respuesta es histórica.

Domingo, 9 de septiembre de 1945, Universidad de Harvard

La científica y almirante del ejército americano Grace Murray Hopper, hacía funcionar la primera computadora electromecánica de la historia, el enorme Mark I, cuando se produjo un fallo en su funcionamiento.


Cuando Grace investigó lo sucedido, encontró una polilla enganchada en el mecanismo del computador y la archivó en el cuaderno de bitácora.

Desde ese momento comenzó a utilizar el termino "bug" cómo fallo y el verbo "to debug" para determinar su depuración (detección y eliminado), siendo denominado "debugger" el programa dedicado a tal fin desde entonces hasta nuestros días.
Si bien es cierto que Grace fue pionera en utilizar la palabra bug cómo fallo en el campo de la informática, existe constancia de que el gran inventor Thomas Alva Edison ya usaba éste término para determinar un fallo o interferencia en algunas de sus notas.

Ésta polilla se conserva en el museo nacional de historia americana de Smithsonian

3 comentarios:

  1. Efectivamente, tiene pinta de tener que ver con el tamaño de los distintos tipos de datos. Antes era común que un entero ocupase 2 bytes (16 bits), pero lo más normal a día de hoy (en Java y en la mayoría de compiladores de C) es que un entero ocupe 4 bytes, con lo que estaría arreglado el problema.

    Lo único a resaltar es que "bitácora" es con "b" (no lo puedo evitar :-P ).

    Cuídese.

    ResponderEliminar
  2. De todas formas, ahora que lo pienso, no el lógico que el resultado sea entero si hay, al menos, un operando real (71,1). Ni aun en precisión simple habría problema en representar 65.535...

    No sé. Paso.

    ResponderEliminar
  3. Gracias por avisar de la falta de ortografía. Es una palabra que la tengo cruzada, la muy cabrona.

    En cuanto al porqué del fallo, seguramente sea más complejo de lo que decimos, pero de todos modos clama al cielo que en la version 2007!!! andaran con esas. Qué baterías de pruebas tenían? Seguramente por contratar "no informáticos" para pruebas de sistemas les pasa lo que les pasa :D

    ResponderEliminar