significado programacion lenguaje ejemplos descargar fortran

programacion - ¿Por qué se usa fortran para la informática científica?



lenguaje cobol (5)

He leído que Fortran todavía se usa mucho para la informática científica. Para código ya fuertemente invertido en Fortran, esto tiene sentido para mí.

¿Pero hay alguna razón para utilizar Fortran en lugar de otros idiomas modernos para un nuevo proyecto? ¿Hay decisiones de diseño de lenguaje en Fortran que lo hacen mucho más adecuado para la informática científica en comparación con los idiomas más populares (C ++, Java, Python, Ruby, etc.)? Por ejemplo, ¿existen características de lenguaje específicas de Fortran que tal vez permitan la optimización numérica en compiladores en un grado mucho más alto en comparación con otros lenguajes que mencioné?


La razón principal para mí es la buena notación de matriz y muchas otras decisiones de diseño que facilitan la escritura y la depuración del código científico. El hecho de que generalmente es la mejor opción en términos de rendimiento en las tareas relevantes (operaciones de matriz) tampoco duele :)

Honestamente, no consideraría la mayoría de los idiomas citados como competidores reales para Fortran: Java y Ruby están muy, muy atrás en términos de comodidad y rendimiento, mientras que C ++ es un lenguaje demasiado complejo y complicado para recomendar a cualquiera cuyo trabajo principal durante los últimos años ha sido algo más que la programación diaria en C ++. Sin embargo, Python con numpy podría ser una opción. Personalmente no soy un gran admirador del idioma, pero conozco a varias personas que usan Numpy regularmente y parecen bastante felices con él.

La competencia real que veo no es de estos, sino de Matlab, R, y otros idiomas similares, que ofrecen una comodidad similar, combinada con muchas bibliotecas estándar. Afortunadamente, generalmente es posible iniciar un proyecto en R o Matlab y escribir partes críticas para el rendimiento en Fortran más adelante.


Según tengo entendido, hay bibliotecas que son algunas de las implementaciones más eficientes de sus algoritmos disponibles, lo que hace que Fortran sea popular para este tipo de trabajo a pesar de las limitaciones del idioma.


Una razón es cómo se construyeron las matrices. Son columnas principales, a diferencia de la mayoría de los otros idiomas. Esto proporciona un cálculo más rápido para sus cálculos.


Fortran es, para bien o para mal, el único lenguaje principal diseñado específicamente para computación numérica científica. Su manejo de matrices es agradable, con operaciones de matriz sucinta tanto en arreglos enteros como en cortes, comparables con matlab o numpy pero súper rápidos. El lenguaje está cuidadosamente diseñado para que sea muy difícil escribir código lento accidentalmente, los punteros están restringidos de tal manera que es inmediatamente obvio si puede haber aliasing, como el ejemplo estándar, y así el optimizador puede ir a la ciudad en su código. Las encarnaciones actuales tienen cosas como coarray fortran, y son simultáneas y están integradas en el lenguaje, permitiendo la memoria distribuida y el paralelismo de memoria compartida, y la vectorización.

Las desventajas de Fortran son principalmente la otra cara de una de las ventajas mencionadas; Fortran tiene una gran historia larga. Upside: toneladas de grandes bibliotecas. Desventajas: toneladas de equipaje histórico.

Si tiene que hacer un gran número de crujidos numéricos, Fortran sigue siendo una de las principales opciones, por lo que muchos de los códigos de simulación más sofisticados que se ejecutan en los centros de supercomputación de todo el mundo están escritos en él. Pero, por supuesto, sería un lenguaje terrible, terrible, escribir un navegador web. Para cada tarea, su herramienta.


Pocos proyectos son proyectos completamente nuevos. No estoy seguro de que sea específico de la informática científica, pero al menos en este campo, tiende a construir sus aplicaciones en base a modelos (científicos) existentes, tal vez producidos por otros grupos / personas. Siempre tendrá que lidiar con cierta cantidad de código heredado, lo quiera o no.

Fortran es lo que muchos científicos han aprendido y muchas de las bibliotecas que necesitan están implementadas. Algunos de ellos podrían no ser científicos informáticos o personas de TI, sino más científicos computacionales . Su objetivo principal rara vez es la informática, es su ciencia primero. Si bien una gran cantidad de programadores tendrían la tendencia de aprender un nuevo lenguaje o marco de programación cada vez que tengan la oportunidad (incluso durante su tiempo libre), la mayoría de los científicos usarían ese tiempo para explorar nuevas ideas sobre su ciencia.

Un experto en dominio que esté entrenado en Fortran (o en cualquier otro idioma) y rodeado de personas que se encuentren en una situación similar no tendrá ningún incentivo para alejarse de él. No es solo que ahora otros idiomas pueden ser tan buenos como Fortran en términos de rendimiento, necesitan ser mucho mejores: debe haber una buena razón para alejarse de lo que tienes y sabes.

También es un círculo "vicioso" hasta cierto punto. Siempre he encontrado que las comparaciones entre Java y Fortran son un poco difíciles, simplemente porque una serie de aplicaciones científicas de Java no están programadas de una manera Java. Algunas de las aplicaciones de referencia de Java Grande se ven claramente como programas Fortran convertidos en programas C, copiados / pegados / ajustados en programas Java (en un método, pasando la longitud de la matriz como un parámetro adicional al lado de la matriz da una pista, si Lo recuerdo bien). Debido a esto, Java (por ejemplo) no tiene una gran reputación en la comunidad científica, a pesar de que su desempeño está mejorando . Una consecuencia de esto es que existe poca superposición entre los expertos de HPC y los expertos de Java, por ejemplo. Incluso desde los proveedores de hardware o implementadores de bibliotecas, la poca demanda de los usuarios da lugar a que se ofrezca poco soporte, lo que a su vez disuade a los usuarios que podrían estar interesados ​​en trasladarse a otros idiomas.

Tenga en cuenta que esto no impide que los mismos (u otros) científicos utilicen otros lenguajes para otros fines (por ejemplo, gestión del flujo de trabajo, gestión de datos, modelado más rápido con Matlab, Numpy, ...).