Fortran es uno de esos lenguajes que —a pesar de no hablarse mucho de él— sigue muy activo, particularmente en lo que se refiere a aplicaciones científicas. Se ha escrito muchísimo software —para la ciencia— en Fortran, desde que se usaban tarjetas perforadas y por ello mismo tiene un importante nicho de mercado aunque en los medios sólo se hable de PHP, Python, Objective C y otros lenguajes más de moda.

Oracle decidió hace tiempo crear un Fortran de alto rendimiento, queriendo tal vez ser punta de lanza en el mercado científico, buscando hacerlo un sistema de alta productividad en cómputo (HPC – por sus siglas en inglés). El proyecto empezó como código abierto por Sun, al cual llamaron “Fortress” y que fue apoyado por DARPA (Defense Advanced Research Projects Agency) en los Estados Unidos. Sin embargo, ha enfrentado obstáculos técnicos demasiados complejos, de acuerdo a Guy Steele, quien ha estado seriamente involucrado con LISP y que ha escrito quizás la referencia más completa a la fecha al respecto este lenguaje. Actualmente Steele trabaja en el grupo Oracle Labs Programming Language Research Group.

Dice Steele en su blog:

“La idea detrás de Fortress fue desarrollar una mejor alternativa a Fortran para HPC. Muchos aspectos del diseño de Fortress fueron novedosos y aprendimos mucho al construir el intérprete y el conjunto inicial de bibliotecas”.

Explica Steele que los retos técnicos empezaron a surgir porque “se buscaba un tipo de sistema demasiado ambicioso” y no se había máquinas virtuales diseñadas para soportarlo. A partir de ahí el trabajo de Fortress se redujo gradualmente en los siguientes meses. La base del código se mantendrá ahora como código abierto, y el grupo responsable responderá las preguntas de quienes se interesen en este proyecto.

Steele, no obstante este revés, lista un número de aspectos en los que el equipo está muy contento, incluyendo el uso de generadores y reductores para organizar las colecciones de clases y su uso. Describió esta idea parecida al “map-reduce” de LISP pero siendo ésta más general aún. Se soporta paralelismo implícito, el cual se probó como un mecanismo efectivo para el paralelizar en cluster que comparten memoria.

Fortress usa también bloques anidados atómicos (hay que decir que la notación de Fortress está fuertemente influenciada por los anteriores trabajos de Steele, en particular LISP, que parece ser su “hijo consentido”), con soporte a memoria transaccional. El equipo cree que esta es una alternativa poderosa a las cerraduras para expresar la sincronización entre hilos de ejecución (threads) en un medio ambiente de memoria compartida.

Referencia: Fortress