Los ordenadores son, esencialmente, deterministas

Los ordenadores, fallos hardware aparte, son autómatas deterministas: dado un estado inicial, una serie de operaciones llevan siempre al mismo resultado.
Una conclusión de esto es que no hacen "cosas raras". Puede haber cosas mal hechas, claro está, pero sus efectos son predecibles.
Un caso paradigmático de esto son las librerías. En todas hay bugs, claro, pero pocos. Si algo "no funciona" revisa antes tu código. Las librerías de código abierto son usadas por millones de desarrolladores, y revisadas por gran parte de ellos (¿aún no has asociado las fuentes a los binarios en Eclipse? ¿A qué esperas?). Sin embargo, tu código es nuevo y sólo tuyo, probablemente el problema esté ahí.
Cuando llamamos a un SAT lo primero que nos preguntan es ¿está enchufado? Sí, es irritante, pero, ¿compruebas que tu código lo está? El determinismo hace que para solucionar la mayor parte de los errores en el código no sea necesario ni pensar. Símplemente un análisis metódico desde el error nos conduce al error: vete a la línea que falla y vete "tirando del hilo". El problema aparecerá solo.

PS: ¿Ah, que estás utilizando librerías propietarias, sin el código? Mmm... ¡Buena suerte!

Posted by Juan Ignacio Sánchez Lara 14:40  

2 Comments:

  1. RFOG said...
    Eso no es, ni de lejos, cierto. No lo es que las bibliotecas opensource tengan menos bugs porque sean usadas por más gente, ni que el ordenador sea una máquina determinista al 100%. El hardware lo es. El software no. ¿Prueba? Construye una máquina de Turing mediante software en tu ordenador. Como la máquina Turing es no-determinista, tu software tampoco lo es, aunque implemente correctamente dicha máquina Turing.
    AcP said...
    Si hay un determinismo en el desarrollo de software es éste: nadie cree que el error sea suyo a menos que se demuestre lo contrario (y a veces ni después de eso).

    ¿Es un error del framework o de mi código? Del framework, por sup.

    ¿De la librería externa o de mi codigo? De la librería externa, por sup.

    ¿Del hardware o mío? Del hardware (eso corrobora que se lleva bien alto el orgullo).

    ¿Es la vida o soy yo? La vida, obviamente.

    Jeje, bueno, así somos los programadores, qué se le va a hacer. Yo me he acostumbrado, a fuerza de horas perdidas, a revisar primero mi código, y a dudar de todo lo que hago, pero cuesta...

    Hace un tiempo escribía algo de eso aquí, si se me permite el autobombo (aunque viene al caso).

    Saludos.

Post a Comment