Qual versão do Fortran devo aprender?

17

Sou um estudante de Engenharia Mecânica interessado no campo da engenharia aeroespacial, onde me disseram que o Fortran ainda é comumente usado.

Qual versão do Fortran devo investir meu tempo para aprender?

user26358
fonte
Não vale a pena uma resposta completa, mas é importante notar que o apoio do compilador para a mais recente Fortran apresenta é severamente falta. Veja fortranwiki.org/fortran/show/Fortran+2003+status e fortranwiki.org/fortran/show/Fortran+2008+status. Eu começaria com 90/95 e seguiria adiante conforme necessário.
precisa
Depois de escrever algumas idéias sobre o assunto, consulte stackoverflow.com/questions/953869/… stackoverflow.com/questions/3549702/… se puder ser útil. Além do exposto, eu recomendaria o F90 e depois aprenderá os recursos, conforme necessário.
Rook
11
Observe que o Matlab é originário do Fortran. Com base nos seus comentários, eu recomendaria que você avaliasse esta opção.
Dennis Jaheruddin
2
Você deveria aprender Fortran ponto final? Isso pode ser determinado pela quantidade de código legado que você precisa usar - o que também ditaria a versão do Fortran que você deve aprender.
Damien

Respostas:

27

É um pouco inadequado de dizer que existe uma "versão" do Fortran. Com raras exceções, os padrões (e compiladores) mais recentes da Fortran mantêm excelente compatibilidade com os padrões mais antigos. Isso é por uma boa razão: poucas pessoas usariam o Fortran hoje se não fosse pelas grandes quantidades de código legado ainda em uso. Ou seja, um código Fortran77 compatível com os padrões quase sempre funcionará com os compiladores mais recentes.

Você deve aprender a usar a versão mais moderna do idioma disponível. O F2008 pode não ter acrescentado nada de terrível para um iniciante, mas a introdução de conceitos orientados a objetos do F2003 é definitivamente um grande negócio. "Modern Fortran Explained" é um lugar decente para começar, e "Design de Software Científico: O Caminho Orientado a Objetos" também é muito bom para realmente aprender a colocá-lo em prática.

Pragmaticamente, se você estiver trabalhando no código legado (por exemplo, F77 ou anterior), em algum momento precisará aprender algumas das coisas que eles fizeram devido à falta de recursos do F90 +. Por exemplo, se você estiver escrevendo o código Fortran para alguma coisa, nunca deve usar o que é chamado de "bloco COMUM", mas sempre verá eles aparecerem no código F77 que talvez precise ser usado.

Eu nunca recomendaria que alguém começasse a trabalhar no Fortran sem, no mínimo, os conjuntos de recursos do F90 / 95.

Dito isto, se você não é bem versado em programação em algum outro idioma, provavelmente encontrará um consenso de que o Fortran não é o melhor idioma para aprender como o primeiro, mesmo se estiver indo atrás do setor aeroespacial. (E eu digo isso como alguém no setor aeroespacial que usa o Fortran regularmente e o tinha como meu primeiro idioma).

Aurelius
fonte
2
+1 "Eu nunca recomendaria que alguém começasse a trabalhar no Fortran sem, no mínimo, os conjuntos de recursos do F90 / 95." . Eu concordo. Comece com o F90, aprenda todos os recursos básicos, pratique alguns programas e avance para versões mais recentes
Tymric
SE não Fortran, que idioma vale a pena aprender e será prático de usar em engenharia? Como está o Matlab? Preciso disso para um curso que vou fazer no próximo semestre.
user26358
@ user26358 Python para programação de uso geral, possui muita tração na comunidade científica. R para análise estatística. MATLAB, Mathematica ou Maple (seja qual for a sua classe) para computação numérica. SQL para bancos de dados relacionais. Javascript para coisas da web e porque está se tornando a língua franca. Eu não me incomodaria com o Fortran até que um deles não consiga fazer o trabalho, não é um idioma agradável para aprender como o primeiro.
Schwern 12/11/14
@Aurelius, concordo com o seu último parágrafo. Acredito que o caminho certo para aprender programação científica é exatamente o oposto que experimentei: python-> C ++ e, caso você precise, o Fortran.
Nicola Cavallini
@ user26358 O Matlab é bom e você provavelmente o usará muito na escola. O Python é um bom lugar para começar com a programação de uso geral, e seus módulos numpy / scipy podem fazer a maioria das coisas que você provavelmente fará no Matlab, e é um bom lugar para aprender os fundamentos da escrita de software. Definitivamente, você também deve ter pelo menos um idioma compilado; C ++ seria a escolha mais popular.
Aurelius
1

Eu discordo de vocês dois. C ++ e Python ainda não são tão otimizados quanto o FORTRAN. Eu definitivamente concordaria que o FORTRAN 90/95 é o mínimo. No entanto, é sempre útil usar outras versões mais modernas. O desafio do FORTRAN é que, se você aprender antes de aprender linguagens orientadas a objetos, é fácil entender. É muito mais difícil aprender se você está acostumado a pensar com objetos. Dou aulas de supercomputação aqui e forço meus alunos a usar FORTRAN. Isso os força a usar um tipo diferente de lógica na programação. Eles não gostam porque não "pensam" como Python ou C ++. Tudo se resume ao que você pretende fazer e ao quanto a paralização e o desempenho são importantes.

tmwitten
fonte
Bem-vindo ao SciComp.SE. Isso parece mais uma opinião do que uma pergunta para o site. Se você considerar que o Fortran "[...] os obriga a usar um tipo diferente de lógica na programação", elabore o argumento e diga-nos por que isso acontece. E também, qual é esse "tipo de lógica" que você menciona.
nicoguaro
2
@tmwitten: Esta resposta deveria ser um comentário? Provavelmente é muito tempo para ser um comentário, e fora do contexto, parece um non sequitur (por exemplo, C ++ e Python não são mencionados na pergunta, "vocês dois" parecem se referir a Nicola e Aurelius).
Geoff Oxberry