アカウント名:
パスワード:
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
ソースを見ろ -- ある4桁UID
BNFよ永遠に (スコア:1, 興味深い)
ただ、BNFのほうは今でもお世話になりまくりですよね。文法の話をしようとすると大抵(?)ありがたく使わせて頂いている。
Fortranは初期かつ特定の言語実装、つまり歴史全体から見れば「プロトタイプ」くらいの位置づけでしかなく、それはそれでもちろん重要だとは言ってもイマイチなのだが、一方BNFはもっと抽象的なものなので多分「未来永劫」使えますよね。
(年代的にはどうなんでしょう?Fortranの痛い部分が散々わかってから、BNFのようなエレガントかつメタな捉え方を考案した、のでしょうか?)
そういう意味でBNFの功績のほうを遥かに強く褒め称えたいなあ。
Re:BNFよ永遠に (スコア:2, すばらしい洞察)
でも FORTRAN (やっぱ大文字!)がなかったらその後の進化もこんな風じゃなかったかも。
今でも宇宙開発や環境シミュレーションではバリバリ FORTRAN は現役です。他にも原子炉関連やプラズマ関連のシミュレーションなんかも FORTRAN だと思うんですが。
#そういえば JA/HPF ってどうなったんだろう。
大学でも学部レベルの計算は結構な分量が Excel でこなされてたりして頭の痛い状況があったりしますから、FORTRAN なんか見たことねーや、って人も増えているのかもしれませんが。
ただ、コンピュータの特性を学ぶためには今でもいい教材だとは思うんですがね。
> そういう意味でBNFの功績のほうを遥かに強く褒め称えたいなあ。
この点については同意。
Re:BNFよ永遠に (スコア:3, 興味深い)
>ただ、コンピュータの特性を学ぶためには今でもいい教材だとは思うんですがね。
この2行は激しく同意。
>今でも宇宙開発や環境シミュレーションではバリバリ FORTRAN は現役です。
>他にも原子炉関連やプラズマ関連のシミュレーションなんかも FORTRAN だと思うんですが。
宇宙や環境シミュレーションは知りませんが、原子炉やプラズマ関連はこの辺やってる人が
FORTRANしかまともに使えない、というのが実際だと思います。
(それかFORTRAN特有の極限までのチューニングが必要な場合か)
よく、プログラムで「医療や原子力など重大な用途への使用を禁じます」みたいな記述をみることが
ありますが、むしろ逆に一部の原子力FORTRANコードの品質にはひどいものがあります。構造化以前
の遺産を引きずっていて
・とりあえず変数は全てstaticに取る。あと主要な変数は全てグローバル変数。
・配列を動的に確保できないので配列数をハードコーディング。グローバルな配列数も全ファイルに逐一記述
・goto, implicit real* a-h,o-z は当たり前
・エラー処理なし、計算結果を見ればわかる。SIGFPEが出るなんてむしろラッキーな部類にはいる。
・変数は6文字以内の謎の記号。(たいていは4文字ぐらい)
とかでバグが出ると大変です。なんでバグが発現する場合は
乱数の種変えたり、計算点ずらしたりでバグ回避することも。
(長年の実績のあるコードなので動けばまともな結果は出てくる)
確かに原子力クオリティと言った場合材料なんかは特別な高品質グレードを意味しますが、
計算コードの場合必ずしもそうではないです。
#ただ炉心とか本当にクリティカルな部分は実験データ重視で、
#実験データ使ってゴリゴリ修正したり、計算にしてもその炉にしか
#通用しないような「魔法のパラメータ」作ったりするので
#方法論はともかく結果は正確なようです。
#原子力は本当に重要なところは実験重視ということで核弾頭なんかもそういう
#感じなんで「核実験」が必要なんだと思いますね。
Re:BNFよ永遠に (スコア:0)
> ・配列を動的に確保できないので配列数をハードコーディング。グローバルな配列数も全ファイルに逐一記述
メモリの割り当て計画が完全に予期できるというのはとても重要ではないでしょうか。原子炉の制御プログラムが突然スワップしたりGC始めたりOutOfMemoryErrorで落ちたりしたら怖すぎます。
Re:BNFよ永遠に (スコア:0)
ここでいう計算コードはシミュレーション用のコードでしょう。
#しかし、大抵のシミュレーション用のコードは、未だにベクトル時代の遺産を引きずった設計なんだよなぁ。
#ベクトル長を長くしようとして配列の次元を弄ってあるから読みにくいし、並列化との相性が非常に悪い。
##そういえば、昔のバージョンのSTAR-CDは、設定ファイルの1つが配列数が書かれたソースコードで、実行前にコンパイルするんだったなぁ。