12

最近、私は多くの FORTRAN 77 を扱っています。最初は懸念がありましたが、今ではこの言語の優れた特性をいくつか見ています。それは:

  • 簡単に習得できます (オブジェクト指向または関数型プログラミングの複雑さはありません)
  • 読みやすい
  • 数字計算で猛烈な速さ

これらの特質は、コンピューターに迅速に答えを与える方法を知りたいだけの、プログラマー以外のエンジニアや科学者にとって当然のことながら魅力的です。しかし、その年齢といくつかの基本的な仮定に基づいて、多くの制限があります。Fortran の新しいバージョンに追加された機能のいくつかを、プログラマー以外の人がどれほど簡単に理解できるかについても、私は懐疑的です。

FORTRAN と同じくらい簡単で、数学的なアプリケーションと同じくらい速く、制限の少ない最新の言語はありますか? または、答えは Fortran 90, 95, 2003 です。. . ?

4

12 に答える 12

17

または、Fortran 90、95、2003の答えです。。。?

はい。ほとんどのコンパイラでサポートされているFortran95は、探している言語です。ただし、Fortran 2003には、便利な可能性のあるいくつかの主要な機能拡張があります(OOPのサポートの観点からは不要です)。Fortran2003標準のコンパイラサポート

于 2010-08-23T17:09:10.953 に答える
10

ここでのコンセンサスが最新の Fortran のものであることに驚き、しぶしぶ同意します。

欠点が何であれ、Fortran は科学的プログラミングのために明示的に設計された唯一の言語です。科学的プログラミングは、たとえば Web サーバーよりも (行ごとに) 巧妙で (構造的に) 複雑ではなく、必要なツールが異なるだけです。たとえば、ガベージ コレクションは、主要なデータ構造が固定されている大規模な 2d/3d PDE を解くのに役立つことはほとんどありません。

第一級オブジェクトとしての多次元配列さえ持たないプログラミング言語は、科学的プログラミングのためにすぐに却下することができます。以上が C ベースの言語のすべてです。本質的に恐ろしく遅いプログラミング言語 (Java、私はあなたを見ています) は、すぐに却下することができます。プロプライエタリで数千ドルのライセンス料が必要なプログラミング言語 (Matlab) は、すぐに却下することができます。

Python および関連言語はプロトタイピングに適しており、プロットは簡単です。作業が完了したら、コンパイル済み言語で数値カーネルを記述して速度を上げることができます。しかし、これも実際の配列がないことに悩まされ (Numpy は優れていますが、それほど優れていません)、s..l..o..w です。

ところで、Numerical Recipes の本は絶対に読まないでください。それらはがらくたであり、彼らが売り込むアルゴリズムは時代遅れであり、コードは貧弱なものから間違ったものまでさまざまです。実際の数値アルゴリズムのコースを受講してください - オンラインで良いものがあります - または実際の数値アルゴリズムの本を購入してください - そして神への愛のために、本からコードを入力して線形代数などを行うのはやめてください。そこにある無数の本物のプロ品質のライブラリを使用してください。

于 2010-10-01T13:36:35.537 に答える
10

ええと、私は非プログラマー エンジニアです (それが何を意味するにせよ、それはコンピューター サイエンスの研究とあまり接触していないことを意味すると私は推測しています) そして ...

S. Lott の回答に対する JasonFruit のコメントに部分的に続きます。

はい、標準は F90 から 2003 までかなりの数の機能を追加しました。しかし、「問題」は、それをそのように呼ぶことができる場合 (より適切な言葉を考えたり、気にしたりすることはできません)、Fortran を使用する多くの人が知らないことです。必要な基本機能を保存します。ある意味で、それは祝福であり呪いでもあります。彼らはそれを学んだことも、本を読んだこともありません。その方法は確かにしばらくの間うまくいきます (多くの人が何世紀にもわたって行ってきたように、プログラムを単純に構成し、ある種の精神的規律を持っている場合、このアプローチは生涯/キャリア全体にわたって続く可能性があります)。その欠点を示すために。たとえば、comp.lang.fortran の最近の機能に関するいくつかの議論に従って、知識をテストしてみてください。

ですから、良い本を手に取ってください (多くの人が初心者に 3 つのうちの 1 つを勧めています。a) Chapman J. Stephen の b) メイン、または c) Metcalf、Reid、Cohen (「MRC 本」として知られています) - その後、多くの「よりあいまいな」機能は、より明確になるだけでなく、「明白」になります(ある意味では、これは本当に良い方法です-なぜ私はそのようにしたのですか...前に?)。

それはその質問を処理します。もう 1 つの問題は、間違いなく発生することですが、Fortran は現在学ぶ価値があるのでしょうか。(いつもそうです、これについて私を信じてください:)。これは何度も取り上げられているので、上記に関する私自身の投稿と、ここで言及されている他の言語のいくつかと比較したいくつかの問題に関する私の古い投稿(少し下にスクロールする必要があります) に移動します。 .

ほとんどの場合、ある意味でこれらすべての質問の原因である最後のことは、意見に重点を置いた Fortran に対する人々の意見です。一般的に言えば(このフォーラムを分析のかなり良いサンプルとして使用できます)、それはあまり良くないということです. [ このフォーラムで fortran とマークされた質問を 1 か月間たどれば、彼らが誰であるかがすぐにわかります。ところで、あなたの名前が頻繁に登場していることから判断すると、あなたはすぐにクラブのメンバーになりつつあります :) ]、ほとんどの人は無関心で、何人かは全くの無知からそれを嫌っています (F66 を今日の言語と比較することがよく使用されます)、独自の理由からいくつか。さて、それらを一般人口と比較すると、簡単に説明すると、結果は悪いものになるはずです.

しーっ、あぁぁぁぁぁぁぁぁぁぁ。

ああ、もう 1 つ - Fortran は、数学者ではなく、主にエンジニアを対象としています。これは、大規模なシステムを解決してから、pi を 10 万分の 1 まで計算するのに適しています。それがあなたの質問のタイプミスなのか、意図的なものなのかわかりません。純粋に数学的アプリケーション (数学者の古典的な意味で) の場合、私は (私がその分野の一部だった場合) おそらく Mathematica を選択するでしょうか? または Pascal (なぜ常に Pascal だったのかはわかりませんが、それらのチャップに非常に人気があるようです)。

于 2010-08-23T20:49:21.690 に答える
6

あなたの質問に対する最も直接的な答えについては、Idigasによって特定された警告とともに、 kemiistoの答えは正しいと思います。

そうは言っても、私の数値コードの多くがFTP、Web、グラフィックスに近いものなどと接触していることがわかりました。別の答えでMATLABが提案されているのを見てきましたが、Python(NumPyを使用)をどんどん作成し、速度が必要なときにFortranを呼び出しています。このようにシステム全体(たとえば、数値天気予報モデル全体)を作成することはほぼ確実ではありませんが、多くの点で両方の長所を活かすことができます。

于 2010-08-23T23:38:00.323 に答える
5

または、答えは Fortran 90, 95, 2003 です。. . ? はい。科学計算では、Fortran >=90 により FORTRAN 77 の制限が取り除かれます。割り当て可能な配列を使用して、動的にサイズ変更可能な配列を作成する方法を学びます。モジュールを使用してプロシージャと変数を整理する方法を学び、実引数と仮引数の間の自動整合性チェックを簡単に提供します。FORTRAN 77 から始めて、Fortran 90/95/2003 を徐々に学習し、便利と思われる機能を使用します。オブジェクト指向の機能を学ぶ必要はなく、言語のその部分を無視することができます。おそらくいつかそれが役立つようになるまでは。

Metcalf、Reid、Cohen の本をお勧めします。

于 2010-08-24T07:28:17.753 に答える
4

あなたはMATLABを見ているかもしれません。多くのエンジニアの学部生はそれを学んでいるので、プログラマーでない人にとっては簡単に理解できると思います。

あなたが筋金入りになりたいなら、Jを見てください。

于 2010-08-23T16:46:50.840 に答える
2

Fortran 95は、よりモダンに見え、Fortran 77 を大幅に拡張したものです。Fortran 2003 標準は、ほとんどのコンパイラで完全にはサポートされていません。Fortran の大きな利点は、すべての数学の問題 (根の発見、行列の乗算、固有値の問題など) に対して最適化されたサブルーチンがあることです。レガシー ライブラリについて言及した人もいますが、lapack は非常に強力な例の 1 つにすぎません。Fortran の主な欠点は、現実の世界で誰も使用していないことです。

最良の本は私の意見「科学者とエンジニアのための Fortran 90/95」です。

もちろん、他のすべての提案は有効ですが、Fortran は無料ですが、matlab は無料ではありません。

Pythonは無料で、Numpy や Scipy などの追加パッケージを通じて多くの科学アプリケーションをサポートしています。ただし、Python は数値パフォーマンスに関してはかなり遅いです。多くの計算能力を必要としない小規模なプロジェクトには、おそらく良いオプションです。構文は非常に理解しやすいです。

もちろん、 Cも無料のオプションであり、(常に更新されている) 科学ライブラリが多数利用可能です。ただし、可読性に関しては Fortran に勝るものはありません。Fortran は、ベクトルと配列を扱うように適切に設定されています。

C++は C のスーパーセットであるため、間違いなく選択肢の 1 つです。ただし、あなたが見ている問題にとっては複雑すぎるかもしれない言語です。科学的な C++ ライブラリの数はかなり限られています。周りにはいくつかありますが、Fortran バージョンに勝るものはありません (またはそれらの単なるラッパーです)。非常に大規模なプロジェクトにはおそらく非常に適したオプションですが、世界最速のコンピューターで実行される一部の非常に大規模なプログラムは Fortran で記述されています。C++ は、さまざまな実世界のアプリケーションで使用されているため、学ぶ価値があります。

もちろん、他の言語やツールもありますが、これらは科学分野で最も一般的に使用されていると思います。

于 2010-08-24T17:47:15.477 に答える
1

Fortranの使用に本当に興奮している場合は、FortranforMicrosoft.NETの使用を検討してください。このプロジェクトの背後にある考え方は、共通言語ランタイム(CLR)を介してマンガ化されたコード環境を利用しながらFortran言語を使用できるようにすることです。

于 2010-08-23T16:47:04.007 に答える
0

@ S.Lott:科学者などのFortranユーザーが、Fortranのすべての作業を切り替えてダンプしなければならないことを想像することはできません.....:SOPは新機能に関する入力を探しています...

OPへ:2003バージョンでFortranに加えられた変更の詳細を説明しているウィキペディアを読んだことがありますか?Cとの相互運用性が可能になるため、S.Lottには、おそらく少しずつ、いくつかのものを穏やかに移植するか、書き込むことが重要です。 Fortranモジュールを呼び出すためのCのラッパー?そのウィキペディアのページから引用します...

Cプログラミング言語との相互運用性。

于 2010-08-23T16:50:54.943 に答える
-1

習得が簡単(オブジェクト指向または関数型プログラミングの複雑さはありません)

読みやすい

数の計算で速く燃える

Cのように聞こえます。

Cで数値レシピを購入します。これは、すべてのベースを明確で読みやすいスタイルでほぼカバーしています。

http://www.amazon.com/Numerical-Recipes-Art-Scientific-Computing/dp/0521431085

于 2010-08-23T17:06:38.517 に答える
-2

特定の問題を解決するために書かれた小さな専用プログラムを検討していると思います。その場合、OO の複雑さが本当に気になる場合は、C# または Java アプリを作成し、OO は使用しません。Visual Basic も、最近ではかなり高速になっているはずです。

最近では、ほとんどすべてのコンパイル済み言語が数学的に高速になり、すべての操作は数学コプロセッサーで行われます。したがって、特に不足している言語が見つからない限り、「数学の速度」を気にする言語はあまりありません。

于 2010-08-23T17:01:39.660 に答える