昨日は遅かったのですけど、それなりにまったりと仕事していたから、そんなに疲れなかったんですよ。
でも、家に帰ってから時間がたつにつれてかなり疲れが。
今日は定時に上がってきたのですけど、これまた疲れが。
なんか今までの疲れがかなりたまってきてるみたいですね。
仕事ではメインでFortranを使ってるわけなんですけど、大体FORTRAN 77とFortran 90の折衷ぐらいの使い方しかしてないんですよね。
Fortran 90のmoduleの機能はかなり便利なんだけどなぁ。
で、そうこう言ってるうちに、Fortran 95を採用してるコンパイラーもメジャーになってきてるし。Fortran 2003にも一部対応してますね。
で、色々と調べてたら、Fortran 2008なんてのもあったりして。かなりCとの融和が進んで、オブジェクト指向にも対応してたりしてるので、かなり言語仕様が拡張されてるんですよね。
基本的なところは変わってないのですけど、かなり廃止された機能があったりして。
まぁ、Fortran 90になったときも、かなり変化が大きかったからなぁ。
有名なのは、昔のFORTRAN 77以前のコンパイラーは文字の間に空白があっても普通に解釈してくれたこととか。
例えば、W R I T E ( 6 , 1000 ) A と書いても、WRITE(6,1000) Aと同じに解釈されてたんですよね。これのためにアメリカの宇宙関連で大きなバグが乗ってしまったんだとか。
Fortranではループを実現するのにDO文というのを使います。
DO 100 I=1,10
……
100 CONOTINUE
みたいに。(本当は文は7カラム目から始まらないといけないのですけど、ここではそれは省略) それが、コンマの部分をピリオドにまちがえてコーディングしてしまったんだとか。そうすると、DO100I = 1.10という変数DO100Iへの代入として解釈されてしまうので、ループが実行されなかったんだそうです。
今は予約語や変数などの文字列の間の空白は禁止されてます。
時代も変わったよなぁ。
昔はDO文も上のように行番号を使ったものですけど、今は
DO I=1,10
……
END DO
で済むようになったし。(これは結構便利だけど、昔よりもどこまでがループなのかわかりにくくなってしまいました。だからインデントが重要になる。)
ファイル入出力時の書式指定も行番号で行っていたんですよ。
WRITE(6,1000) A,B
1000 FORMAT(1H ,A8,F6.1)
みたいだったのが、Fortran 95だったか2003だかではFORMAT文そのものが非推奨になって、
write(6,'(" ",a8,f6.1)') a,b
みたいに書くようになってきてます。(行頭のスペースは今は意味を持たないし。)
私もようやっとFortran 90の機能に慣れてきたばかりなんですけど、Fortran 95にも興味はあるし、Fortran 2003とかの機能にもおもしろそうなものがあったりするので、これらが使えるようなコンパイラーが早く整備されるのが楽しみです。
一部はGCCなどのFreeのコンパイラーでも使えるようにはなってるんですけどね。でもg77ではだめでgfortranを使わないと。cygwinに入ってるmingwのFortranはg77だけなんですよ。GCC 3.xだからな。でも、MinGWの最新版に入ってるGCCはFortran 95対応で、一部Fortran 2003の機能も入れたgfortran が入ってるし。うふ。
でも、こういうことばっかりやってるから、Cとか他の言語の習得ができないんだよなぁ。
ちなみに、Fortranは習得までのハードルが非常に低く、生産性が高い言語だと言われてます。もっとも最近のFortranは機能が増えてきてるので、こういった特徴は失われつつあるのかもしれませんが。
Fortran(^^)暗黙の宣言でi,j,kが整数型に~
i,j,k,l,mではじまる変数ですね。<br>でも最近はimplicit noneで変数宣言する方が推奨されてますけど。