週1でも日記

  • このサイトに書かれていることは間違っているかもしれませんので、ご注意ください。
  • 非推奨環境: フォントの大きさが Unreadable な xterm 上のテキストブラウザ
2005][07][08][09][10][11][12][
2006][01][02][03][04][05][06][07][08][09][10][11][12][
2007][01][02][03][04][05][06][07][08][09][10][11][12][
2008][01][02][03][04][05][06][07][08][09][10][11][12][
2009][01][02][03][04][05][06][07][08][09][10][11][12][
2010][01][02][03][04][05][06][07][08][09][10][11][12][
2011][01][02][03][04][05][06][07][08][09][10][11][12][
2012][01][02][03][04][05][06][07][08][09][10][11][12][
2013][01][02][03][04][05][06][07][08][09][10][11][12][
2014][01][02][03][04][05][06][07][08][09][10][11][12][
2015][01][02][03][04][05][06][07][08][09][10][11][12][
2016][01][02][03][04][05][06][07][08][

2016年33週229日星期2 12:00:00 AM 00:00:00

トラックバック - http://d.hatena.ne.jp/yshl/20160816

2016年31週217日星期4 12:00:00 AM 00:00:00

トラックバック - http://d.hatena.ne.jp/yshl/20160804

2016年29週200日星期1 12:00:00 AM 00:00:00

トラックバック - http://d.hatena.ne.jp/yshl/20160718

2016年27週191日星期6 12:00:00 AM 00:00:00

トラックバック - http://d.hatena.ne.jp/yshl/20160709

2016年26週184日星期6 12:00:00 AM 00:00:00

分野を限ると主要な感じになる言語 1種を解説 13:59 分野を限ると主要な感じになる言語 1種を解説を含むブックマーク

なんか流行っているみたいなので便乗する。

FORTRAN

数値計算方面ではバリバリ現役な最初高級言語配列の扱いが簡単だったりと、C と比べて高級な部分があったりする。

最古の高級言語だけあって色々と試行錯誤がなされていて、言語仕様的には意外と面白い。ただ、その手の面白仕様は非推奨になったり、廃止予定になってしまったりする。

そんな、推奨されなかったり、廃止予定になったりした規格を解説する。

entry文

サブルーチン関数の途中から実行できる機能

多分、初期化部分だけ異なるほとんど同じ 2つのサブルーチンを一つにまとめたい、とか、サブルーチンローカル変数を共通化したい、とか、そんな DRY要望から生まれた機能なんじゃないかな、と思う。

選択戻り

サブルーチン引数に文番号 ( gotoジャンプ先 ) を渡すことができる。サブルーチンから return するときにジャンプ先を選択することができる。

ファイルを開く open 文や、ファイルから読む read 文は、エラーになった場合や EOF に達した場合ジャンプ先を引数で渡せるという仕組みになっていて、同じような事をユーザー定義したサブルーチンでもやりたいという要望があったのかな、と思う。

関数では使えない。これは選択戻りを使用したサブルーチンを、ジャンプ先に対応する整数を返す関数としてコンパイルする事を想定しているのかな、と思う。サブルーチンは返り値がないので返り値を追加する事はできるけど、関数は既に返り値があるので、返り値を追加するのは難しいよね、という事かな。

算術if文

与えた式が、正か、0か、負かで、別々の文にジャンプすることができる。

初期の IBMコンピュータに、そういうマシンインストラクションがあったためらしい。

論理 if 文 ( 条件式の真偽で分岐するお馴染みの if 文 ) よりも先に生まれたのだそうだ。

計算goto

与えた式の値によって、ジャンプ先が決まる。ジャンプテーブルみたいなもの。

select case 構文 ( C でいうところの switch case ) が規格になるのは Fortran 90 からで、その代わりに使われていたようだ。

レリス定数

文字数H文字列」という形の文字列定数。'Hello world' は 11HHello world となる。

明らかに文字数を数えるのが面倒くさい。

まとめ

古い FORTRAN には珍しい機能があるので、言語マニアなら一度触ってみるといいと思います。

他にも「型を省略できる」「ポインタが無い」みたいな後のプログラミング言語採用しているような事もあるけど、結局「型を省略できるようにしたけど、バグが出やすいし、implicit none を指定して変数宣言必須にする事を推奨」「ポインタが無いと不便だから、コンパイラの非標準拡張 ( Cray ポインタ ) や、後の規格 ( Fortran 90 ) でポインタ導入」みたいなことになったりしていて、世の中難しいねと思わずにはいられない。

トラックバック - http://d.hatena.ne.jp/yshl/20160702
2005)(07)(08)(09)(10)(11)(12)(
2006)(01)(02)(03)(04)(05)(06)(07)(08)(09)(10)(11)(12)(
2007)(01)(02)(03)(04)(05)(06)(07)(08)(09)(10)(11)(12)(
2008)(01)(02)(03)(04)(05)(06)(07)(08)(09)(10)(11)(12)(
2009)(01)(02)(03)(04)(05)(06)(07)(08)(09)(10)(11)(12)(
2010)(01)(02)(03)(04)(05)(06)(07)(08)(09)(10)(11)(12)(
2011)(01)(02)(03)(04)(05)(06)(07)(08)(09)(10)(11)(12)(
2012)(01)(02)(03)(04)(05)(06)(07)(08)(09)(10)(11)(12)(
2013)(01)(02)(03)(04)(05)(06)(07)(08)(09)(10)(11)(12)(
2014)(01)(02)(03)(04)(05)(06)(07)(08)(09)(10)(11)(12)(
2015)(01)(02)(03)(04)(05)(06)(07)(08)(09)(10)(11)(12)(
2016)(01)(02)(03)(04)(05)(06)(07)(08)(
363886