¿Qué versión de Fortran debería aprender?


17

Soy un estudiante de Ingeniería Mecánica interesado en el campo de la ingeniería aeroespacial donde, según me han dicho, Fortran todavía se usa comúnmente.

¿Qué versión de Fortran debo invertir mi tiempo para aprender?


No merece una respuesta completa, pero vale la pena señalar que el soporte del compilador para las funciones más recientes de Fortran es muy escaso. Vea fortranwiki.org/fortran/show/Fortran+2003+status y fortranwiki.org/fortran/show/Fortran+2008+status . Comenzaría con 90/95 y avanzaría según sea necesario.
Doug Lipinski

Habiendo escrito algunas ideas sobre el tema, consulte stackoverflow.com/questions/953869/… stackoverflow.com/questions/3549702/… si puede ser de alguna utilidad. Además de lo anterior, recomendaría F90 y luego aprender las funciones, ya que las necesitará.
Torre

1
Tenga en cuenta que Matlab se origina en Fortran. Según sus comentarios, le recomendaría que evalúe esta opción.
Dennis Jaheruddin

2
¿Deberías incluso aprender Fortran completo? Esto podría estar dictado por la cantidad de código heredado que necesita usar, lo que también dictaría la versión de Fortran que debe aprender.
Damien el

Respuestas:


27

Es un nombre poco conocido popular que hay una "versión" de Fortran para conocer. Con raras excepciones, los últimos estándares (y compiladores) de Fortran conservan una excelente compatibilidad con los estándares anteriores. Esto es por una buena razón: no muchas personas usarían Fortran hoy si no fuera por las grandes cantidades de código heredado que todavía están en uso. Es decir, un código Fortran77 que cumpla con los estándares casi invariablemente seguirá funcionando con los últimos compiladores.

Debe aprender a usar la versión más moderna del idioma disponible. F2008 podría no haber agregado nada terrible útil para un principiante, pero la introducción de F2003 de conceptos orientados a objetos es definitivamente un gran problema. "Modern Fortran Explained" es un lugar decente para comenzar, y "Diseño de software científico: la forma orientada a objetos" también es bastante bueno para aprender a ponerlo en práctica.

Pragmáticamente, si va a trabajar en código heredado (por ejemplo, F77 o anterior), en algún momento tendrá que aprender algunas de las cosas que hicieron debido a la falta de características de F90 +. Por ejemplo, si está escribiendo código Fortran para algo, nunca debe usar lo que se llama un "bloque COMÚN", pero invariablemente verá que aparecen en el código F77 que podría tener que usar.

Nunca recomendaría que alguien comience a trabajar en Fortran sin al menos los conjuntos de características F90 / 95.

Dicho esto, si no está bien versado en programación en algún otro idioma, probablemente encuentre un consenso de que Fortran no es el mejor idioma para aprender como el primero, incluso si va después del sector aeroespacial. (Y lo digo como alguien en el sector aeroespacial que usa Fortran regularmente y lo tenía como mi primer idioma).


2
+1 "Nunca recomendaría que alguien comience a trabajar en Fortran sin al menos los conjuntos de funciones F90 / 95". . Secundo que. Comience con F90, aprenda todas las funciones básicas, practique algunos programas y luego
continúe con

Si no es Fortran, ¿qué idioma vale la pena aprender y será práctico de usar en ingeniería? ¿Cómo está Matlab? Lo necesito para un curso que tomaré el próximo semestre.
usuario26358

@ user26358 Python para programación de propósito general, tiene mucha tracción en la comunidad científica. R para análisis estadístico. MATLAB, Mathematica o Maple (lo que sea que esté usando su clase) para computación numérica. SQL para bases de datos relacionales. Javascript para material web y porque se está convirtiendo en la lengua franca. No me molestaría con Fortran hasta que uno de esos no pueda hacer el trabajo, no es un idioma agradable para aprender como el primero.
Schwern

@Aurelius, estoy de acuerdo con tu último párrafo. Creo que la forma correcta de aprender programación científica es exactamente lo contrario que experimenté: python-> C ++ y, en caso de que lo necesite, Fortran.
Nicola Cavallini

@ user26358 Matlab es bueno y probablemente lo usarás muchísimo en la escuela. Python es un buen lugar para comenzar con la programación de uso general, y sus módulos numpy / scipy pueden hacer la mayoría de las cosas que probablemente harás en Matlab, y es un buen lugar para aprender los fundamentos del software de escritura. Definitivamente, también debe tener al menos un lenguaje compilado en su haber; C ++ sería la opción más popular.
Aurelius

1

No estoy de acuerdo con los dos. C ++ y Python todavía no están tan optimizados como FORTRAN. Definitivamente estaría de acuerdo en que FORTRAN 90/95 es el mínimo. Sin embargo, siempre es útil usar otras versiones más modernas. El desafío con FORTRAN es que si lo aprende antes de aprender lenguajes orientados a objetos, es fácil de entender. Es mucho más difícil aprender si estás acostumbrado a pensar con objetos. Enseño la clase de supercomputación aquí y obligo a mis alumnos a usar FORTRAN. Los obliga a usar un tipo diferente de lógica en la programación. No les gusta porque no "piensa" como Python o C ++. Todo se reduce a lo que tiene la intención de hacer y cuánto importan la paralización y el rendimiento.


Bienvenido a SciComp.SE. Esto parece más una opinión que una pregunta para el sitio. Si considera que Fortran "[...] los obliga a usar un tipo diferente de lógica en la programación", debe elaborar el argumento y decirnos por qué es esto. Y también, ¿cuál es este "tipo de lógica" que mencionas?
nicoguaro

2
@tmwitten: ¿Se supone que esta respuesta es un comentario? Probablemente sea demasiado largo para ser un comentario, y fuera de contexto, se ve como un non sequitur (por ejemplo, C ++ y Python no se mencionan en la pregunta, "ambos" parecen referirse a Nicola y Aurelius).
Geoff Oxberry
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.