Fortranのどのバージョンを学ぶべきですか?


17

私は、航空宇宙工学の分野に興味のある機械工学の学生で、Fortranがまだ一般的に使用されていると言われています。

どのバージョンのFortranを学習するために時間を費やすべきですか?


完全に答える価値はありませんが、最新のFortran機能に対するコンパイラのサポートが大幅に不足していることは注目に値します 。fortranwiki.org/fortran/show/Fortran+2003+statusおよびfortranwiki.org/fortran/show/Fortran+2008+statusを参照してください。私は90/95から始め、必要に応じて前進します。
ダグリピンスキー

この件についていくつかの考えを書いた後、stackoverflow.com / questions / 953869 /…stackoverflow.com/questions/3549702/…を参照してください。上記とは別に、F90を推奨し、必要に応じて機能を学習します。
ルーク14年

1
MatlabはFortranに由来することに注意してください。コメントに基づいて、このオプションを評価することをお勧めします。
デニスジャヘルディン14年

2
Fortranを完全に学ぶ必要がありますか?これは、使用する必要があるレガシーコードの量によって決まる場合があります。これは、学習する必要があるFortranのバージョンも決まります。
ダミアン

回答:


27

知っておくべきFortranの「バージョン」があるというのは、一般的な誤称です。まれな例外を除き、最新のFortran標準(およびコンパイラー)は、古い標準との優れた後方互換性を保持しています。これには十分な理由があります。現在使用されている大量のレガシーコードがなければ、Fortranを今日使用する人はあまりいません。つまり、標準に準拠したFortran77コードは、ほとんど常に最新のコンパイラーで動作します。

使用可能な言語の最新バージョンを使用することを学ぶ必要があります。F2008は初心者にとって恐ろしい有用なものを何も追加しなかったかもしれませんが、F2003のオブジェクト指向の概念の導入は間違いなく大したことです。「Modern Fortran Explained」は開始するのにふさわしい場所であり、「科学的ソフトウェア設計:オブジェクト指向の方法」は実際にそれを実践することを学ぶのにかなり良いです。

実際には、レガシーコード(たとえばF77以前)で作業する場合、ある時点でF90 +機能が不足しているためにそれらが行ったことのいくつかを学ぶ必要があります。たとえば、何かのためにFortranコードを書いている場合、「COMMONブロック」と呼ばれるものは決して使用すべきではありませんが、使用する必要のあるF77コードでそれらが必ず表示されます。

少なくともF90 / 95の機能セットがなければ、Fortranで作業を始めることはお勧めしません。

ただし、他の言語でのプログラミングに精通していない場合は、航空宇宙を追いかけても、Fortranは最初に学ぶのに最適な言語ではないというコンセンサスを見つけるでしょう。(そして、Fortranを定期的に使用し、それを私の第一言語として使用した航空宇宙の誰かとして)


2
+1 「少なくともF90 / 95機能セットがなければ、Fortranで作業を開始することはお勧めしません。」。同感です。F90でスタート、すべての基本的な機能を学習し、いくつかのプログラムを練習し、より多くの最近のリリースに以降移動
Tymric

Fortranではない場合、どの言語が学習する価値があり、エンジニアリングでの使用に実用的ですか?Matlabはどうですか?来学期のコースに必要です。
user26358 14年

@ user26358汎用プログラミング用のPythonは、科学コミュニティで多くの注目を集めています。統計分析のためのR。数値計算用のMATLAB、MathematicaまたはMaple(クラスが使用しているものは何でも)。リレーショナルデータベースのSQL。Web向けのJavascript。これは共通語になりつつあるためです。Fortranを気にすることはありません。そのうちの1つが仕事を終わらせることができるまで、Fortranを最初に学ぶのは楽しい言語ではありません。
シュヴェルン14年

@Aurelius、あなたの最後の段落に同意します。科学的プログラミングを学ぶ正しい方法は、私が経験した正反対であると信じています:python-> C ++と、必要な場合はFortran。
ニコラカヴァ

@ user26358 Matlabは優れており、おそらく学校で大いに使用するでしょう。Pythonは汎用プログラミングから始めるのに適した場所であり、numpy / scipyモジュールはMatlabでおそらく行うことのほとんどを行うことができ、ソフトウェア作成の基礎を学ぶのに適した場所です。また、少なくとも1つのコンパイル済み言語を確実に使用する必要があります。C ++が最も一般的な選択肢です。
アウレリウス

1

私はあなたの両方に同意しません。C ++とPythonは、まだFORTRANほど最適化されていません。FORTRAN 90/95が最小であることに間違いなく同意します。ただし、他のより新しいバージョンを使用することは常に役立ちます。FORTRANの課題は、オブジェクト指向言語を学習する前に学習すれば理解しやすいことです。オブジェクトについて考えることに慣れているかどうかを学ぶことははるかに困難です。ここでスーパーコンピューティングクラスを教え、学生にFORTRANの使用を強制します。プログラミングで異なる種類のロジックを使用するように強制します。PythonやC ++のように「考えていない」ので、彼らはそれを好まない。それはすべて、本当にあなたが何をしようとしているのか、そしてどの程度の視差とパフォーマンスが重要なのかということです。


SciComp.SEへようこそ。これは、サイトに対する質問というよりも意見のように見えます。Fortranが「[...]プログラミングで異なる種類のロジックを使用することを強制する」と考える場合は、引数を詳しく説明し、その理由を教えてください。また、あなたが言及するこの「一種のロジック」とは何ですか。
ニコグアロ

2
@tmwitten:この回答はコメントであるはずですか?コメントになるにはおそらく長すぎて、文脈からすれば非セクトゥールのように見えます(たとえば、C ++とPythonは質問で言及されていません。「あなたの両方」はニコラとアウレリウスを指すようです)
ジェフオックスベリー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.