¿Cómo es útil la epistemología para la investigación científica?

Solo hablaré con la informática y te daré dos respuestas fáciles y una difícil. También voy a ignorar P = NP y el Teorema de Godel, ya que están mejor ubicados en matemáticas.

Comenzaré con el clásico artículo de Leslie Lamport: “Hora, relojes y ordenación de eventos en un sistema distribuido”. [Página en stanford.edu] Lamport describe cómo, en sistemas de computadoras distribuidas con relojes poco confiables (y todos los relojes de computadora no son confiables hasta cierto punto), es imposible ordenar temporalmente todos los eventos en el sistema. En palabras más pequeñas, para un evento A en el nodo de cómputo 1 y un evento B en el nodo de cómputo 2, es muy posible que no podamos decir cuál vino primero. Este resultado fue un trabajo a nivel de Turing Award, y es el caso tolerablemente raro de que un resultado científico termine haciendo una afirmación epistemológica pura.

[Como un aparte, las supercomputadoras de clase de capacidad ahora se construyen con relojes globales. Hay un cable dedicado para cada uno de los nodos de cálculo, el nodo conoce la longitud del cable y, utilizando esa información, puede calcular el tiempo global en cualquier pulso de señal dado. En otras palabras, resolvimos el problema usando un martillo más grande.]

El segundo ejemplo fácil proviene del mundo de la seguridad. Si tiene control físico sobre una computadora en particular, ¿puedo iniciar sesión y ejecutar un programa de forma segura? Es decir, ¿puedo asegurarme de que no puedes ver lo que estoy haciendo y copiar (o perturbar) los resultados?

La respuesta parece ser no”. Incluso consultas simples como “¿Qué tipo de procesador tiene esta computadora?” Puede ser interceptado y modificado. El cifrado no sirve de nada porque en algún momento tiene que ocurrir el descifrado para realizar un trabajo útil, y el mensaje descifrado se puede recuperar en ese punto. Incluso detectar que está ocurriendo una manipulación es un problema extraordinariamente difícil. Una vez más, tenemos el resultado inesperado de un sistema físico macroscópico que impone fuertes restricciones sobre lo que se puede saber.

El tercer ejemplo es un poco más filosófico. Uno pensaría (especialmente si uno acaba de estudiar el “método científico”) que si quiero saber si una optimización del compilador en particular ha acelerado un programa en particular, tengo que realizar un experimento sencillo:

1. Hipótesis: activar la optimización X hace que el programa Y se ejecute más rápido.
2. Experimento:
a. Programa de tiempo Y sin la optimización.
si. Haz la optimización
C. Ejecute el programa Y nuevamente y compare el nuevo tiempo de ejecución con el tiempo de ejecución anterior.

Si solo fuera así de facil.

Lo que realmente estoy haciendo cuando ejecuto este experimento es probar un conjunto de hipótesis relacionadas. ¿Estoy ejecutando el programa que creo que estoy ejecutando? ¿Estoy ejecutando el mecanismo de sincronización correctamente? ¿La ejecución del programa es independiente del mecanismo de temporización? ¿Es el entorno de tiempo de ejecución lo suficientemente similar de ejecución en ejecución que la única característica que debería cambiar el tiempo de ejecución es la inclusión de la optimización?

Si sabes un poco sobre filosofía de la ciencia y las preguntas relacionadas de epistemología, creo que estás un poco más consciente del hecho de que no puedes probar una hipótesis a la vez. Parte de aprender a ser científico es saber cuándo las pequeñas discrepancias entre el modelo y la observación significan que solo hay un poco de error experimental esperado, y saber cuándo volver y comenzar a probar sus suposiciones.