THX VISITING!   Since 24/July/2000.
もろほくナビ賃貸物件検索が登場!
 
 
 
coordinated by kura
HIROSHiSMに戻る。




Fortran ResQ > Fortranのあれこれ > Fortranとは?環境設定、フリーで使えるコンパイラなど
 

Fortranって何?

Formula translater略してFortran。フォートランとは1957年IBM社によって開発された科学技術計算用言語で、数式をほぼそのまま記述できるのが特徴。世界初のプログラミング言語

Fortranが開発される以前は、人はコンピュータにコンピュータの理解しやすい機械語(低水準言語)で命令してました。0、1をせっせと打つか、アセンブラコードを打つかしてたわけ。それが嫌やでしょうがなかった自称なまけもののジョン・バッカス(John Backus)が1953年に「こんな事チマチマやってらんねー!オレ様語(高水準言語)で命令出来るようにしてやる!」という企画書を上司に提出。上司は「それ超E★出来たらまじ凄くね〜?」と、資金制約なしで開発を許可。で、1957年に完成。IBM704上で使えるようになり、マシン語やアセンブリ言語を知らない人でもプログラミング出来るようになったので、IBMマシンが激しく売れるようになったと。

ちなみに、ジョン・バッカスは1959年にバッカス-ナウア表記法として知られるALGOL表記法も発表。FortranとこのALGOL表記法は、COBOLを始めとしたその他の高級言語の設計に大きな影響を与えたのでした。

Fortranの開発で、それまでは出来なかったプログラムの使い回しが出来るようになり、プログラムの生産性が飛躍的にアップしたのです。ジョン・バッカスはFortranの開発の功績が認められ、1987年に国家科学勲章を受章してます。

ちなみに、人類初の月着陸を果たした1969年のアポロ11号でも、Fortranで書かれたプログラムが着陸船を制御したそうです。

もう一個行くと、OSもFortranと同じ頃開発され始めました。ノースアメリカン航空とゼネラルモータースがその原型となるMonitorというプログラムの処理状況を監視するソフトウェアを作りました。Fortranのコンパイル作業を自動化するFortran Monitorってのが有名です。 このように、Fortranはコンピュータ業界の大発明だったわけです。

おぉFortranすげー!

なんで今更Fortran?

オブジェクト指向の言語が定着してきた今、Fortranはかなり古くさい言語です。何てったって世界最古の高級言語です。では、何故使うか?それは、みんな楽をしたいから。Fortranには、 新しいプログラミング言語にはない、莫大な遺産があるからです。大抵のことは誰かがやってる。それを使いたい。同じ問題を解くプログラムを新たに組みなおすよりは、既にあるものを使った方が楽だし、時間もエネルギーも少なくて済みますよね。という訳で、Fortranなんです。Fortranが開発された目的にぴったり一致してるねぇ。。

また、私はFortran以外に、C, C++, VB, JAVA・・・と色々いじってみましたが、数値計算やるならFortranが圧倒的に扱いやすいと個人的に思います。

プログラミングに適したOSは?

プログラミングに適したOSってあるんでしょうか?UNIX系のOSが一番適していると思いますが、プログラミング以外の事もやらないといけない場合とか色々考えると、Windowsが無難かと思います。では、どのヴァージョンが良いのでしょうか?プログラミングする際、OSに求められる最も重要な事は何かと言うと、やっぱり安定性ですよね。途中でフリーズされたりすると、こっちが固まります。私がFortran始めた頃は、しょっちゅう固まってました。まぁ、それはスペックの問題もかなりあって一概にOSのせいとは言えませんが。。

さて、話を戻して、どのヴァージョンが一番安定しているか?ぶっちゃけ2000かXPかです。95, 98, Meは論外(3.1も)。NT4.0は良いけど、ちと古くない?使ってみた感想では、2000もXPも安定性という面では大差ありません。ただ、XPは(計算には全く)無駄な機能が満載です。満載過ぎです。「ハードディスクやメモリの無駄遣い」と古くてショボいパソコンを使っていた私はけちくさく思うわけです。XPはマルチユーザーのファミリーコンピュータ用OSと私は思っています。ので、やっぱりWin2000が最適です。

OSの話とは違いますが、CPUの速度はガンガン上がってます。でも、その数字程計算が速くならない気がしませんか?CPUとコンパイラの相性みたいなのがあるらしいです。Pentium4の能力を引き出すにはこのコンパイラじゃないとダメとか。ま、商売の仕方としては正しいのかも知れないですけど、ユーザー側としてはやってられませんね。CPUに投資するくらいならメモリに投資したくなります。

MacOSはヴァージョンがXになってから、UNIXベースで安定性抜群だわ、インターフェイス最高で、Dual CPUとか申し分ないです。お金さえあれば、今すぐにでも完全移行します。ま、CPUの能力をどれだけ引き出せるのかという疑問は残りますが。

環境設定しよう。

Fortranのコンパイルや実行はコマンドラインからやるのが良いです。何故かと言うと、楽だし、UNIX系のOSで計算する時などにはコマンドラインからやるし、お気に入りのエディタがある場合、コンパイルして実行するためだけに、Fortranのソフトウェアを立ち上げるのもバカバカしい。あ、えーと、ここではWindowsで説明します。

コマンドラインから実行するのは、実行したいexeファイル名を入力するだけなので問題ないとして、コンパイルするためにはどうしたら良いでしょうか?インストーラーからインストールすれば、きちんと設定してくれるんですが、他のソフトとの競合で手動でインストールしないといけない場合などには、自分で環境変数を設定する必要があります。

まず、環境変数はどこで設定するかですが、Win2kより前のOSでは、Cドライブ直下のautoexec.batファイル内に記述します。Win2k以降では、コンパネ>システム>詳細>環境変数で設定出来ます。Win2kでは、autoexec.batファイルでも設定出来ますが、WinXPではautoexec.batファイルが存在しません。WinXPでautoexec.batファイルをどうしても使いたい場合は、Pro-G社のXP Turboなんかを使うと出来るようになります。autoexec.batファイルから設定する場合は、メモ帳等でautoexec.batを開き、直接書き込みます。設定を反映させるためには再起動が必要です。

では、普通にインストールしてautoexec.batに書き込まれる環境変数はどんなものか見てみます。手動でやる時は、これをそのまま設定すれば良いです。ちなみに、これはMS Fortran Power Stationの場合です。
set fl32=/G5 /Ox agx.lib libagx.lib libjpeg.lib
set path=c:\msdev\bin
set include=c:\msdev\include
set lib=c:\msdev\lib
設定された環境変数は4つ。fl32, path, include, libです。path等のbinディレクトリなどはどこにインストールされているかによって違います。fl32というのも、コンパイラによって違うかと思います。これはbinディレクトリの中のfpsvars.batというファイルに書いてありますので、調べてみてください。fpsvars.batが見つからない場合、Fortranがインストールされているディレクトリ以下の.batファイルを片っ端から開いて行けば、それらしいものが見つかると思います。(fpsvars.batのfpsは多分Fortran Power Stationのfpsだと思います。)これをautoexec.batかコンパネから行く環境変数の設定から設定します。既に他のpath等が設定されている場合";(セミコロン)"で区切って続けます。(例えば、c:\unix;c:\msdev\binなど)
1行目の記述はfpsvars.batにも他のファイルにも見あたらなかったので、何なのか良く分かりませんが一応いつも書いてます。詳しく知ってる人は教えてください。書かなくても大丈夫な気がします。

と、これで設定完了です。再起動しましょう。

補足

稀に他のアプリとの競合で、fl32が使えなくなる事があります。私が確認した中では、MS Visual Studioなんかをインストールすると使えなくなりました。いつでも使える状態に戻せなかったんですが、色々やってみた結果、一時的に使える状態にすることは出来ました。

先ほども出てきたfpsvars.batというファイルを実行したDOS窓内ではfl32が使えるようになります。ただ、Fortranをやる度に
c:\msdev\bin\fpsvars.bat
と入力するのはかったるいです。覚えにくいし。そこで、このfpsvars.batファイルをpathの通ったディレクトリにコピーして、分かりやすい名前(例えばsetfl.batなど)を適当に付けて保存します。pathの通ったディレクトリがなければ、自分で新たに作るか、c:\winnt(windows)または、c:\winnt(windows)\system32あたりに放り込んでおけばオッケーです。私の場合は、Unix Like Toolsみたいのを使っていてc:unixにpathが通っているので、自作コマンドなんかもまとめてそこに入れてます。

ちなみに、このfpsvars.batにはfl32の設定(set fl32=/G5 /Ox agx.lib libagx.lib libjpeg.libってヤツ)はないので、やっぱり設定する必要ないのかなぁ?

これで、一応出来るようになります。これでも出来ないとか、もっと良い方法を知ってるという人は、教えてください。

もっと環境設定しよう。

フォートランに限らずWindowsでコマンドプロンプトをよく使うと、不満がいくつか出てきます。
  1. コマンドラインからいちいち目的のフォルダまで行くのが面倒くさい。
  2. 全部入力するのが面倒くさいので補完して欲しい。
などが特に不満な点です。覚えたてのころはやたら使いってみたいですが、慣れてくるとこういった分かり切った面倒くさい作業は鬱陶しくなってくるものです。フォルダの移動などはGUIからやった方が圧倒的に?楽です。という訳で面倒くさいことはしなくて良いように環境を設定します。

任意のフォルダでコマンドプロンプトを起動出来るようにする。

対象はWin 2000/XP/Server 2003です。

[ 安全な方法 ]
まず、安全で確実な方法を紹介します。「窓の手」という便利なアプリケーションがあります。これで簡単に安全に設定することが出来ます。他にも色々設定出来るので使ってみましょう。

[ 危険を伴う方法 ]
* この方法はレジストリを書き換える作業です。下手するとWindowsが起動しなくなる可能性を秘めています。何が起きても責任は取り兼ねますので、全て自己責任で行ってください

「窓の手」とやることは一緒ですが、私は余計なアプリケーションはインストールしたくないので、自分でやります。
「スタートメニュー」から「ファイル名を指定して実行」で「regedit」と打ち、レジストリエディタを起動。

HKEY_CLASSES_ROOT\Directory\shell

に、"OpenNew"というキーを新規作成し(shellキーを右クリックし[新規]-[キー])、右側の(標準)と書いてある文字列の値を「このフォルダでCMDを起動する」などと適当に入れます。

続いて、今作ったOpneNewの下に同様にして"Command"というキーを作り、文字列の値に

cmd.exe /k "cd %L"

と入力し、レジストリエディタを終了。再起動必要?似たようなキーがshell内にあると思うので、良く分からなかったら、それらを参照しても良いかと思います。

regedit


これでおしまいです。きちんと出来ていれば任意のフォルダを右クリックした時にコマンドプロンプトを起動するショートカットメニューが出来ているはずです。

cmd

コマンドプロンプトで入力補完する。

対象はWin2000のみです。
[ 安全な方法 ]
f オプションを付けてコマンドプロンプトを起動するという方法があります。「スタートメニュー」から「ファイル名を指定して実行」で

cmd.exe /f:on

と打ちます。するとファイル名とフォルダ(ディレクトリ)名をCtrl+FCtrl+Dで補完出来るようになります。ただ、いちいちこれでは面倒くさい。なので、ショートカットのプロパティで指定しましょう。コマンドプロンプトのショートカットのプロパティを開きます。ショートカットというタブが開くと思いますが、リンク先というところに

%SystemRoot%\system32\CMD.EXE

などと書かれていると思いますが、ここに/f:onを付け加え、

%SystemRoot%\system32\CMD.EXE /f:on

とします。これで、補完が出来るようになります。また、作業フォルダという欄がありますが、ここにいつも使う作業フォルダを指定しておくと(例えば、D:\workなど)そこまで行く必要がなくなります。

option


これはこれで便利なんですが、私はTabで補完したい人なので、ちょっと不満です。

[ 危険を伴う方法 ]
* この方法はレジストリを書き換える作業です。下手するとWindowsが起動しなくなる可能性を秘めています。何が起きても責任は取り兼ねますので、全て自己責任で行ってください

「スタートメニュー」から「ファイル名を指定して実行」で「regedit」と打ち、レジストリエディタを起動。

HKEY_CURRENT_USER \Software \Microsoft \Command Processor

にある、"CompletionChar"というDWORD値の値を9(16進数)に変更します。これでTab補完出来るようになります。基本的にこれはファイル名の入力補完で、ディレクトリ名の補完はPathCompletionCharというDWORD値を変更(新規作成)する必要がありますが、なくても補完してくれます。

regedit


また、参考までに値ですが、私はTabが良いので9にしましたが、他にも以下のような対応がありますので、好きにしてください。表の値は全て16進数です。

補完キー 補完キー
Ctrl + A 1 Ctrl + P 10
Ctrl + B 2 Ctrl + Q 11
Ctrl + D 4 Ctrl + R 12
Ctrl + E 5 Ctrl + T 14
Ctrl + F 6 Ctrl + U 15
Ctrl + G 7 Ctrl + V 16
Ctrl + H 8 Ctrl + W 17
Ctrl + I 9 Ctrl + X 18
Tab 9 Ctrl + Y 19
Ctrl + K B Ctrl + Z 1A
Ctrl + L C Ctrl + [ 1B
Ctrl + N E Ctrl + \ 1C
Ctrl + O F Ctrl + ] 1D


フリーで使えるFortranのコンパイラ。

Fortranのコンパイラって結構なお値段がします。個人用に買うには痛すぎる価格です。となると、フリーで使えるFortranのコンパイラが必要でしょう。ここでは、私が知っているフリーのコンパイラを紹介します。インストール方法などは、他のサイトに譲ります(やったことないから説明出来ないだけ)。
  1. GCC( GNU Compiler Collection)のg77
    UNIXユーザなら迷わずこれ。Linuxとかだと最初から入ってるのかな?よー分からんけど。
    Cygwin + g77でWindowsでも使えるようになるらしい。
  2. Watcom Fortran 77 Version 11.0c
    Fortran90の仕様を一部取り入れているとの事です。
  3. Salford SOFTWAREのFTN77 Personal Edition
    非商用の個人使用に限りフリーとのことです。GUIとしてCPad for Salford FTN77というのもあるそうです。
フリーで使えるFortranコンパイラは90はほとんど使えないみたいですね。この他にも知ってると言う人は教えてください。
 

 Copyright © 2000-2004 Hiroshi Kurabayashi. All Rights Reserved.アクセス解析