Fortranの学習


9

Fortranでプログラミングする方法を学ぶための最良の方法は何だろうと思っていました。

私は本を​​探していましたが、私には問題ないと思われた例として、「Fortran 95/2003 Explained」「Fortran For Scientists And Engineers」などがありました

私はあなたたちがこれらについてどう思うか知りませんか?

私が疑問に思っているもう1つのことは、どのコンパイラを使用する必要があるかです。私はWindows 7マシン(64ビット)で作業しています。

皆さんが私にこれを手伝ってくれることを願っています!

だから私のプログラミングの経験のために:

  1. Matlabとmapleは、プログラミングの世界への私の最初の紹介をやさしく思いました。Matlabは、私が実際にかなり良いプログラムであり、ループを操作するコツと、これらを組み合わせてより効果的なプログラムを作成する方法を得ました。Mapleはより基本的な段階にあります(私は単純な積分などの解を検索する方法を知っています)。
  2. その1年後、Visual BasicでC ++を紹介しました。教授は実際にこれにすばやく取り掛かりましたが、2か月後、ポインターと継承についてはすでに議論していました。私はこの言語で簡単なプログラムを書くことができます。クラスでの作業だけが難しい問題ですが、それは練習の問題だと思います。
  3. そしてその1年後、私はMathematica 8を学ぶ必要がありましたが、これも今日では本当に上手になっています。

だから私は少しプログラミングexpierinceを持っていますが、それが信じられないほどの量であるとは言いません!

私がFortranを学びたいのは、主にそれ自体では理論物理学を行うことができず、理論をテストする必要があり、そのためにそれらの理論を数値的にテストできるプログラムを作成できる必要があるためです。Fortranは、数値数学に関しては使用する言語を分類するものだと聞いたので、この言語を知ることは重宝すると思います。

PS:Fortran95とFortran 2003の違いは何ですか?


3
どこから来たのか、どこに行きたいのか、もう少し具体的に言えますか?プログラミング方法、つまり他のプログラミング言語を知っていますか?そして、Fortranで何ができるようにしたいですか?
ペドロ

ええ、多分私は私の質問でそれを述べるべきだったので、編集を許可します:) @Pedro
Nick

1
私はそれが質問に答えないことを知っていますが、初心者として特定のパフォーマンスのニーズがない場合は、FortranではなくPythonを使用することを強くお勧めします。Pythonはあなたに向かってあまり悲鳴をあげないので、実際の数学と理論を扱う頭痛が少なくなります。また、多くの数値計算を非常に簡単にする素晴らしいパッケージもあります(SciPy、Numpy、Matplotlibを検索)。これらのツールにより、PythonはMATLABと非常によく似たものになりますが、優れたソフトウェアをewllとして構築するための完全な言語も用意されています。言うまでもなく、それはオープンソースです。
2013

1
Fortran 95もMatlabに似たISO標準です。Pythonを使用する多くの人々は、C / C ++(Fortranでさえ)で計算量の多いカーネルを作成します。つまり、1つではなく2つの言語を学ぶ必要があります。1つはパフォーマンス用で、もう1つは利便性/使いやすさです。
stali 2013

回答:


4

チャプマンの本の2つ目のおすすめのところに行きます。チャップマンのFortran 90の本から学び、それはとても役に立ちました。それはあなたにFortran言語を教えます。プログラミングのための優れたワークフローについては説明しません。そのためには、Fortranをいくつか学び、少しプログラミングした後、他の場所を調べる必要があります。

Fortranプログラミングを支援するほとんどのオンラインリソースは、Linuxベースです。同様に、計算科学では、書かれた資料のほとんどはLinuxユーザーを対象としています。そのため、VirtualBox(または仮想オペレーティングシステムを実行できるようにするソフトウェア)をインストールし、そこにLinuxディストリビューションをインストールすることを強くお勧めします。これまでにLinuxを使用したことがない場合は、Ubuntu、Mint、Fedoraなどのユーザーフレンドリーなディストリビューションがおそらく最善の策になるでしょう。これらのディストリビューションは、仮想環境で実行する場合、最小限の構成を必要とし、オペレーティングシステムのナビゲートに役立つ優れたGUIを備えています。これらの各ディストリビューションには、追加のソフトウェアをインストールするために使用できるパッケージマネージャーがあります。パッケージマネージャーを使用して、gfortranをインストールできます。

テキストエディタ(またはIDE)でソフトウェアを開発する必要があるので、コマンドラインの基本を学習する価値があります。Software Carpentryには、このタスクのための優れたリソースがあります。(免責事項:私はSoftware Carpentryのワークショップの一部を教えました。)その後、簡単なプログラムを作成してコマンドラインでコンパイルする方法を学び、Makefileの使用方法を学ぶことができます。

Windowsベースの何かをすることの問題は、計算科学を行うときに表示されるほとんどのオンライン資料がLinuxを使用していると想定することであり、アドバイス(そもそも良ければ)が壊れることです。ダウンし、あなたの時間を要します。Cygwinは、よりLinuxに似た機能を追加するAPIレイヤーですが、Linuxとの対応は完全ではなく、Linux用にコンパイルされたソフトウェアはマシンで動作しません。Windowsネイティブバージョンを入手するか、Windows用のソフトウェアを再コンパイルする必要があります。Visual FortranなどのWindowsネイティブのFortranコンパイラーはコストがかかり、ほとんどのFortranユーザーと計算科学者がソフトウェア開発にLinuxを使用するという問題が引き続き発生します。自分の。ただし、本当に必要な場合何らかの理由でWindowsベースのソフトウェアを配布する場合、Visual Fortranのようなものを使用する方法を理解するためにあらゆる努力を払うのは理にかなっています。


アドバイスありがとうございます!しかし、仮想マシンの代わりに、windows7またはLinux Ubuntuを最初に起動するかどうかを選択できる、ある種のデュアルブートメカニズムを作成できないのではないかと思います。それは確かに私に多くの時間を節約するかもしれないと信じています!Windowsに移動する必要がある場合は、Linuxバージョンのプログラミングエクスペリエンスを使用して、Windowsでの手順をすばやく実行できます。
ニック

望めばできます。デュアルブートセットアップは柔軟性が低く、より多くの技術的な知識と時間を必要とすると思います(パーティションのサイズ変更、ブートローダーの正しいセットアップなどが必要になる場合があります)。また、仮想マシンは新しいマシンに移行する方が簡単だと思います。これは、仕事を同僚と共有したい場合や、新しいコンピューターを取得してすべての仕事をそこで移行したい場合に役立ちます。
Geoff Oxberry 2013

ようやく、必要なすべての手順を実行する時間を見つけました。VirtualBoxとLinux(Ubuntu)をインストールしました。今、私はどちらが最高のコンパイラであるかもしれないと思っていましたか?その部分についてはオンラインではあまり見つけられないようです。誰かがgfortranを言うのを聞いた?
Nick

2
gfortranは無料で、おそらく最も抵抗の少ない道です。他のほとんどのコンパイラーは、個人的または学術的な使用を除いて、ライセンスを購入する必要があります。(たとえば、インテルのコンパイラーは無料でダウンロードして個人的に使用できることを知っています。詳細については、ライセンスを読む必要があります。)HighPerformanceMarkは、コンパイラーのパフォーマンス比較があるWebサイトにリンクされています。
Geoff Oxberry 2013

6

Metcalfeの本は、Fortranの最新機能についての注釈付きの優れたガイドだと思います。以前のバージョンの言語をすでに知っていて、その言語でのプログラミングの入門としては適していない場合に非常に役立ちます。

私のお金としては、Chiver'sとSleightholmeの本Brainerdの本はどちらも十分に良いですが、残念ながらFortran 2003以降では更新されていないEllis ほど良いとは思いません。

チャップマンの本には強い嫌悪感があります。私が90/95版をそれほど嫌っていた理由を思い出せないので、この嫌悪をもはや正当化できません。偏見としてそれを割り引くことができます。

しかし、私がためらうことなく私がお勧めする本はArjen Markusの本です。それはおそらく言語の基本的な特徴を理解しようとしている人にとっては理想的な導入ではないかもしれませんが、それらを習得したら、それは価値がある物質の重さの価値があります。

どのコンパイラーを使用するかについては、私はIntelコンパイラーを使用しており、一般的に満足しています。それはあなたにとって重要かもしれないVisual Studioと統合します。NAGコンパイラーはより良いエラーおよび警告メッセージを持っていますが、遅い(一般的には、経験が異なる場合があります)実行可能ファイルを生成します。gfortranコンパイラーは無料で十分なレビューを得ていますが、私が使用するものではありません。もっと知りたいなら多面体が教えてくれます。


Markusの本にはすばらしい目次があります。
AlexE 2013

はい、マーカスの本は確かに素晴らしい本のようです。そのため、私はこれを明確に検討します。コンパイラーには、高速な実行可能ファイルが必要です(ビジュアルスタジオとの統合は必要ありません)。
ニック

インテルのコンパイラーは一般的に高速であると考えられています。
AlexE 2013

3

本については、Metcalf / Reid / Cohenによる「Modern Fortran Explained」をお勧めします。これは教科書というよりも参考資料ですが、すでに一般的なプログラミングに触れたことがあれば(たとえばCで)役立つでしょう。

その本の他に、OndřejČertíkのWebサイトhttp://fortran90.org/を強くお勧めします。そもそもFortranについては説明しませんが、一連のベストプラクティスを提供します。Fortranでは、プログラミングにさまざまな方法を使用できます。結局のところ、下位互換性があります。そこで提供されているベストプラクティスは、一貫した最新のFortranスタイルを開発するのに役立ちます。また、そこにあるFAQも参考になります。


2
F90のベストプラクティスページに賛成しました。これも私にとって非常に役に立ちました。
Daniel Shapero 2013

2

Chapmansの本は、初心者にやさしく、参考になると思います。2番目の著者はすべてエキスパートですが、この本は後の段階でライブラリに追加するのに最適だと思います。

まず、Fortran 95に固執し、その後(必要に応じて)Fortran 2003に移行することをお勧めします。Fortran95は習得が容易で(ほとんどMatlabのように)、生産性が非常に速くなります。

Linuxでは、valgrind、gdb、gnuplot、(迅速なviz用)、svn / hgなどの豊富なツールセットに加えて、多数の無料のFortranコンパイラ(GNU、Solaris Studio、Open64など)があります。さらに、数値ライブラリを含む事前コンパイルされたパッケージ(blas / lapack / netcdf / fftwなど)はコマンドです(少なくともDebianではapt-getを使用)。

Windowsでは、cygwinを使用すると、GNU Fortranコンパイラーに加えて、上記のツール/ライブラリーのいくつかに簡単かつ迅速にアクセスできるため、より優れている場合があります。ですから、cygwin.comに移動し、コアパッケージをgfortranと選択したエディター(vimが良い)とともにインストールします。それは良いスタートです。後で何か他にあれば、ものをインストールするためにapt-cygパッケージを使用することをお勧めします。


1
最初のテキストエディタとしてはvim(または、さらに言えばemacs)はお勧めしません。直感的でないキーの組み合わせを含む重要な機能(切り取り、コピー、貼り付け、検索、検索/置換)が多すぎるため、最初のテキストエディターとして使用することができません。また、新しい学習者が簡単なことを行うために実行する必要のある、これらの追加の不慣れな手順すべて彼らがやろうとしていることすべてを思いとどまらせると同時に気を散らす(テキストエディターを推奨している場合は、おそらく何らかの形のソフトウェア開発です)。
Geoff Oxberry 2013

1
最初の編集者として、私が必要とする唯一の編集者になることができるツールをお勧めします。3週間、3か月、さらには3年で成長するツールではありません。そのため、EmacsとVimの両方が最初のエディターとして適しています。確かに、彼らは他よりも最初は急な学習曲線を持っているかもしれませんが、恐ろしい多くのプログラマーがその代価を払って、価値のある報酬を見つけました。
高性能マーク

あなたのコメントは誤った選択を設定します:vim / emacsを学び、急な学習曲線にもかかわらず、あなたが生涯使用できるエディターを持っているか、あなたが成長する他の学習しやすい劣ったツールを使用します。多くのプロのプログラマーは、gedit、Sublime Text、TextMate、TextWranglerなど、学習曲線が急でない他のツールを使用しており、うまく機能しています。Vimとemacsは優れたエディターです-私は両方を使用します-プログラミングのためにそこにあるのは明らかに優れた選択肢だけではありません(WolfgangBangerthもIDEの良い例です)。
Geoff Oxberry 2013
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.