なぜfortran標準ライブラリがないのですか?


10

数学と科学計算に焦点を当てた言語であるために、私は常にFortran標準ライブラリに有用な数学ルーチンがまったくないことに困惑しています。少なくとも標準偏差と平均を計算するルーチンが付いて出荷されることを期待しますが、これは当てはまりません。特にFortran 90の導入とモジュールの追加(したがってネームスペース汚染の低減)により、このサービスの重大な欠如の理由はわかりません。

これが事実である理由についてのあなたの知識を聞きたいのですが。


私がfortranを使用してから20年になりますが、当時は、マシン上で発生したことをそのまま使用したという規格に注意を払っていませんでした。利用可能な数学的ライブラリーの量は膨大であり、使用したマシン全体で一貫していることがわかりました。これはライブラリが標準ではないのにユビキタスだからなのかと思います。(それが問題だとは思いません)。
マーティンヨーク

回答:


17

FORTRANが開発された当時は、コードの移植性などはありませんでした。あるマシンのFORTRANコンパイラが別のマシンのコンパイラとは少し異なる言語を受け入れることは、絶対に日常的なことでした。最も一般的なバリエーションは名前の長さでした。IBM 1130 FORTRANは5文字、DEC-10は6文字、CDC 6600(私の最初のマシン、私の最初の実際のアセンブリ言語)は7文字を許可しました。言語には3次元配列が必要でした。少なくとも1台のミニコンピューター(Varian 76?)FORTRANでは、7次元配列を使用できました。

企業は日常的にFORTRAN言語を拡張して、マシンを顧客にとってより魅力的なものにしました。また、拡張機能が同様の機能を提供する可能性はありますが、まったく同じではありませんでした。多くのコンパイラーは、ファイルI / Oおよびオーバーレイ管理を行うための拡張機能を提供しましたが、それらはまったく同じではありませんでした。時々、彼らは近くさえいませんでした。

プログラムをあるマシンから別のマシンに移植するFORTRANからFORTRANへの変換は、非常に忙しい家内産業であり、それを実行できる人は常に仕事を見つけることができました。(私はそのような2つの変換を行いました:オリジナルのMatuszek-Reynolds-McGehearty-Cohen "Star Trek"ゲームをCDC 6600からDEC-10に移植するのを助け、EKG分析プログラムをVarian 76からTI 990に移植しました。そのようなプロジェクトは同一でした。)

この種のことにより、「標準」ライブラリを提供することは非常に困難になりました。IMSLライブラリーが最大でしたが、ソースコード形式で出荷され、顧客は自分のシステムで機能させる必要がありました。

また、FORTRANプログラマーは、数値解法において妥当なバックグラウンドを持っていることが期待されていました。当時の地球上のほとんどすべてのFORTRANプログラマーは、宿題として自分の平均値と標準偏差をどのように行うかを学びました。すべてのFORTRANプログラマーは、学校で二分法とニュートンラフソン反復法(現在は「ニュートン法」と呼ばれています)を学びました。ルンゲクッタ法は、通常は無作法で教えられ、当時、6次のルンゲクッタ積分器は教科書の例でした。(人々が、4次のルンゲクッタが費用対効果曲線の「スイートスポット」であることを理解したのはずっと後でした。)

そして:プログラマはめったに仕事を変えることなくコンピュータを変えました。動き回ったプログラマは、新しいシステムがどのように機能するかを学び、その違いを理解するのに非常に優れていることが期待され、要求されていました。

その環境では、有能な初心者レベルのFORTRANプログラマーがスリープ状態で書き込むことができるものであったときに、「標準」のSTDDEVコードの呼び出しはほとんどありません。


>また:FORTRANプログラマーは、数値的手法に適度なバックグラウンドを持っていると期待されていました-プログラマーの最初のスキルはgoogleの使い方を学ぶことだと思われる今日とは対照的です:-)
AndersK

3
とにかくみんながNAGを使った
マーティンベケット

1
@MartinBeckett:これはNAGよりずっと前のことです。
John R. Strohm 2013

1
@Rook、あなたは恐ろしく失望する運命にあると思います。
John R. Strohm、2015

1
@Rook私は間違いなくそれらを実行できますが、最初の試行で効率的かつ数値的に安定した方法でそれらを実行することを考えていません。
Ixrec 2015

2

個人的には、MKLライブラリーが原因だと思います。高性能の数学ライブラリを探しているなら、MKLが必要です。それはそれほど高価ではなく、そのプロジェクトで数学計算を実行する実験室はそれを買う余裕があります。


これについてより詳細に説明してもらえますか?尋ねられた質問にどのように、そしてなぜ答えますか?「リンクのみの回答」はStack Exchangeではあまり歓迎されません
gnat



-1

FORmulaTRANslation言語は、独自の数式を簡単に記述できるように設計されています。Fortran 90以降で記述できるのに、なぜFortranが平均関数を定義すべきなのか

xmean = sum(x)/ max(size(x)、1)?


3
配列xが値でいっぱいであると想定しています。これは通常、非常に悪い仮定です。
John R. Strohm、2011
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.