¿Se han preguntado cómo puede ser que después de tanto tiempo de evolución de la informática los programas se sigan colgando de la misma manera?
Siempre se ha discutido acerca de qué tan exacta es la ciencia de la informática. En esta entrega les presentamos un nuevo análisis que no hace más que confirmar lo que ya sospechábamos: a pesar de tanto parafernalia, la informática es una de las ciencias menos exactas, ¡y no parece que eso vaya a cambiar!
Tengo un pen drive conectado a mi notebook. Cuando hago un descanso en mi trabajo suelo hibernarla. Algunas veces, cuando la vuelvo a encender, me encuentro con un cartel de “USB not recognized”. ¿Por que eso sucede algunas veces sí y otras no? Se pueden ensayar varias explicaciones técnicas, como que el momento de cerrarla… el driver… la interrupción… el flush del buffer de datos… bla, bla… Pero desde nuestra perspectiva como usuarios, lo que estamos percibiendo es un “resultado inesperado”.
Dos más dos es cuatro solo en la teoría, en donde los números están a salvo de las contingencias de la realidad espacio-temporal.
Revisemos un poco los conceptos: para que una operación se lleve a cabo, una serie de elementos tienen que funcionar bien en forma simultánea. Si uno de los elementos falla, la secuencia completa no va a funcionar. En términos lógicos, podríamos decir que una operación lógica “Y” (“AND”) de una serie de elementos tiene que ser verdadera, por lo que cada operando debe ser verdadero para que toda la ecucación funcione.
Ejemplo para el caso de un llamado telefónico:
funcion(llamado telefónico)
SI
SmartphoneEncendido AND
AndroidRunning AND
OSPatchesInstalled AND
PhoneAppRunning AND
SignalLevelOK AND
IntermediateRoutingOK AND
PlanTelefonicoPago AND
laTelefonicaQuiere AND
.
.
.
ENTONCES
LlamadoTelefónicoOK
La realidad es que, si refinamos la secuencia, la lista de ANDs puede hacerse casi infinita. Sabemos que basta con que uno de los elementos falle para que toda la secuencia falle. En la práctica, si esto sucede los resultados pueden ser imprecedibles, desde ruidos o baja calidad del llamado, hasta la imposibilidad de comunicarse. La cantidad de posibles resultados de la operación está en función de la cantidad de operandos, con una combinatoria algo así como de 2 elevado a la N, y esto solo en caso de trabajar con unos y ceros.
Musiquita electrónica hecha con los sonidos de los mensajes de error de Windows (sí, el video no es muy emocionante, pero con algo teníamos que ilustrar la nota).
Ahora bien, nosotros, como personas, ¿no somos lo mismo? Una sucesión de elementos seudo-aleatorios que pueden funcionar de una manera o de otra, con una gran cantidad de combinatorias posibles, en el fondo posiblemente explicables, pero que desde nuestra perspectiva de individuos nos da como resultado la “imprevisibilidad humana”. ¿Por qué en el caso de las personas decimos que los errores se producen “porque somos humanos” y en el caso de un dispositivo complejo insistimos en decir que es algo lógico que falla?
Ejemplo concreto que nos da la naturaleza, acerca de que uno más uno puede ser distinto de dos.
Dos más dos es cuatro solo en la teoría, en donde los números están a salvo de las contingencias de la realidad espacio-temporal. Dos patitos más dos patitos van a dar cuatro sólo si en el medio de la operación no se nos escapa uno de ellos.
Estamos en la realidad contante y sonante y hay que asumir que no es posible controlar todo. Es bueno saberlo para evitarse un estrés innecesario. Ya lo dice la vieja frase: “si quieres hacer reír a Dios, cuéntale tus planes”.
Como se imaginarán, o como os imaginaréis, según de qué lado del Atlántico estén o estéis, queridos lectores, el foro aquí debajo está ansioso por recibir sus quejas, elogios, críticas y sesudas reflexiones.
Julio César Sosa Yeladaqui
sábado, 22 de septiembre de 2012, 01:22
Lo que comprendí.. Es que nunca la informática por si misma en su definición de ciencia con su conjunto de teorías deja de ser una ciencia exacta... la mentada inexactitud... es una mera percepción humana.... siempre es exacta... solo que la cantidad de permutaciones y condiciones puede ser tan grande que nuestro entender común es sobre pasado y por ende al fallar alguna de las condiciones es normal que exista una incertidumbre para definir que es lo que fallo en concreto..
Es la discusión de toda la vida de Hume retomada por Popper sobre el problema de la racionalidad de la ciencia por el tema de la inducción. Si tomamos en concepto de ciencia de Popper la informática vuelve a ser ciencia con todas las de la Ley.
Descubrir que las cosas no funcionan como deberían solo nos hace replantearnos que métodos e instrumentos debemos usar para que funcionen mejor.
De hecho las matemáticas, aunque en la vida real son exactas, dentro de un lenguaje de programación no lo son, según cuál sea puede ser más o menos exactas, algunos tienen severos problemas de exactitud con una simple división de números de un dígito por ejemplo, algunos no dan el ancho con números enteros muy grandes y se requieren métodos específicos para usarlos.
Time Master
sábado, 22 de septiembre de 2012, 12:12
Es imposible que sea una ciencia exacta, para empezar, porque si hay que tratar con un número infinito no puede realizarse el cálculo a la perfección ya que un ordenador no puede tratar con el infinito. Se acercará mucho, pero la respuesta será errónea.
Time Master
sábado, 22 de septiembre de 2012, 12:16
Por cierto, con mi anterior comentario me refería a que el procesador no puede trabajar con un número infinito. Un procesador de 64 bits evidentemente puede contener una cadena numérica muchísimo mayor que un ordenador de 8 bits pero aún así no puede realizar un cálculo perfecto. Siempre hay un margen de error.
#11 ¿Cómo que no puede? Puede tratar el concepto infinito igual que lo haces tú en papel. Eso no es más que una abstracción matemática: el número infinito no existe.
Simplemente, lo único exacto es lo que no se mancha con la realidad inexacta.
Bueno soy de los que cree que la ciencia si es exacta lo que no es exacta es la capacidad Humana de general diferentes situaciones con elementos iguales. pues and siempre sera verdadero cuando las proposiciones que la conformen sean verdadera, ahora que no tomes encuenta todas las posibles combinaciones entre esas proposiciones es otra cosa y no creo que sea problema de la ciencia.
la computadora si es exacta, lo que no es exacto son los programas que son hechos por el hombre, no es lo mismo que un programa lo haga un experto senior a que lo haga un recien salido de la escuela, lo digo por experiencia, puedes tener sistemas libres de errores pero tienes que contemplar muchos escenarios y al final de cuentas la computadora hace lo que nosotros le digamos, asi de que la computadora si es exacta pero sigue teniendo errores mientras dependa de los humanos
#14 Se refiere a que la mantisa es finita y por tanto nunca jamás se podrá representar exactamente un número cuya mantisa sea mayor que la que maneja el ordenador y para eso no hace falta acercarse tan siquiera al infinito. Piensa por ejemplo en el número Pi, la raíz de 2 o cualquier otro número decimal con más dígitos que los que caben en la mantisa que maneja el ordenador.
No estoy seguro si la noticia es en serio o el autor es un troll
en fin, un par de cosas:
1) la suma es una operación que la nota asume que funciona solo sobre números, lo cual al utilizar estructuras abstractas de datos deja de ser así
2) los problemas de cuelgue muchas veces son por problemas de concurrencia, direcciones inválidas de memoria, etc
3) para hacer un programa sin fallas sería necesario aplicar alguna lógica para derivar formalmente el mismo a partir de su especificación, esto es posible pero el tiempo requerido es tanto que si se hicieran todos los programas de esta forma no tendriamos casi ninguno