質問

私は最近、多くのFortran 77と一緒に仕事をしてきましたが、最初は予約をしていましたが、今では言語の素晴らしい資質があります。そうです:

  • 学習が簡単です(オブジェクト指向または機能的プログラミングの合併症はありません)
  • 読みやすい
  • ナンバークランチで速く燃える

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

Fortranと同じくらい簡単で、数学的アプリケーションと同じくらい速く、限られていない現代の言語はありますか?または、回答はFortran 90、95、2003です。 。 。 ?

役に立ちましたか?

解決

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

はい。ほとんどのコンパイラによってサポートされているFortran 95は、あなたが探している言語です。ただし、Fortran 2003には、OOPの視点のサポートから不要なものに加えて、いくつかの主要な機能強化がありますが、これは役立ちます。 Fortran 2003標準のコンパイラサポート.

他のヒント

まあ、私は非プログラマーのエンジニアです(それが何であれ、私はそれを集めていることを意味します。

S. Lottの答えについてのJasonfruitのコメントへの継続的な部分で:

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

だから、良い本を取ります(多くは初心者に3人のうち1人をお勧めします; a)チャップマンJ.スティーブンのb)メイン州、またはc)メトカーフ、リード、コーエン(「MRCブック」として知られています) - その後、多くの「より曖昧な」機能は、より明確になるだけでなく、「明白」になるようになります(ある意味で。 これは本当に良い方法です - なぜ私はそれをそのようにしたのですか...以前に?).

それはその質問の世話をします。さて、他の質問 - certanlyが発生する - 最近学ぶ価値はありますか? (それはいつもそうです、これについて私を信頼してください:). 。これは何度もカバーされているので、私はただ指示します 私自身の投稿 上記について、そして 私の古い投稿 (少し下にスクロールする必要があります)これは、ここで言及されている他のラングガージュのいくつかと比較していくつかの問題を考慮しています。

最後のことは、ほとんどの場合、これらすべての質問の原因となることです。一般的に言えば(そして、このフォーラムを分析のためのかなり良いサンプルとみなすことができます)、それはそれほど良くないということです。それを好む人はほとんどいません[このフォーラムで1か月間Fortranとマークされた質問に従ってください。あなたはすぐに彼らが誰であるかを学びます。ところで、あなたの名前が登場している頻度から判断すると、あなたはすぐにクラブのメンバーになります:)]、ほとんどは無関心であり、一部はそれを嫌い、純粋な無知から(F66と今日の言語を比較することがよく使用されます)、彼ら自身の理由からいくつか。さて、それらを取って一般集団と比較すると、単純なアカウントでそれを比較すると、結果は悪いことになります。従来のエンジニアだけにインタビューした場合、結果はまったく異なります。

thhhh-aaa-ttt's it。

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

ここでのコンセンサスが現代のフォルトランのためであることに驚いています、そして私はしぶしぶ同意します。

その失敗が何であれ、Fortranは科学プログラミングのために明示的に設計されている唯一の言語です。科学的プログラミングは、たとえばWebサーバーよりも微妙で(1行あたり)(構造内の)より複雑ではなく、異なるツールが必要です。たとえば、Garbage Collectionは、主要なデータ構造が固定されている大きな2D/3D PDEを解くのに役立つことはほとんどありません。

科学プログラミングのために、一流のオブジェクトとしてマルチDアレイさえ持っていないプログラミング言語はすぐに却下できます。そして、それはすべてCベースの言語です。本質的に神が遅くなるプログラミング言語 - ジャバ、私はあなたを見ています - すぐに却下することができます。独自のプログラミング言語で、数千ドルのライセンス料(MATLAB)がすぐに却下できます。

Pythonおよび関連言語はプロトタイプに適しており、プロットは簡単です。一度機能したら、速度のためにコンパイルされた言語で数値カーネルを書くことができます。しかし、それは再び実際の配列の欠如に苦しんでいます(numpyは良いですが、素晴らしいことではありません)、それはS..L..O..Wです。

ちなみに - しないでください これまで 数値レシピの本によって。彼らはがらくた、彼らが売り込むアルゴリズムは日付であり、コードは貧弱から間違ったものにまで及びます。実際の数値アルゴリズムコースを取ります - ラインに良いものがあります - または実際の数値アルゴリズムの本を購入し、神の愛のために、本のコードを線形代数などに入力しないでください。そこにある実際の、プロフェッショナルな品質のライブラリを数十億を使用してください。

あなたの質問に対する最も直接的な答えのために、私はそれが ケミストの答えは正しいですが、 ととずか.

とはいえ、FTP、Web、およびグラフィックスに近いものと接触している数値コードの多くが見つかりました。 Matlabが別の答えで提案されているのを見てきましたが、速度が必要なときにますます多くのPython(Numpyを使用して)を書き、Fortranに電話をかけてきました。私はほぼ間違いなく、この方法でシステム全体(たとえば、数値予測モデル全体)を書いていませんが、多くの点で両方の世界の最高のものを持つことができます。

または、回答はFortran 90、95、2003です。 。 。 ? はい。科学的なコンピューティングの場合、Fortran> = 90はFortran 77の制限を削除します。Alocatableアレイを使用して動的に大きなアレイを使用する方法を学びます。モジュールを使用して手順と変数を整理する方法を学び、実際の引数とダミー引数の間で自動一貫性チェックを簡単に提供します。 Fortran 77から始めて、Fortran 90/95/2003を徐々に学ぶことができます。 OO機能を学ぶ必要はなく、おそらくいつかそれがあなたに有用性を提供するまで、言語のその部分を無視することができます。

メトカーフ、リード、コーエンの本をお勧めします。

あなたはマトラブを見ているかもしれません。多くのエンジニアの学部生がそれを知っているので、私はそれがプログラマー以外の人が簡単にグロックするのは簡単だと思います。

ハードコアを取得したい場合は、 j.

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

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

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

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

c もちろん、無料のオプションでもあり、多くの(絶えず更新された)科学ライブラリが利用可能です。ただし、読みやすさに関しては、Fortranを打ち負かすことはできません。 Fortranは、ベクトルと配列で動作するように設定されています。

C ++ Cのスーパーセットであるため、間違いなく可能な選択肢でもあります。しかし、それはあなたが見ている問題を複雑にするための言語です。科学的なC ++ライブラリの数はかなり限られています。周りにはいくつかありますが、Fortranバージョンを打ち負かすことはできません(またはそれらのラッパーだけです)。これはおそらく非常に大きなプロジェクトにとって非常に良い選択肢ですが、世界最速のコンピューターで実行される非常に大きなプログラムがFortranで書かれています。 C ++は、幅広い現実世界アプリケーションに使用されているため、学習する価値があります。

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

Fortranの使用に本当に興奮している場合は、使用することを検討するかもしれません Microsoft.netのFortran. 。このプロジェクトの背後にあるアイデアは、Fortranを使用できることです 言語 共通言語ランタイム(CLR)を介してマンゲージ化されたコード環境を利用している間。

@S.Lott:科学者などのFortranユーザー、すべてのFortranの仕事を切り替えて捨てなければならないことを想像することはできません.....:s opは新しいものに関する入力を探しています...

OPへ:あなたは読み上げましたか ウィキペディア Fortranに加えられた変更の詳細は、2003バージョンでCとの相互運用性を可能にします。そのため、S.Lottには少しずつポイントがあり、Fortranモジュールを呼び出すためにCのラッパーを優しくポートするか、Cでラッパーを書くことができますか?そのウィキペディアのページから引用します...

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

私は最近、多くのMatlabと一緒に仕事をしてきましたが、今日の利点があることがわかります。はいは解釈されている言語であるため遅いですが、マトリックスアルゴリズムは高速です。そして、私はその行動のためにまさにそれが好きです。 FORループの遅さとマトリックス操作のパフォーマンスは、ループ指向プログラミングに固執するのではなく、より数学的な方法で考えることを奨励します。しかし、Matlabは開いていないため、Matlabを却下できることに同意することができます。

現在、ジュリア語を楽しみにしています。 Matlabが速くなりたいということを除いて、Matlabに深く触発されています。また、静的なタイプがあり、これも非常に大きな利点です。しかし、ジュリアはまだ非常に若いので、それがすでにすべての要件を満たしていることを期待しないでください。

学習が簡単です(オブジェクト指向または機能的プログラミングの合併症はありません)

読みやすい

ナンバークランチで速く燃える

Cのように聞こえます

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

http://www.amazon.com/numerical-recipes-art-scientific-computing/dp/0521431085

特定の問題を解決するために書かれた小規模で専用のプログラムを検討していると思います。その場合、OOの複雑さが本当に気になった場合、C#またはJavaアプリを書いてOOを使用しないだけです。ビジュアルベーシックは、最近でもかなり速くなるはずです。

コンパイルされたほぼすべての言語は最近数学的に速くなり、すべての操作は数学の共同プロセッサで行われます。そのため、特に不足している言語が特に不足していることがわかっていない限り、「数学の速度」をあまり悩ませません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top