アカウント名:
パスワード:
物理屋です。毎日Fortranを使ってます。他にはsh, C, Rubyがまあまあ書けます。さいきんのFortranはいろいろなことができるので使っていて楽しいです。gfortranとg95というfreeで使いやすいコンパイラもありますし。物理か化学をやるんなら、知っていて損はない言語なんじゃないでしょうか。
Fortranについて思いついたことを箇条書きにしてみます。* implicit none は使えよ* module は common の代わりに使うな* いいかげん大域変数(的なもの)を使うのはやめろ* 自由形式 (free form) で書け* 構造体 (type) を使え* 配列の範囲が自由 a(1:N), a(0:N-1), a(-N+1:N), a(3,0:N
同じく物理や化学で計算を生業にしている者です(某日本最大の計算機を作るプロジェクトでもお世話になっています)。20年近くやってきたゴリゴリの「高速計算屋」です。
* implicit none は使えよ→同意。ケアレスミスをふせげる。
* module は common の代わりに使うな* いいかげん大域変数(的なもの)を使うのはやめろ* module, interface を使えばsubroutoneの引数の不整合によるバグが避けられる→物理や化学の計算だと、一番重要な配列。たとえば、その系の原子の持つ情報は 大域変数で持つ方がプログラミングしやすいと思う。 同時にそれはパラメータスタディするときに可変
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
目玉の数さえ十分あれば、どんなバグも深刻ではない -- Eric Raymond
さいきんのFortranは使っていて楽しい (スコア:5, 参考になる)
物理屋です。毎日Fortranを使ってます。
他にはsh, C, Rubyがまあまあ書けます。
さいきんのFortranはいろいろなことができるので使っていて楽しいです。
gfortranとg95というfreeで使いやすいコンパイラもありますし。
物理か化学をやるんなら、知っていて損はない言語なんじゃないでしょうか。
Fortranについて思いついたことを箇条書きにしてみます。
* implicit none は使えよ
* module は common の代わりに使うな
* いいかげん大域変数(的なもの)を使うのはやめろ
* 自由形式 (free form) で書け
* 構造体 (type) を使え
* 配列の範囲が自由 a(1:N), a(0:N-1), a(-N+1:N), a(3,0:N
love && peace && free_software
t-nissie
Re: (スコア:5, 参考になる)
同じく物理や化学で計算を生業にしている者です(某日本最大の計算機を作る
プロジェクトでもお世話になっています)。
20年近くやってきたゴリゴリの「高速計算屋」です。
* implicit none は使えよ
→同意。ケアレスミスをふせげる。
* module は common の代わりに使うな
* いいかげん大域変数(的なもの)を使うのはやめろ
* module, interface を使えばsubroutoneの引数の不整合によるバグが避けられる
→物理や化学の計算だと、一番重要な配列。たとえば、その系の原子の持つ情報は
大域変数で持つ方がプログラミングしやすいと思う。
同時にそれはパラメータスタディするときに可変
Re:さいきんのFortranは使っていて楽しい (スコア:1, 参考になる)
> * 動的にallocateした配列は基本的にはsubroutineの最後で解放される
> →これは変だということになる。
もちろんご存知とは思いますが、ここでポインタの出番ですね!
> * オブジェクト指向プログラミングしろ。Frotran2003ではもっと機能が強化される
> →まあ、そうですね。ただ、我々がFortranを使う理由は「大きな計算機で最適化されていて
> 速い」からであって、柔軟なプリ・ポスト処理にはrubyなどで対応したらいいと思っています。
最近、動的に多数の分子を生成するコードを書いて初めて Fortran で OOP する必要性を感じました。PC で10分~1時間程度の計算ですみましたが、もしこれを ruby 等の LL で書いてたら、この10~100倍以上の計算時間がかかるはず。多次元配列を使った多量の数値演算と、動的にオブジェクトを生成するような柔軟なモデル化の両方が必要な領域にはモダン Fortran は最適解ですね。
> * command_argument_countとget_command_argumentとでコマンドライン引数も扱えるようになった
> →まあ、数値計算プログラムは硬派なので、引数はパラメータを列記したファイルで十分なのですがね。
namelist を便利に使ってます。少々癖はありますが、自分でパラメタファイルのパーサを書くのに比べればどれほど楽なことか...
というわけで、物理、化学等々の数値計算にはモダン Fortran は最適です。学生さんは迷わず勉強して損はないと思いますよ。
# 他にも色々書きたいことがあるけど酔ってるのでとりあえず AC