[escepticos] No pienses en un elefante (Era: La Clave)

Luis Rodriguez luisrodrruiz en gmail.com
Mar Ago 21 08:50:57 WEST 2012


Hola:

>Eso es porque está fuera de contexto, lo que estoy diciendo es referido a
lo que contesto y lo que pretendo decir es que, en contra de >la opinión
común, todos los programas tienen errores y muchos de los errores son
indetectables o muy difíciles de detectar, vamos que >no todo es tan limpio
como se supone.

Bueno, pues ese argumento se puede aplicar a cualquier tipo de software. Al
que controla los sistemas de un avión, al que calcula
las estructuras con las que se construyen puentes, edificios. Si
desconfiamos de los sistemas inteligentes artificiales, porque puede
haber algún "bug", pues entonces ¿por qué nos subimos a un avión? Es más,
un número considerable de experimentos científicos se apoyan en resultados
obtenidos con algún tipo de software, por tanto podrían ser no fiables,
¿no?.


>Todo muy idílico pero llevo más de veinte años programando y se que no
existen los usuarios normales ni los programas típicos y >también se que
todas las aplicaciones pueden probarse de forma sistemática ¿de que tiempo
dispongo?

Pues yo veo una diferencia enorme entre los tipos de tests para una
aplicación "batch" que toma una serie de datos de entrada y obtiene un
resultado y una aplicación donde un usuario está "toqueteando"
continuamente. Diseñar una batería de tests para el primer tipo es
relativamente sencillo. Las segundas no veo como pueden probarse con
garantías y, de hecho, son las que provocan mayores problemas.

>Tu prueba, por ponerte un ejemplo de los simples, a dimensionar mal una
variable y que tengas la "suerte" de que el programa funciona >sin
síntomas, una docena de versiones más tarde encuentra el fallo que hasta
entonces, oh hados de la informática, no había dado >síntomas y que,
además, ha sido descubierto por casualidad ya que el resultado está dentro
de los parámetros de lo posible pero no es >el correcto.

Bueno, cuando creas un sistema experto no vas a tener que dimensionar una
variable ni escribir una línea de código. Lo que haces es crear un modelo
que es ejecutado por un motor, que, si se ha hecho bien,  habrá sido
probado sobre miles de modelos. Vuelvo a decir que tu crítica es aplicable
a todo tipo de software, y sin embargo la gente se sigue subiendo a los
aviones y no veo que las centrales nucleares exploten día sí y día no.

Vuelvo a poner el ejemplo del compilador, que al fin y al cabo es un
producto software. Puede que sea evidencia anecdótica, pero tras bastantes
años programando y como profesor de Ingeniería informática no conozco
ningún caso de ni ningún compañero ni ningún alumno que haya descubierto un
mal funcionamiento del gcc, p.e. Esto me parece aplicable a los motores que
se utilizan para construir los sistemas expertos. Otra cosa es lo bien o
mal que funcione el sistema, pero el argumento un posible bug de software
no me parece un argumento sólido.

Un saludo.


Más información sobre la lista de distribución Escepticos