La ciencia se basa en el modelado por computadora: ¿qué sucede cuando falla?

Desde el descubrimiento transformador de la penicilina hasta las teorías de la relatividad y la mecánica cuántica, la ciencia progresó con una velocidad alucinante incluso antes de que hubiera computadoras. Gran parte de esto se debe a la solidez del método científico: los resultados científicos se validan al ser replicados y extendidos por otros científicos.

Pero la forma en que hacemos ciencia está cambiando: ahora confiamos cada vez más en modelos informáticos complejos para comprender la naturaleza. Y resulta que estos modelos pueden ser casi imposibles de reproducir, lo que significa que se está desafiando una piedra de toque importante de la ciencia. ¿Cuáles son las repercusiones de este cambio en el mundo real y qué podemos hacer al respecto?

La ciencia premoderna, conocida como "filosofía natural", era empírica. La ciencia empírica usa observaciones pasadas para hacer predicciones sobre el futuro, que luego pueden probarse. Tycho Brahe, un astrónomo danés del siglo XNX, logró hacer observaciones precisas y completas de los cielos de esta manera.

La ciencia moderna, sin embargo, es teórica. La ciencia teórica también hace predicciones, pero las deriva de modelos matemáticos en lugar de observaciones previas. Piensa en las leyes del movimiento de Isaac Newton, como la ley del cuadrado inverso de la gravedad.

Por ejemplo, hay una ecuación que describe la órbita de la Tierra alrededor del sol. Esta ecuación se puede usar para construir un modelo de computadora en el que solo puede conectar ciertas variables y ver cómo cambia la solución. Simplemente podría conectar una fecha futura y leer la posición de la Tierra en esa fecha. También podría usar el mismo programa para modelar otros sistemas planetarios, todo se basa en las mismas matemáticas. Todo lo que tienes que hacer es conectar diferentes masas y varias otras propiedades de los cuerpos involucrados.


gráfico de suscripción interior


Tales ecuaciones matemáticas son geniales cuando están disponibles, pero a menudo no lo son. Por ejemplo, sabemos que no existe una ecuación simple que resuelva el llamado "problema de tres cuerpos", Que describe tres cuerpos que orbitan alrededor e influyen entre sí por fuerzas gravitatorias, como la luna, la tierra y el sol.

Gran parte de la ciencia actual se ocupa de sistemas aún más complicados y, de manera similar, carece de soluciones exactas. Dichos modelos tienen que ser "computacionales", que describen cómo un sistema cambia de un instante a otro. Pero no hay forma de determinar el estado exacto en algún momento en el futuro que no sea "simulando" su evolución de esta manera. El pronóstico del tiempo es un ejemplo familiar; hasta la llegada de las computadoras en los 1950, era imposible predecir el clima futuro más rápido de lo que realmente sucedió.

La ciencia actual generalmente consiste en diseñar un modelo matemático que describa un sistema complicado, luego convertirlo en una simulación computacional y ejecutar la simulación para hacer predicciones con el fin de validar el modelo.

Cuando el modelado falla

El modelado se usa en todos los campos científicos, desde astrofísica y predicción del clima a la bioinformática y economía. Pero hay aumento del debate sobre el hecho de que esta ciencia es difícil de validar a través de la reproducción.

Resulta que simplemente describir los métodos experimentales en palabras no es suficiente. Eso se debe en parte a que los lenguajes naturales como el inglés son simplemente demasiado vagos para describir los cálculos de forma precisa. Después de todo, hay una razón por la cual los programadores usan los lenguajes de programación. Uno de los mayores desafíos en el desarrollo de software es convertir requisitos vagos en especificaciones precisas de comportamiento.

Los humanos, incluso los científicos, son, después de todo, falibles. Transformar cualquier información en un programa invariablemente introduce errores en el camino. Por ejemplo, muchos científicos dependen de las herramientas de exploración de datos, como las hojas de cálculo, que están diseñadas para facilitar el uso y no para la solidez. Es muy fácil simplemente resumir el rango incorrecto de celdas en una hoja de cálculo, sin recibir ninguna advertencia. Este fue uno de los defectos metodológicos en un documento en el que el Partido Republicano de los Estados Unidos solía basar sus políticas a favor de la austeridad.

De manera similar, estudio reciente en las hojas de cálculo 15,770 que se hicieron públicas durante la investigación en la corporación estadounidense, Enron mostró que 24% de las hojas de cálculo que contenían al menos una fórmula presentaban errores obvios, como la suma de celdas en blanco.

En las ciencias naturales, el Mars Climate Observer, una sonda espacial lanzada en 1998 para estudiar el clima en Marte, se perdió un año después porque una parte del software de control usó por error unidades imperiales en lugar de unidades métricas. Otro estudio de nueve implementaciones independientes del mismo experimento de geociencia -utilizando el mismo conjunto de datos, algoritmos y lenguaje de programación- mostraron muy poco acuerdo en los resultados obtenidos.

Es más, incluso si el lector de un trabajo de investigación puede interpretar con éxito el significado preciso del escritor y luego traducirlo sin errores a un programa, todavía existen dificultades al ejecutarlo. Una clase de problemas particularmente complicada surge de cómo las computadoras manejan los números: aunque pueden manipular números enteros como 42 y -17 con perfecta precisión, las técnicas estándar para manipular números reales como 3.14 y 2 sólo permiten una precisión aproximada. Estas aproximaciones significan que se pueden utilizar formas aparentemente equivalentes de calcular el mismo valor. producir resultados diferentes.

¿Entonces, qué puede hacerse? Si incluso los desarrolladores de software expertos no pueden producir de manera confiable el software correcto, ¿qué esperanza hay para los programadores aficionados como los científicos?

Una línea de trabajo es producir herramientas para diseñar lenguajes de programación "específicos del dominio", cada uno adaptado a una clase particular de problema, como el comportamiento de los agentes en los mercados económicos o la difusión de drogas entre las células. Estos apuntan a facilitar mucho más que los especialistas describan los cálculos directamente en términos familiares, en lugar de tener que codificarlos indirectamente en un lenguaje de programación de propósito general.

Un segundo enfoque busca diseñar "sistemas tipo" más expresivos pero aún más fáciles de usar para los programas. Esto haría más fácil detectar errores "tontos", como celdas en blanco en hojas de cálculo, o mezclar valores en diferentes unidades. Sin embargo, no puede descartar todos los errores de lógica. Una tercera línea es desarrollar bibliotecas utilizables de código para la aritmética exacta, evitando los problemas de aproximación.

Hay muchas posibilidades de que estos enfoques puedan ayudar a solucionar el problema en el futuro, o al menos eliminar parte del riesgo. Después de todo, el mundo necesita ciencia y los científicos necesitan computadoras, eso no es probable que cambie pronto.

Sobre el Autor

Jeremy Gibbons, profesor de informática de la Universidad de Oxford. Jefe del tema de investigación de Lenguajes de programación.

Este artículo fue publicado originalmente en la conversación

Libro relacionado:

at InnerSelf Market y Amazon