2016-12-11

断簡(Fortran の RECL がオクテット単位でなくてもよい背景についてメールを書いたが流れ去るのがもったいないので)


一般のバイナリファイルを読めないと利用者が怒るという観点は、ストリームアクセスの導入理由であり、逆にそれまでの方法ではできる保証がありません。一般のバイナリが読める手段がないと規格違反になるような文言は、慎重に排除されていました。Fortran 2003 以後も、ストリームアクセスが導入されたのですから、ダイレクトアクセスの使用を改める必要性はなおのことなくなった、というのがコンパイラ実装者側からみた論理ですね。

なぜそんなことで通用していたかというと、おっしゃるところの一般のバイナリファイルという概念が UNIX 以後のものだからです。ファイルが任意個のバイトの列であり、1バイトが8ビットであり、利用者はバイト単位で任意の位置にシークして任意個のバイトを読み書きすることができる、というのは、UNIX およびそれを真似た OS の特性に過ぎません。汎用機の OS はそうではなく、ファイルは記録(レコード)の集まりであって、シークできるところは記録の境界に限られていました。FORTRAN はそういう OS を前提に作られたもので、そういう OS でも使えなくならないようにすることを強く意識して改正議論がなされていました。

さて、汎用機はいまさら復活しないでしょうが、一般のバイナリの概念が今後も使えるのでしょうか、私には自信がありません。エンドユーザコンピューティングではバイト列ファイルの勝利でいいのですが、こと HPC に関しては、脱 POSIX ファイルシステムということがずっと言われています。まあ、永年言われている掛け声は、素人考えということなので、世の中がそう進むとも限らないのですが。

0 件のコメント:

コメントを投稿