見出し画像

タイムスリップFORTRAN

コンピュータの技術は20世紀後半から21世紀にかけて大発展を遂げました。いまでは楽に1人1台以上、日常生活のなかの生活のツール・環境としてコンピュータが入り込んでいます。片付けものをしていたら、ずいぶん懐かしい雑誌が出てきました。「月刊プログラマーズ・ページ」(翔泳社)です。なにそれ? と大きな声で言ってしまってから、はっとしてきょきょろまわりを見て、もう1回ひっそりと「なに、それ?」とつぶやきたくなるような雑誌ですね。私も発見して手に取るまで、すっかり忘れていました。そう、昔は、コンピュータを使う人の多くがプログラマだった時代があったのです。1991年創刊の雑誌で、3冊目の3月号。ということは、29年前ですか...  この号の特集は「この言語を使いなさい!!」でした。その特集で、FORTRAN のところを私が執筆しました。今日は 29年前にタイムスリップしてみましょうか。

画像1

画像2

------------------------------   29年前 へ! --------------------------------------

数値計算に莫大なライブラリを蓄積

みなさんは外国語を学ぼうとするとき、どこの国の言葉を選ばれるでしょうか? もちろん、どの国の言葉もその国の文化や人々の暮らしを知るうえで重要ですし、とくにそれぞれの間になにか優劣があるわけではありません。にもかかわらず、そのなかで英語やフランス語が、かなり多くの人によって学ばれているのはなぜでしょうか? それはさまざまな歴史的な経緯のなかで、結果的に世界共通言語としての性格を帯びているからです。多くの重要なことがらが、これらの言語に書かれ、また話されています。もし、私たちがその内容を知り、また自らも関わってゆこうと思うならば、その言語を学ぶことは必須となりましょう。

プログラミング言語についても似たようなことがいえます。FORTRAN は世界最初の実用的なプログラミング言語として生まれ、その後今日に至るまで、全世界で使われ、無数の資産が築かれてきました。とくに科学技術計算の分野では、FORTRAN の世界共通言語としの地位は絶対的なものです。たしかに、最近はBASICやC,PASCALのための汎用の数値計算ライブラリも種々のマシン用に作成され、市販もされています。しかし、その内容を見れば明らかなように、行列計算や微積分、常徴分方程式など、ごく一般的なものに留まっていますし、その解法の選択枝もかなり限られています。また、その絶対数もそれほど多いとはいえません。これに対してFORTRAN には、数値計算ではおよそ考えられるもののほとんどすべてをカバーするライブラリが、それも数え切れないくらい多くの種類あるのです。また、計算機科学はもちろん、素粒子物理学や流体力学、量子化学などの分野におけプログラムの蓄積も相当なものです。そのようなわけで、科学技術計算の分野で何らかの仕事をするためには、FORTRANをマスターすることは非常に重要です。

資産の公開・共有によって普及

FORTRANという名称は、formula translation(数式翻訳)に由来するもので、1954年にIBM社により数値計算用のプログラミング言語として開発されました。その後、世界中で広く使われるようになるのですが、その過程できちんとした規格がつくられていったおかげで,あるユーザーにより開発されたプログラムが別な計算機センターでも変更なしに動作させるといったことが可能になり、資産の公開・共有が促進され、ますます普及することになりました。

1966年にアメリカでFORTRAN IV (FORTRAN66)が規格化され、日本国内でもこれをもとにJISによる標準化がなされました。さらに、1977年のいわゆるFORTRAN77(日本国内では 1982年に JIS にとり入れられた)は、これらに対する上位互換性をもちながら、機能がかなり強化されたために、きわめて強力な標準となりました。今日使用されている FORTRANコンパイラのほとんどが、このFORTRAN77に準拠していることはいうまでもありません。1990年代に入り、新しい規格の導入が日程にのぼっています。これは互換性を保ちながら、現代化をすすめ、新しい時代の要請に応えてゆこうというものです。

パソコンでの開発が普及する中で

FORTRANはその歴史的経緯からいって、パソコンが普及する以前に、そのプログラミング言語としての地位を確立しました。ですから、もともと大型計算機で使われていたものがミニコン・ワークステーションやパソコンの環境でも使われるようになってきたということになります。FORTRANに類似した初心者教育用の言語として開発されたBASICは、その後、対話型のインタプリタ言語としての特徴がパソコンのような環境に適していることから、その標準的な言語となっていったわけですが、このあたりの対比はたいへん興蝋菜いものがあります。私見ですが, FORTRANは大型計算機と切り離してはなかなか考えにくい言語だと思います。ミニコン・ワークステーションではそうでもないのですが、パソコンでは、まだまだ独自の資産は少ないといわなけれなりません。むしろ、FORTRAN77準拠という意味で、大型計算機の上で使用できる形で公開・共有されている莫大な資産が活用できるというメリットが現時点では前面に出ているように思います。

ところで,今日では,大型計算織で動作させるプログラムもその開発環境として、ワークステーションやパソコンが使われることはすでに一般的になっています。使いやすいエディタと通信ソフトをパソコン側で用意していれば、ほとんどの作業が自分の机の上でできてしまい、ユーザーとしてはたいへん好都合なわけです。また、実験室でデータをパソコンに落とし、それを大型計算機に転送して解析を行うようなこともよく行われています。こうして、パソコン上出のソースプログラムのエディット(または処理すべきデータの準備)~大型計算機へのアップロード~コンパイル・実行~計算結果のダウンロードを何度となく繰り返すことで、作業が進められてゆきます。

ひと昔前ならば、計算はどんな簡単なものでも大型計算機てやるというようなことは珍しいことではありませんでした。しかし、最近のパソコンの高機能化、ラップトップパソコンの登場による1人1台化、そしてLANの充実により、計算磯の効率的な組み合わせ利用と使い分けが新しい常識になってしまいました。規格によりソースレベルでの高度な互換性が保障されていることの強みがこのような使い方を容易にしたといえるでしょう。まったく当たり前のことですが、条件か整ってさえいれば、パソコンで十分処理できるものは、パソコン用のコンパイラで片付けるのが合理的であり、これからますます幅広く使われるようになることでしょう。

パソコン上での環境整備の問題

パソコンとひとくちにいっても,いろいろな種類の機械があるわけですが、現在、もっとも多く使われているのは、インテル社の8086(80286あるいは80386も含めて)をペースにした16ビット(または32ビット)パソコンでしょう。これらの機種のOSとしてはMS-DOSが圧倒的に多く使用されています。そして、このMS-DOS上で動作するFORTRANコンパイラが何種類か市販されています。ここでは、パソコン上で動作するプログラムを開発しようとするときに留意すべき点を、とくに大型計算機などとの相違点を中心に述べることにしましょう。

第1は、メモリの制約を考慮する必要があることです。昔は、もともと大型計算機でさえも少ないメモリで計算しなければならないケースは多くあり、メモリを節約するようなプログラムを書くのも技術のうちだったのですが、最近はよほど特別にメモリを使うようなプログラムを別にすればそのようなことは考える必要はなくなりました。 パソコンでもメモリそのものはコスト的にも全然問題なくなってきてるのですが、8086、そしてそれをベースにしているMS-DOSのメモリ空間の大きさがむしろ制約になっています。しかし、今後は 80286以上のCPUを持つ機種で、MS-Windows3.0のstandard modeやOS/2を利用することにより、この問題は緩和されることでしょう。

第2は、数値演算プロセッサ(8087・80287・80387)の使用です。FORTRANで実際にやる仕事が科学技術計算であることを考えると、これはぜひ装備することが望まれます。最近のコンパイラは、装着されていない場合でも互換性を保つように、8087のコードを出すようなエミュレータを備えているの普通ですが、実行速度を考えれば、そのメリットは相当なものです。

第3は、パソコンならではのきめ細かいやり取りを行うためのモジュールを充実させることです。画面制御やグラフィックス,パーソナルプロッタヘの出力、RS-232Cを介したデータ通信、GPIBによる機器の制御などは、パソコンならぜひ必要な機能です。パソコン用のBASICなどでは標準のコマンドの形で用意しているものですが,FORTRANの場合はなかなかそうはいきません。しかし、このようなモジュールもあるものは市販されていますし、自作もそれほど困難ではありません。このような道具だてがどの程度揃うかで、実際の仕事の効率は大きく違ってきます。

科学技術計算では最も有力

今日、多くの種類のプログラミング言語があり、そのどれを選ぶかというのは、さまざまな局面で問題になることが予想されます。その解答の基準は、何がしたいか? ということだと思います。冒頭にも述べましたが、もしそれが科学技術計算に関わるものであるならば、そのもっとも有力な世界共通言語であるFORTRANを学ぶことは必須です。最後になりますが、パソコンやワークステーションの世界が大きく広がりつつあるこの時代にこそFORTRANをと思う方が1人でも増えることを願ってやみません。

------------------------------  かえってきました ---------------------------------

29年前は、環境は、いまから思えば、原始時代のようなものですね。でも、使い方、活用の仕方、使う知恵やスキルはどうでしょうか。私には、時々、以前のほうが優れていて、現代は退化しているのではないかと感じることが時々あります。

※ この記事は、まったく存じ上げない不特定多数の方々にお伝えすることを意図していません。そのため、少し敷居を高くし、将来は有料とさせて頂くことを検討しています。まだ、note は始めたばかりなので、当面は、何も設定いたしておりません。

※ なお、マガジン「群盲評象」には、この記事を含めた私的ノート(有料のものも含む)を収録いたしております。ご関心のある方は、ぜひお求めください

ここから先は

0字
現代は科学が進歩した時代だとよく言われますが、実のところ知識を獲得するほど新たな謎が深まり、広大な未知の世界が広がります。私たちの知識はほんの一部であり、ほとんどわかっていなません。未知を探索することが科学者の任務ではないでしょうか。その活動は、必ずしも簡単なものではなく、後世からみれば群盲評象と映ることでしょう。このマガジンには2019年12月29日から2021年7月31日までの合計582本のエッセイを収録します。科学技術の基礎研究と大学院教育に携わった経験をもとに語っています。

本マガジンは、2019年12月29日から2021年7月31日までのおよそ580日分、元国立機関の研究者、元国立大学大学院教授の桜井健次が毎…

いつもお読みくださり、ありがとうございます。もし私の記事にご興味をお持ちいただけるようでしたら、ぜひマガジンをご検討いただけないでしょうか。毎日書いております。見本は「群盲評象ショーケース(無料)」をご覧になってください。