¡Bienvenid@s!

22/2/11 - DJ:

El software astronómico es un agujero negro

T.E.L: 5 min. 27 seg.


Los científicos en general, no sólo los astrónomos, deben desarrollar programas cada vez más complejos para los cuales no estarían debidamente preparados, según apuntan diferentes trabajos al respecto.
SoftAstro


El tema no es nuevo. El escándalo del clima, a veces llamado climategate, dio pie a esta discusión. Algunos de los mails del caso daban cuenta de las dificultades de algunos científicos con el software.
Los problemas parecen ser varios y no necesariamente que los programas científicos no sirvan, pero sí que estén mal documentados (o nada), que no sean fáciles de operar por no expertos o sencillamente que luego de una publicación queden en el olvido o se eliminen.
Por otra parte, se señala que, en el caso particular de los astrónomos, lo que saben de programación lo aprenden por su cuenta, a medida que las necesidades aparecen y son concientes de que sus habilidades para programar son malas.
El año pasado Nature publicó un artículo al respecto por el escritor freelance Zeeya Merali. Allí señala que "como regla general, los investigadores no prueban o documentan sus programas rigurosamente y raramente liberan sus códigos, haciendo casi imposible reproducir y verificar los resultados publicados generados por software científico".
Por supuesto, un tema no menor es la pérdida de tiempo y el dolor de cabeza que genera en los astrónomos tener que lidiar con asuntos cada vez más complejos.
En aquel artículo se cita a Greg Wilson, líder de Software Carpentry, un sitio web con materiales educativos sobre diseño y construcción de software pensado para científicos. Señala Wilson que se percató del problema en la década de 1980, pero en 2008 quiso saber cuán extendido estaba el asunto y junto con algunos colegas suyos condujo una encuesta online de casi 2.000 investigadores, desde estudiantes a seniors, que trabajaban con computadoras en algún área de ciencias.
Algunos de los resultados fueron que el 45% dijo que "perdían" más tiempo hoy desarrollando que hace cinco años. El 38% indicó que dedicaban al menos una quinta parte de su tiempo al desarrollo de software.
Pero sólo el 34% pensaban que un entrenamiento formal en programación era importante.

Extracto de un video presentación de Software Carpentry


Otro paper al respecto se dio a conocer para la reunión ADASS-XX, escrito por Igor Chilingarian e Ivan Zolotukhin del Instituto Astronómico Sternberg en Moscú (arXiv:1012.4119v1 [astro-ph.IM]).
En la actualidad, comienzan diciendo, los instrumentos astronómicos y grandes relevamientos producen flujos de datos que crecen exponencialmente en el tiempo. El poder de CPU requerido para analizar esos datos también va creciendo a la par de la Ley de Moore y lo mismo ocurre con el almacenamiento. Sin embargo, en astronomía no vemos la exponencial avalancha de resultados producidos por este poder computacional. Esto sugiere la presencia de un cuello de botella en el ciclo: si consideramos un sistema con tres módulos A, B, C tal que A está conectado a C vía B, luego optimizar características en el módulo A o C no producirán un cambio en la performance del sistema hasta que se solucionen los problemas de B.
¿Dónde está el verdadero cuello de botella de la computación científica? Los astrónomos, como muchos otros científicos, prefieren desarrollar sus propios códigos y sistemas (incluyendo soluciones de bases de datos) ellos mismos, usualmente sin tener las habilidades requeridas en algoritmos y ciencia computacional.

Aquí también se señalan algunas de las falencias del software científico, en relación a la documentación, el repetido uso de GOTO cada 10-20 líneas, nombres de variables que no siguen ninguna convención, código ilegible, sin indentación (sangrado), etc, pero destacan que, al final, el programa cumple con su función.

En este trabajo también se señala algo que es conocido y controvertido en el mundo del desarrollo: se diferencian lenguajes "verdaderos", de los que no lo son. C, C++, Java vs Fortran o IDL.
Se indica también que los ingenieros en IT, sin embargo, suelen no entender los principios físicos detrás de un algoritmo o una característica particular de la instrumentación, por lo que se producen errores o bugs como los de tipo aritmético, errores de varios órdenes de magnitud porque para un ingeniero/a de software "es sólo un número".

GOTOGOTO. Crédito: XKCD


El peor ejemplo, según los rusos, en las soluciones de software son las bases de datos desarrolladas por los investigadores.

Más allá de las afirmaciones generalizadas, dan algunos malos y buenos ejemplos, sin citar las correspondientes referencias para los primeros:

Un mal ejemplo: Un proyecto muy interesante científicamente y reconocido en la comunidad, pero...
-No tiene interfaz de acceso en la web
-Los datos son distribuidos como un conjunto de docenas de tablas FITS con un volumen total mayor a 10 Gb y rutinas de acceso IDL para realizar queries en las tablas.
-Es necesario bajar casi todo para estudiar un conjunto de objetos y eso requiere mucha memoria, etc.

Otro mal ejemplo:
Una administración de Base de datos e interfaz de ingestión tiene una función con más de 250 argumentos.
Para borrar un registro de una tabla en un script de restauración, en vez de:
DELETE FROM table1 WHERE field1=value1, los autores hacen:
pg dump -t table1 mydb | grep -v value1 | pg restore -c mydb

También señalan buenos ejemplos como el Archivo del Legado de Hubble, GalexView, SDSS CasJobs, la simulación Millenium, GalMer.

GalexView


A propósito de GalMer: es una base con acceso a simulaciones numéricas de interacciones de galaxias. ¿No había un proyecto así en Argentina hace un par de años?

Otros buenos ejemplos señalados son GADGET-2 de Volker Springel, un código de simulación cosmológica, CDS Aladin y SAOImage DS9.

La conclusión del paper es que los buenos ejemplos parecen haber sido desarrollados por astrónomos profesionales con un fuerte conocimiento de fondo en IT o por profesionales de ese ramo que trabajaron cercanamente con astrónomos durante años.
Una posible solución, según los autores rusos, es cambiar el paradigma de la educación para estudiantes de astronomía.

Cuando yo estudiaba para analista de sistemas, nos quejábamos de que nos enseñaran C y C++. Aprendíamos poco igualmente, pero así y todo, queríamos que nos enseñaran programas "más usados" como Java o C#.

Digo esto porque sería importante consultar a los propios estudiantes, a los más avanzados al menos, a los becarios, pero su punto de vista será subjetivo, atado a ideas que no siempre serán las mejores. Los propios investigadores, esos que producen varios papers y trabajan más fuertemente con algoritmos, deberían ser escuchados, junto con el consejo de los profesores y profesionales de IT.

Sin embargo, no tengo una idea clara de cuál es el panorama en Argentina y mucho menos en Iberoamérica.
También se me ocurre que es posible, desconozco si hay alguna estadística al respecto, que los estudiantes que aprueban el ingreso a astronomía no surjan de cualquier lado. Es probable, quizás sea un prejuicio de mi parte, que no sea menor la participación en astronomía en La Plata de estudiantes del Colegio Nacional o el Carlos Pellegrini, donde también estudian y hacen software.
Y las costumbres, buenas y malas, quedan para toda la vida. Es difícil aprender un lenguaje nuevo si ya se maneja uno bastante bien (en ese sentido pedirle a quienes usan Fortran o IDL que dejen de usarlos y pasen a C++ es casi utópico), pero es mucho más difícil quitarse las malas mañas como algunas de las antes señaladas.

A propósito de estadísticas de astronomía argentina, la lista de socios de la AAA parece estar alojada en una base de La Plata...a la que no se puede acceder. Así y todo, es posible hacer alguna estimación de la cantidad de astrónomos/as profesionales del país, teniendo en cuenta que los que figuran en IAU son unos 130. Habría que sumarle algo más por nuevos doctorados, los que no están afiliados a IAU y si le agregamos becarios que aunque todavía aprenden ya están haciendo astronomía, ¿serán 200?

Quizás, si el panorama en el país es similar al del resto del mundo, no sería tan difícil buscar soluciones a través de talleres, seminarios, etc.

Eso sí, la solución debería ser
{una secuencia de pasos finitos, definidos y ordenados};

Aprender a cocinarAprender a cocinar. Crédito: XKCD


Fuentes y links relacionados



Sobre las imágenes

  • La imagen inicial contiene un fondo de la Nebulosa Dumbbell, M27. Crédito: HubbleSite. También posee una imagen de una aplicación para calcular la oblicuidad de la eclíptica, de J. Laskar.
  • Captura de pantalla de GalexView.
  • Las tiras cómicas son de XKCD, tomadas de su versión XKCD Español.


Etiquetas:
-

No hay comentarios.:

Publicar un comentario

Anillo astronómico

Anillo Astronómico
[ Únete | Listado | Al azar | <<> | Siguiente >> ]