Las demandas que ha puesto realmente ponen a Fortran en la parte superior de la lista, para problemas como este:
a) procesamiento de números
b) paralelable
c) era y sigue siendo el lenguaje de facto que se enseña fuera de los estudios de cs (para ingenieros que no son programadores profesionales).
d) tiene un increíble (!) respaldo de la industria, en cuanto a la cantidad de compiladores de grado de la industria, sin que ninguno de los proveedores muestre las menores señales de abandonar esa sucursal. No hace mucho, uno de los representantes de Intel reveló que las ventas de sus productos Fortran son más altas que cualquier otra en sus herramientas de desarrollo.
También es un lenguaje increíblemente fácil de aprender. No estoy de acuerdo en que lleve tiempo poner al día a los asistentes de investigación. Mi primer libro de texto no tenía más que, oh no sé, 30 (?) Páginas de texto impreso escaso. Es un lenguaje en el que después de aprender 10 palabras clave, uno puede escribir programas de tamaño mediano. Me atrevería a decir que esas 30 páginas escritas en texto predeterminado de Word serían un "manual de Fortran" más completo para la mayoría de los usuarios.
Si está interesado en CUDA, puede consultar el compilador de Portland Group , que lo admite . No estoy familiarizado con los detalles más finos, pero la gente generalmente habla de ello con elogios.
Además de eso, para los programas en paralelo, tiene disponibles OpenMP, MPI y ahora los próximos (y muy esperados) arreglos, que el compilador de Intel ha implementado recientemente . Para no desperdiciar palabras, Fortran tiene una gama muy fina de "bibliotecas" para paralelizar programas.
Las bibliotecas numéricas estándar de la industria se desarrollan principalmente, otros idiomas siguen más o menos en la cartera de funciones / rutinas.
Dicho todo esto, sin embargo (depende de cuándo se escribió originalmente) recomendaría si es, digamos, un código F77 o anterior, reescribiéndolo parcialmente a través del tiempo a dialectos más nuevos, al menos F90, si es posible con las funciones F2003. Recientemente se publicó un documento / tesis sobre ese tema (archivo PDF de tamaño medio más adelante). Eso no solo puede, si se hace correctamente, garantizar la portabilidad en múltiples plataformas, sino que también facilitará el mantenimiento futuro.
ps En cuanto al "mantenimiento futuro", solo una anécdota que a veces me gusta mencionar. Mientras escribía mi tesis, reutilicé un código de mi mentor, escrito hace 35 años desde el momento de la escritura. Se compiló con un solo error; falta una declaración al final, debido al error de copiar y pegar :)
@DaveMateer (responder al comentario) : voy a hacer un comentario a continuación, que puede ser un poco descortés, pero no lo tome de la manera incorrecta, ya que tiene buenas intenciones.
Me parece que estás abordando este "problema" de manera incorrecta. Lo que quiero decir en unos pocos puntos breves (porque es muy tarde aquí, y mi capacidad para inventar oraciones legibles (y mucho menos comprensibles) me deja después de las 10 p.m.)
a) mencionó que está tratando de minimizar el tiempo de codificación adicional, pero está considerando una reescritura de un lenguaje especializado en computación numérica a uno de una colorida selección de idiomas , si perdona mi expresión
- algunos de los cuales no tienen soporte para matrices multidimensionales, entre otras cosas
- la mayoría de ellos no son aptos para trabajos numéricos pesados (de las capacidades de procesamiento paralelo de Haskell y Hadoop, lo admito, no sé nada ... pero nunca los he escuchado mencionar en esos círculos)
- posiblemente ha sido probado, pero nunca he oído hablar de una reescritura de Fortran, un lenguaje para problemas discretos, a un lenguaje funcional
- recientemente ha habido una discusión sobre comp.lang.fortran (intente buscar en los grupos de Google) sobre los aspectos de la informática científica "en la nube"
(no quisiera desmotivarlo, pero para ser justos, nadie era realmente seguro de lo que ese término representa, menos solo tenía un ejemplo de una aplicación exitosa. La mayoría de la gente estuvo de acuerdo en que existe el potencial, pero hasta ahora están contentos de cómo funcionan las cosas por ahora). Muchos problemas tampoco son adecuados para ese tipo de paralelización.
b) ¿cuáles serían los costos de tal reescritura? personas / horas.
c) -correcciones correctas de las bibliotecas para compilar ...- es un problema en cualquier idioma, que no se puede evitar, lo mire como lo mire.
d) He oído hablar de Python (un lenguaje agradable realmente) utilizado en aplicaciones paralelas en algunas ocasiones, pero su penetración en ese mercado todavía no parece estar aumentando, y su naturaleza siempre cambiante lo convierte en una muy mala elección para un proyecto a largo plazo (piense en la compatibilidad con versiones anteriores). A algunas personas les gusta mucho como lenguaje de "pegamento".
Ugh, si pienso en algo más, lo agregaré mañana. Tengo que dormir un poco ...