Me preguntaba cuál es la mejor manera de aprender a programar en Fortran.
He estado buscando libros, los ejemplos que me parecieron bien fueron "Explicado Fortran 95/2003" y "Fortran para científicos e ingenieros" .
No sé qué piensan ustedes de esto.
Otra cosa que me pregunto es qué compilador debo usar. Trabajo en una máquina con Windows 7 (64 bits).
¡Espero que me puedan ayudar en esto!
Entonces, por mi experiencia con la programación:
- Matlab y maple fueron amables en mis primeras introducciones en el mundo de la programación. Matlab es un programa en el que en realidad soy bastante bueno, me acostumbré a trabajar con bucles y cómo combinarlos para hacer programas más eficientes. Maple está más en la fase básica (sé cómo buscar la solución para integrales simples, etc.).
- Un año después recibimos una introducción a C ++ en Visual Basic. El profesor en realidad fue rápido en este caso, después de 2 meses ya estábamos discutiendo consejos y herencia. Puedo escribir programas simples en este idioma, solo trabajar con clases es algo que sigue siendo una dificultad, pero creo que es solo una cuestión de práctica.
- Y un año después, necesitaba aprender Mathematica 8, en el que también me estoy volviendo muy bueno hoy en día.
Así que tengo un poco de experiencia en programación, ¡pero no diré que es una cantidad increíble!
La razón por la que quiero aprender Fortran se debe principalmente a que no puedes hacer física teórica por sí solo, debes probar tus teorías y para eso necesitarás poder escribir programas que puedan probar esas teorías numéricamente. Escuché que Fortran es un tipo de lenguaje poco útil cuando se trata de matemáticas numéricas, así que creo que sería útil conocer este idioma.
PD: ¿cuál es la diferencia entre Fortran95 y Fortran 2003?
Respuestas:
Voy a la segunda recomendación de stali del libro de Chapman. Aprendí del libro Fortran 90 de Chapman, y fue muy útil. Te enseñará el idioma Fortran. No le enseñará sobre buenos flujos de trabajo para la programación, y para eso, debe buscar en otro lado después de haber aprendido algo de Fortran y haber programado un poco.
La mayoría de los recursos en línea para ayudarlo con la programación de Fortran estarán basados en Linux. Del mismo modo, en ciencia computacional, la mayoría de los materiales escritos se orientarán a los usuarios de Linux. Por esa razón, le recomiendo que instale VirtualBox (o algún tipo de software que le permita ejecutar sistemas operativos virtuales) y luego instale alguna distribución de Linux allí. Si nunca antes ha usado Linux, una distribución fácil de usar como Ubuntu, Mint o Fedora probablemente sea su mejor opción. Estas distribuciones requieren una cantidad mínima de configuración si se ejecutan en un entorno virtual y tienen una buena GUI para ayudarlo a navegar por el sistema operativo. Cada una de estas distribuciones tiene un administrador de paquetes que puede usar para instalar algún software adicional. Usando el administrador de paquetes, puede instalar gfortran.
Querrá desarrollar software en un editor de texto (o un IDE), por lo que probablemente valga la pena aprender los conceptos básicos de la línea de comandos. La carpintería de software tiene buenos recursos para esta tarea. (Descargo de responsabilidad: he enseñado parte de un taller para Carpintería de software). Entonces debería poder seguir aprendiendo a escribir programas simples y compilarlos en la línea de comandos, y luego aprender a usar Makefile.
El problema con hacer cualquier cosa basada en Windows es que la mayoría de los materiales en línea que verá al hacer ciencia computacional van a suponer que está usando Linux, y el consejo (si fue bueno para empezar) se romperá abajo, y te cuesta tiempo. Cygwin es una capa de API que agrega más funcionalidades similares a Linux, pero la correspondencia con Linux no es perfecta, y el software compilado para Linux no funcionará en su máquina; aún necesitará obtener versiones nativas de Windows o volver a compilar el software para Windows. Un compilador de Fortran nativo de Windows como Visual Fortran costará dinero, y todavía tendrá el problema de que la mayoría de los usuarios de Fortran y los científicos computacionales usan Linux para su desarrollo de software, lo que significa que tendrá que avanzar en su propio. Sin embargo, si realmente necesitasdistribuir software basado en Windows por alguna razón, entonces tiene sentido hacer todo el esfuerzo para descubrir cómo usar algo como Visual Fortran.
fuente
Creo que el libro de Metcalfe es una buena guía anotada de las características modernas de Fortran, muy útil si ya conoce una versión anterior del idioma pero no es una buena introducción a la programación en el idioma.
Por mi dinero, el libro Chiver's y Sleightholme y el libro Brainerd son lo suficientemente buenos, aunque no creo que ninguno sea tan bueno como el libro de Ellis et al que, desafortunadamente, no se ha actualizado para Fortran 2003 o posterior.
Tengo una fuerte aversión al libro de Chapman. No recuerdo por qué no me gustó tanto la edición 90/95, así que ya no puedo justificar esta aversión, puedes descartarla como un prejuicio.
Pero el único libro que recomiendo sin dudarlo es el libro de Arjen Markus . Probablemente no sea una introducción ideal para alguien que todavía está tratando de descubrir las características básicas del lenguaje, pero una vez que las domine, vale la pena su peso en alguna sustancia valiosa.
En cuanto a qué compilador usar, utilizo el compilador Intel y, en general, estoy contento con él. Se integra con Visual Studio, que puede ser importante para usted. El compilador NAG tiene mejores mensajes de error y advertencia pero produce ejecutables más lentos (generalmente y su experiencia puede diferir). El compilador de gfortran es gratuito y recibe buenas críticas, pero no lo uso. Si quieres saber más, Polyhedron te lo dirá.
fuente
Para los libros, recomiendo "Modern Fortran Explained" de Metcalf / Reid / Cohen. Es más una referencia que un libro de texto, pero le servirá bien si ya tuvo alguna exposición a la programación en general (con digamos C).
Además de ese libro, recomiendo el sitio web de Ondřej Čertík http://fortran90.org/ . En primer lugar, no le enseñará Fortran, pero le proporcionará un conjunto de mejores prácticas. Fortran permite varias formas de programación: después de todo, es compatible con versiones anteriores. Las mejores prácticas que se ofrecen allí lo ayudarán a desarrollar un estilo Fortran moderno y consistente. Además, las preguntas frecuentes encontradas allí serán de su interés.
fuente
El libro de Chapmans creo que es más amigable para los novatos y una buena referencia. Los autores del segundo son todos expertos, pero creo que el libro será una buena adición a su biblioteca en una etapa posterior.
Para comenzar, te sugiero que te quedes con Fortran 95 y luego (si es necesario) te mudes a Fortran 2003. Fortran 95 es fácil de aprender (casi como Matlab) y serás productivo muy rápidamente.
En Linux tiene una serie de compiladores Fortran gratuitos (GNU, Solaris Studio, Open64, etc.) además de un conjunto más rico de herramientas, por ejemplo, valgrind, gdb, gnuplot, (para visualización rápida), svn / hg, etc. Instalación adicional de paquetes precompilados que incluyen bibliotecas numéricas (blas / lapack / netcdf / fftw, etc.) están a un comando de distancia (al menos en Debian con apt-get).
En Windows, podría ser mejor con cygwin, ya que le brinda un acceso fácil y rápido a algunas de las herramientas / bibliotecas anteriores, además del compilador GNU Fortran. Entonces sí, vaya a cygwin.com e instale el paquete principal junto con gfortran y un editor de elección (vim es bueno). Eso debería ser un buen comienzo. Más tarde, si tiene algo más, sugeriría usar el paquete apt-cyg para instalar cosas.
fuente