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.

26 comentarios

  1. Inkubot says:

    jejeje que wena el post… yo sake el mundo -1 del mario…. :D

  2. Rodrigo says:

    …a 3, excelente post, sobretodo la parte de linux, simplemente notable…

  3. judas says:

    talvez la informática y la computación es una ciencia exacta… es la gente tras esa tecnología la que la hace imperfecta… por eso el modelo open source es tan beneficioso, porque uno detectan las fallas del otro…

    Ahora… alejandome un poco del espíritu del post… es increíble como aún Mario sigue saliendo una y otra vez en las conversaciones de hoy, en un mundo lleno de playStation, xbox… 360, hiperrealismo… etc.. etc… siempre me sorprende eso…

    Saludos

  4. show says:

    Muy bueno, si señor. ;)

  5. Andrès Fuenzalida says:

    Buzila?? no es Bugzilla?

  6. Andrès Fuenzalida says:

    voy a bajar el rom del Mario pa hacerlo.. creo haberlo echo alguna vez cuando chico.. mas rapido bajar el rom q desempolvar el NES en la bodega..

  7. Notable tomas, claramente siguiendo el espiritu de software libre y open source (No entremos en comparaciones)… que es el trabajo conjunto, no existen ni jefes ni empleados (por decirlos de alguna manera) todos trabajar por mejor el sistema y eso es genial.

    Quizas me alejo del tema que comenzaste tomas pero les dejo un post super interesante de como se estan aplicando las filosofias del software libre a otras areas , principalmente a los negocios y la innovación. http://blog.negonation.com/es/community-based-peer-production-teoria-y-practica/

    pd. Negonation es un empresa española, que ha lanzado su servicio tractis. Peguense una vuelta, estoy participando de la beta y el proyecto es buenisimo.
    Saludos.

  8. CoD.ZoY says:

    El hecho de que un software sea OpenSource, ya hace que sea mas “bug free”; el que sea programador puede solucionarlo por sí solo, es mas divertido y rápido. Los que hacen software privativo les conviene que su software tenga fallas; luego venden los “arreglos” :-D.
    Un clasico el Mario!!! Ya en ese momento mostraba las fallas que ocurren en la creación de programas!!! (Aunque viendo las fotos, parece mas un truco que un bug…)

  9. Todo bien… pero creo que a “la computación” le queda grande el término “ciencia”… los computadores son sólo máquinas, tal como los autos, las máquinas de afeitar, los aviones, los teléfonos, los relojes, las pesas, las tostadoras, los microondas, etcétera…

  10. cristóbal: la informática es una ciencia. cuando hablo de computación no me refiero a las máquinas en sí, sino a todo lo que hace que funcionen, como el lenguaje binario.

    CoD.Zoy: ¿¿un truco?? ¿atravesar un muro? jaja, no sé, medio difícil creo.

    Nicolás: buen link. en todo caso, desde hace tiempo que el espíritu Software Libre se está expandiendo a otras áreas. Creative Commons es un ejemplo de eso.

    Andrés: y?

    judas: es que los clásicos son clásicos, qué le vamos a hacer. :)

  11. Sí, yo también vi el artículo de Wiki antes de escribir ese comentario, pero no me convenció. Bueno, desde que supe que los hermanos Copano tienen una página en Wiki, caché que Wiki no es “citable”… Como toda ciencia, la informática debería tener un objeto de estudio… ¿Cuál es el objeto de estudio de la informática?

  12. Matias says:

    buen articulo, al igual que la mayoria de los post en tu blog, cristobal la computacion si es una ciencia, va mucho mas alla de crear un S.O., o juegos, se usa en muchos aspectos de investigacion y complemetando el trabajo en otras areas, si quieres leer mas revisa el sitio del dcc http://www.dcc.uchile.cl/web/propertyvalue-11322.html ( departamento de ciencias de la computacion de la U de Chile), te dejo el link a las areas de investigacion desarrolladas en la chile, si quieres seguir informandote busca las paginas de los profesores, en ellas puedes encontrar sus publicaciones docentes, saludos.
    pd: aunque no confies en wikipedia recuerda que se entiende por ciencia http://es.wikipedia.org/wiki/Ciencia .

  13. ismael says:

    mmm… En inglés la carrera se llama “Computer Science”.

  14. Con el link de Matías casi me convence, pero al final me confirmó que la computación es sólo una herramienta que facilita el trabajo de otras ciencias. Es como un mechero Bunsen, un tubo de ensayo, un condensador, un compás, etcétera… instrumentos que facilitan el trabajo a las ciencias. No porque haya un grupo de gente dedicada a mejorar ese instrumento, lo transforma en ciencia. De hecho, tú mismo lo dijiste, Matías, dando la siguiente definición: “se usa en muchos aspectos de investigacion y complemetando el trabajo en otras areas”. Esa sería mi percepción estricta del tema. Ahora bien, en mi percepción amplia del tema, creo que la computación es una confluencia de varias ciencias… lo que de igual manera no crea una nueva ciencia… pero si algo está hecho de ciencia, es ciencia… o ciencia multidisciplinaria, no sé. Me quedo con la estricta, pero también con la amplia. Depende… aunque el rigor de la ciencia me obliga a quedarme con la estricta, pero bueno, me da lo mismo, me quedo con las dos… en fin.

  15. kako says:

    exelente…. pero gracias a ellos nos podemos dar cuenta de lo dificil que es programa sin errores y que la computacion esta hecha por humanos…
    que lamentablente contagiamos nuestros errores…

  16. Yo says:

    el open source esta bueno, pero una cosa no hace a la otra, porque quienes estan a favor del open source estan en contra del software propietario ???
    Acaso no todos queremos vivir de lo que nos gusta, programar… porque quienes hacen “open source” son los buenos y quienes trabajan en “software propietario” son los malos.
    ademas siendo realistas… el open source todavía esta muy… pero muy lejos de hacerle mella a empresas grandes del mercado “propietario”.
    todo tiene su lado bueno y malo, y no levanto ninguna bandera, uso lo que me sirve y lo que no, no lo uso.
    basta de idealismos, esto es solo una “ciencia”, algunos trabajan de una forma y otros de otra, pero no se puede negar que todos aportaron algo al progreso de la ciencia, lo hayan hecho desinteresadamente o por dinero.

  17. [...] que varios de los sabios lectores de este terrible blog están ligados a esta enigmática ciencia llamada computación, así que les paso el dato: mi socio, colega, y amigo Ismael Celis lanzó hace [...]

  18. Hector Moreno says:

    jajaja sii las computadoras hacen lo que quieren…. aunque… realmente en el mundo de la informatica 1 1 = 1 :|!!!! gracias a George Boole y su algebra ‘Booleana’

  19. darwin says:

    holagracias me ayudaron a presentar un trabajo unportantisimo sigan asi los apollare

  20. manuel says:

    la computacion es algo que nos pueder llevar a donde uno quiera pero como hay veces que lo que uno quiere no aparese

  21. [...] eso no significa “bicho”? ¿Qué tiene que ver eso con Begin? — Uff… larga historia. Ya, no más. [...]

  22. dboy says:

    siempre me acuerdo de lo que me decía un amigo con nivel “usuario” de pc, que su computador lo mandaba a él. si el pc no quería hacer algo… lo miraba, y decía… “uta… será po, usté manda”

  23. faraGGi says:

    La primera parte me recordó a una escena en la pelicula Brazil… les dejo el link.

    http://youtube.com/watch?v=291QciJA2Wo

  24. resc says:

    muy bueno el post
    megusto mucho sobre todo lo del primer bugs ya xau!

  25. Christian says:

    Yo solo tengo una pregunta, ¿por qué la computación e informática se consideran ciencia? No la ciencia se base en un método cientifico, ¿En que momento se aplica dicho método?. Ahora existen otras ciencias como: sociales, naturales, exactas en fin, si la informática no usará el método cientifico, en ¿qué clase de ciencia podría estar la informática?

  26. [...] no es por meterles susto ni nada, pero todos sabemos que la computación es la ciencia más inexacta de todas, así que más vale que los programadores del código que hace andar al LHC se hayan asegurado que [...]

Deja un comentario