Por qué la computación es la ciencia más inexacta de todas

escher1.jpgSi hay una conclusión a la que he llegado, después de todo el tiempo que llevo ligado a la tecnología, es que la informática a veces se olvida que uno más uno son dos. Parece que hubieran días en que tira los parámetros de la lógica al tacho de la basura, y se da el gusto de burlarse en nuestras caras. ¿Será que los computadores se enojan o se ponen sentimentales? Quién sabe. Quizás tan sólo se deba a que no todo en el mundo tiene una explicación racional. No me convence como respuesta, pero puede ser.

Ahora, déjenme preguntarles, ¿qué conexión podrían tener que ver el Apollo 11 con una polilla? O incluso, ¿que relación hay entre el Super Mario Bros y el año 2000? ¿Tendrá todo esto que ver con la inmortalidad del cangrejo?

Para responder estas preguntas no podemos sino remontarnos hacia atrás. Bien atrás. Tan atrás como los mismos dinosaurios.

computador_del_ano_del_queque.jpg

Por allá en los viejos tiempos, mucho antes de que Apple, Microsoft y Linux nacieran, e incluso antes de que el mismo rock se inventara, los computadores ya existían. Pero eran bien distintos a los de hoy. No tenían circuitos integrados, ni los chips con los millones de transistores que tenemos hoy. Todo los cálculos se realizaban a través de válvulas de vacío, conectadas por tubos a lo largo de habitaciones completas.

Eran verdaderos dinosaurios.

Ya se imaginarán todo el espacio que podía llegar a ocupar una de estas màquinas de antaño. Les doy un ejemplo: el ENIAC, de la década del 40, ocupaba una superficie de 167 metros cuadrados y pesaba 27 toneladas. Sí, veintisiete. Incluso se corre el mito de que la ciudad de Filadelfia, donde estaba este monstruo, sufría de apagones cuando los técnicos apretaban el botón de encender. Pero esos son sólo mitos.

primer_bug.jpgLo que sí es cierto, es que el año 47 uno de estos gigantescos roedores empezó a fallar. No podía correr ningún programa. De hecho, fue tanta la desesperación de los técnicos, que decidieron "abrir el tarro" para encontrar la causa del problema. Imagínense lo que debió haber sido eso. Buscaron por horas y horas, hasta que dentro de un montón de cables pillaron a una polilla muerta, cuyo cadáver estaba haciendo cortocircuito con "la memoria" del aparato. La sacaron con mucho cuidado, y todo mágicamente se arregló (excepto la pobre polilla, como puedes ver en la foto). La naturaleza había vuelto a su equilibrio.

Esta es la famosa historia del primer bug o "bicho informático". Aunque, según dice Wikipedia, el término bug existía mucho antes que eso, ya que Thomas Alva Edison ya lo había utilizado. Lo cierto es que, desde ése entonces, el término se ha usado para identificar problemas en un programa (no en el hardware, porque asumimos que un sistema operativo no se quedará pegado por culpa de un escarabajo en la disquetera!).

¿Definición de bug, entonces? Es simplemente un error, una falla en el código de un programa que impide que funcione como debería.

Verás que no es muy difícil encontrar ejemplos de bugs. De hecho, hay casi un 40% de posibilidades de que el navegador que estás usando ahora sea un montón de bugs (exacto, me refiero al Explorer). Pero, ¿por qué no pasamos a algo más entretenido? Veamos algunos bugs que se ganaron un lugar en la historia.

Bueno, es ahí donde aparecen en escena el Apollo 11, el año 2000, e incluso el Super Mario Bros. De los primeros dos ya habrás escuchado algo; el primero tiene que ver con la falla en el computador durante el alunizaje de Armstrong y Aldrin el año '69, mientras que el segundo quizás te suene más como el "Y2K bug". Así que les propongo que vayamos con nuestro amigo gásfiter (eso es Mario, ¿cierto?).

Resulta que por ahí en el viejo cartridge se colaron un par de ceros y unos de más, que por las casualidades de la vida terminaron creando un mundo nuevo. El Mundo -1, tal cual. Unos tipos (que deben haber tenido mucho tiempo) descubrieron que si te subías por el techo de la etapa 2 del mundo 1, podías mágicamente atravesar un muro completo, y si entrabas al tubo llegabas a este universo paralelo. Lo más curioso es que el juego no se reiniciaba ni nada por el estilo, sino que aparecías en una etapa submarina… ¡pero que nunca terminaba!

Pobre Mario. Ésta es la secuencia:

bug_mario_bros.jpg

¿Y que pasa hoy con estos bichos del infierno?

Bueno, aunque lo parezcan, los bugs no son así de infernales. Ellos permiten identificar problemas para corregirlos rápidamente. Ésta, de hecho, es una de las fortalezas más grandes del modelo Open Source, en que el feedback de parte de los usuarios es esencial para ir perfeccionando el software. O sea, si encuentras una falla en un programa, puedes avisarle directamente a su creador para que la corrija. Y si sabes algo de programación, aún mejor, ya que el código está disponible para que tú mismo lo arregles.

¿Te suena el Mozilla Quality Feedback Agent? Ahí tienes un ejemplo. Cada vez que el Firefox o el Thunderbird se caen, tienes la posibilidad de informarle a los desarrolladores sobre el problema, y bajo qué circunstancias se produjo. Otros ejemplos son el Bugzilla de Redhat o el Launchpad de Ubuntu (donde ya soy visita frecuente).

También existen iniciativas como las que financia la Universidad de Stanford, en que le paga a empresas como Coverity para que revise el código de software Open Source por bugs. ¡Una verdadera fumigación! De hecho, hace no mucho se anunciaron los resultados del último análisis, y resultó que el reproductor de audio XMMS fue el más "limpio de todos" (tenía apenas seis errores en 116,899 líneas de código), mientras que el peor fue AMANDA. Mucha polilla por ahí.

Otro ejemplo de código de calidad es el propio kernel de Linux (la versión 2.6.11 virtualmente "tenía cero bugs"). Por último está Firefox, cuyo código también es revisado por Coverity en busca de estos bichos del demonio.

Pero bueno, aquí no todo es bugs y fallas y las penas del infierno. El espíritu del mundo Open Source es que, ademas de detectar los bugs, todos contribuyamos con ideas para ir mejorando los programas entre todos. Así no sólo los errores se corrigen más rápido, sino además los programas mejoran a un ritmo más acelerado (y por lo general, mucho más que el software propietario).

Suena bien, ¿no?

Claro está que con todo esto no lograremos hacer de la computación una ciencia más exacta (eso imposible), pero al menos podemos contribuir con nuestro granito de arena, y así retribuir a todos los programadores que le dedican tiempo y esfuerzo a hacer software libre, y para todos. Tiempo que perfectamente podrían dedicar a otra cosa, como responder acertijos milenarios.

Como la misma inmortalidad del cangrejo.

menciones

    comentarios