‘Deficiente e ininteligible’ el código fuente del modelo computacional pandémico del Imperial College.
Así como en la Antigüedad los políticos consultaban al Oráculo de Delfos antes de tomar sus decisiones; en el siglo XXI consultan algoritmos de código mal programado e incomprensible escrito en C ++. El ejemplo más reciente es el código fuente del modelo computacional pandémico del Imperial College de Londres, impuesto al mundo a través de la OMS para justificar las políticas de cuarentena planetaria que están acelerando el colapso de la economía mundial.
“El código Covid-19 del Imperial College”, dice el catedrático Benjamin T. Lewis de la Escuela de Física y Astronomía de la Universidad de Exeter en Reino Unido, “es posiblemente el peor código de producción que he visto. No digo esto a la ligera, he usado códigos de dinámica de fluidos heredados de la década de 1980”.
por Ben Lewis
Esto podrá sorprender a la gran mayoría, pero en la comunidad académica no es un secreto que la calidad de la mayoría de los códigos (programas) de computación utilizados es muy pobre.
El grupo del profesor Neil Ferguson en el Imperial College de Londres acaba de hacer público el código fuente de su modelo pandémico, e incluso para los estándares de deficiencia a los que estamos habituados, el modelo del Imperial College es abismalmente deficiente.
Lo que es aún más alarmante es que el código publicado supuestamente se ha mejorado durante varias semanas para que sea menos grave.
Entonces, los cientos de miles de muertes por COVID-19 predichos en marzo por el profesor Ferguson, en realidad son cifras incoherentes y basadas en un sistema sumamente deficiente.
Pero la calidad del código no es meramente estilística. Va al meollo del problema: si otros no pueden leer lo que ha escrito, entonces no pueden verificar que sea correcto.
He entrecerrado los ojos y he mirado este código durante un día y todavía no soy más sabio de lo que está sucediendo en muchas partes.
Los jeroglíficos egipcios pueden ser más fáciles de interpretar.
Las abreviaturas de los escribas latinos ciertamente lo son.
Pero esto plantea la pregunta: ¿por qué los códigos académicos (en la comunidad de modelos, el sustantivo es códigos, no programas) son tan terriblemente invariables? Eso no quiere decir que todos son incorrectos, por supuesto.
Una redacción espantosa solo significa que es irritante e imposible verificarla. O, en otras palabras, simplemente no podemos saber si el código ICL es correcto.
El objetivo de un código claramente escrito es que otros puedan auditarlo y comprenderlo.
Casi ningún programador científico está capacitado como tal. En cambio, C o FORTRAN, o cualquier lenguaje que use, es simplemente una herramienta para resolver problemas con los que se aprende sobre la marcha.
Por lo tanto, nadie imparte buenas prácticas al principio.
Luego, al trabajar solo o en pequeños grupos, tampoco hay un controlador externo para mejorar las cosas. Solo aprendí buenas prácticas cuando comencé a enseñar C a otros, por ejemplo.
¿Por qué surge este problema crónico? Debido al problema secundario a veces llamado “publicar o perecer”.
En realidad, es mejor para la carrera de uno publicar un resultado rápidamente, a partir de uno de estos códigos no verificados antes mencionados, y luego simplemente decir en un documento futuro “oh, sí, debido a un error, la noche es en realidad día”.
Hice exactamente esto, aunque sin querer, cuando era estudiante de doctorado. Lewis, Bate y Price (2015) fueron esencialmente revocados por una errata (Lewis, Bate, Price 2017a), donde un error que había acechado en nuestro código de magnetohidrodinámica desde aproximadamente 2005 comprometió fatalmente los resultados.
Y los de al menos otros siete documentos.
Pero en el mundo académico, aún podría enumerar el artículo de 2015 (y omitir escandalosamente la errata) en mi CV, y enumerar el segundo documento que publiqué en 2017 que era la versión “correcta”, ya sea que creas que es otro asunto.
Peor aún, el artículo de 2015 todavía tenía “impacto”, y toda esa importante métrica académica. De hecho, hasta hoy la gente a veces lo cita todavía, incluso con una errata.
Lo que también te hace preguntarte con qué frecuencia las personas leen los periódicos que citan. Además, ¿qué pasa con todos los artículos cuyos autores no fueron tan desapasionados y no publicaron erratas?
Incluso peor que esto, si ustedes fueran un académico que decidió pasar un tiempo escribiendo un código decente, bien documentado y verificable, existen muy pocas recompensas por hacerlo.
Es casi imposible hacer una carrera con “documentos de código” (es decir, documentos que describen en detalle no un algoritmo o sus resultados, sino cómo se implementa en una computadora). Créanme, lo intenté.
En cambio, el trabajo dedicado a mejorar un código es visto por el resto de la comunidad a menudo como un esfuerzo perdido.
Después de todo, si “funciona” y produce “resultados”, entonces eso es todo lo que importa. Si esos resultados son necesariamente correctos o no importa menos de lo que cabría esperar.
Entonces, no solo no hay recompensa por una buena codificación, en realidad hay un incentivo perverso para no preocuparse demasiado por la calidad del código.
Y eso es antes de hablar sobre escribir exámenes. Peor aún, pasar tiempo arreglando o mejorando un código no solo no se recompensa, sino que al reducir la producción de documentos impactantes, en realidad tiene un efecto negativo en las perspectivas de carrera.
En otras palabras, el status quo recompensa la producción de códigos incomprensiblemente terribles como el de ICL, y castigaría activamente a cualquiera que haya pasado un período de tiempo tratando de mejorarlo.
Esto podría solucionarse si los académicos publicaran sus códigos. Pero dejando de lado algunas excepciones menores, no hay obligación de hacerlo desde las revistas.
Y tampoco hay un incentivo interno para hacerlo, más aún si otros pueden ver cuán malas son las cosas. La narrativa sobre el modelo del grupo ICL en marzo habría sido muy diferente si este código se hubiera publicado con él, después de todo.
Pero debe ser arreglado. Debe haber una expectativa de que cuando se publican los resultados de un modelo, la herramienta utilizada para producirlos también lo es.
Ya requerimos la publicación de la descripción matemática del algoritmo; con razón, un documento que no lo hizo sería rechazado.
Por lo tanto, es un pequeño salto incluir también la implementación. Algunas revistas ya requieren la publicación de parámetros de entrada y archivos de datos de salida, por lo que esto es, en todo caso, simplemente completar el círculo.
Algunos académicos estarán preocupados de que serán “pillados” si publican sus códigos. Pero para ser así, hay que ver el problema completamente a la inversa: sí, otros podrían usar el código, si es claro e inteligible, por supuesto.
Esto es mejor que el otro grupo escribiendo su propio código, igualmente secreto, probablemente igualmente grave.
Hacerlo es un esfuerzo perdido. Igualmente, el argumento de que el código no debe publicarse para que otros no lo usen “mal” tampoco es válido. Otros pueden usar mal sus matemáticas por igual, y todavía publicamos eso.
Si fuera por mí, iría aún más lejos y requeriría que esos códigos también hayan publicado casos de prueba y pruebas de que la versión utilizada en el documento los aprobó.
Además, necesitamos una progresión profesional adecuada para los académicos que codifican.
El código Covid-19 del Imperial College es posiblemente el peor código de producción que he visto. No digo esto a la ligera, he usado códigos de dinámica de fluidos con una herencia de la década de 1980.
Esto debería ser una llamada de atención para toda la academia, que necesita resolver las prácticas de codificación o, con razón, la gente comenzará a cuestionar los resultados.
Para la astronomía teórica, este es un problema anodino. Para la epidemiología, es, literalmente, letal.
https://www.mentealternativa.com/deficiente-e-ininteligible-el-codigo-fuente-del-modelo-computacional-pandemico-del-imperial-college/