人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

FORTRAN77言語のプログラム構築の限界

ただいまFORTRAN77を学習しております
基本的な構文(IF,DO,SUBROUTINE,FUNCTION)までやってみて
思ったのですが

いまいち計算しか出来ない言語に思えてきました
C言語やJavaScriptはFORTRANの次に出来た言語ですから
たくさんの処理が出来るのは分かりますが

FORTRANでの処理が少なすぎると思います
演算以外の事は出来るのですか!?
玄人プログラマーさま方回答お願いします

●質問者: 八咫烏
●カテゴリ:コンピュータ インターネット
○ 状態 :終了
└ 回答数 : 7/7件

▽最新の回答へ

1 ● a-kuma3
ベストアンサー

ただいまFORTRAN77を学習しております

なんで、八咫烏さんが Fortran を、という疑問は脇によけておくとして、

(玄人かどうかはわからんですが)経験者として。


「演算以外のこと」というと、画面の描画とかになると思うんですが、

割と最近の言語でも、言語の仕様として組み込まれているか、というと、

そういうことではなくて、「ライブラリが充実してる」だけです。


質問であげられてる範囲だと、javascript は境界があいまいですが、

C言語なんかは、言語の仕様として定められているわけではなく、

使えるライブラリが充実しているだけです。

だから、何かの画面を作るにしても、Windows と Unix で、ライブラリで用意されている

関数の呼び出し方が全く違っている、というようなことがおきます。


もう、20年くらい前のことですが、汎用機の OS で、Fortran から呼び出せる

グラフィックのライブラリを使って、CAD っぽい画面を作ってたことがあります。

線を引くとか、領域を塗りつぶす、みたいたサブルーチンが Fortran から呼び出せるように

作ってあるライブラリを使ってました。


Fortran や COBOL が古いなあ、と思うのは、変数などのスコープが自由にならないことだと思います。

関数やサブルーチンの再帰的な呼び出しができない、とか、

変数の宣言がモジュールの先頭でしかできないので、プログラムの全体を眺めないと、

変数の名前を自由につけられない、とか。


後、変数のメモリ割り当てが自由にできない、というのも、古さを感じさせます。

古い人に言わせると、「だから、メモリリークが存在しないんだ」とか言い出しますが、

ソースの中で配列の最大値を固定で書いて、それを超えるデータを扱えない、

というようなプログラムしか書けません。


書きだすとキリが無い話題ですが、質問の意図とずれているところがあれば、

指摘してもらえれば、答えられる範囲で回答します。

◎質問者からの返答

なんとなくこの質問にa-kuma3さんが来てくれると思っていました

一応とある書物で読んだのですが

「プログラミングをするうえで古い言語は一度はしておけ」と

書物に書いてあったのです

それがきっかけですね(アセンブラはお手上げ)

確かにライブラリが現代人気を占める言語に携わっていましたね

Perlもモジュールを用いてWindowを作ったりTkでしたかな

後はあまり知りません

C言語のライブラリも友人が文字列のソートの時に使っているのを目のあたりにしました、しかしそれを考えるとJavaScriptについて説明に悩んでしまいますが...

FORTRANでCADの絵画が出来るのですか!!

正直コンパイルして実行しても返す文字は数字か文字だけ

少しソースが気になったり

確かにFORTRANはいろいろと規制がありますね

変数は6文字しかおけないという記述をサラッと見た覚えがあります

話はかわりますが

FORTRANの構文はやはり(Whileやforにそれに携わるbreakやcontinue)が無いのも

扱いづらく思いました

なかなか詳しい説明ありがとうございます!!

たくさんの言語やOSについて長く携わっておられるのですね


近々Linuxの不具合の対処について質問しようと思っているのです

前回のLinuxの不具合での質問ではコメント欄で見守っていただいた時の事を覚えています

もしよければ分かる不具合について一緒に考えていただきたいのです


2 ● sibazyun

昔アセンブラ、Fortranをやっていました。

計算機でできることは皆アセンブラでできますし、

スマートに書けるかどうかは別にして

Fortranでできます(もちろん、READ, WRITEも含めてですが)

で、「演算/計算以外」とは具体的にどのようなことを指すのでしょうか。

すべては(アセンブラも含めて)「演算/計算」と思いますが。

例えばメモリ空間内の検索。これはメモリ空間に対して

検索指示語と同じかどうかを探すことを繰り返して

行うという演算です。

画像処理、音声処理、CADソフトというのも、昔はFortranで

書いていました。

(追記)

音声処理というのは、入出力は別として、デジタルデータとしてみれば

例えばフーリエ演算ですが、これはもろ数値計算ですね。

画面上に一本、線分を描くというのも、Y=A*X+Bに従って、

2次元平面を、「Xが一つ増えたら、そのYはどこか」を始点から

終点まで繰り返していく処理です。

◎質問者からの返答

sibazyunさんもアセンブラやFORTRANをやっておられたのですね

演算や計算以外とは自分の中でマウスを連携したウインドウでの操作などをさします

FORTRANもそうですがC言語も初めは単に黒い画面と向きあって計算の処理を繰り返します

そして初問を突破してようやくその土台からゲームなどを作ったりするわけですが

FORTRANはC言語の前の言語ですからC言語は超えられなくても

それに沿う形で何かしらの処理は出来ないのだろうか!?

という疑問がわき質問させていただきました

音声処理なんてものがFORTRANにあるのですか...

入門書を一通り読んでも最後がCommon文やサブルーチンとかでしたから...

sibazyunさんも長い人生の中でたくさんの事を勉学されているのですね

その飛び抜けた知識に驚くばかりです

アセンブラこそがプログラマーを選ぶ言語なのでしょうかね...

BASICが一般人のうち1/10が理解できたら

アセンブラはそのBASICが出来た人のうちの1/10しか理解できないという

言語のレベルを説明している本で見た覚えがあります


3 ● やまだまや(真優)

FORTRANはおっしゃる通り、数値演算に強い言語です。C言語も同じですが、裸で走らせればWindowsで箱入り娘になったソフトより100倍くらい処理速度はあります(アセンブラや機械語はもっと速い)ですが、インターフェースに乏しいですね。私はGASと言うインターフェース的なサブルーチン群(中身は殆どアセンブラ)を共用する事によりグラフィック画面に図形を表示させました。面白い使い方としてはC言語が得意とするビット毎の計算や論理演算、変数を2重定義(バイト数が違う変数として共用)なども出来ることです。FORTRAN,COBOL、APL,PLI(ピーエルワン)などは第3世代、旧C言語は3.5世代と言われています。面白いのは(変数・命令が)日本語の方言で組める言語もありました。私は「逆ポーランド法」でプログラムを組むのは好きです。

◎質問者からの返答

何時も思うのですが言語の処理スピードには何が関係しているのかが気になります

コンパイラ言語かインタープリタ言語か

そこから徐々に分けてC言語が早いという記事を見ました

低級言語の方がそれなりに機械処理の形に近いから

早い!?ということでしょうか

もしアセンブラに画像処理なんてものがあったらソースが大変な事になる

気がしました

結構難しい話なため面白いのか理解に悩んでしまいます...

言語も時代と共に世代の名前がつけられているんですね

FORTRANのライバルがALGOL、COBOL、そしてPascalが現れそれに対抗する形でPL/1が登場したけど勝てずFORTRAN77が登場したというお話を見ました

逆ポーランド法ですか見てみましたがなかなかユニークな方法ですね


4 ● okamotoy

FORTRANで書くのは大量の数値処理だけで,他はライブラリにお任せするのがよいです.(他の方が書いてらっしゃる通りです.)

かつて(あまりライブラリが充実していない状況)、FORTRANで書きづらい処理は多言語(CやPL/I的な言語やアセンブラ)で書いた副プログラムや関数を使うなど適材適所で言語選択するやり方をしていました.

なので,グラフィックデバイスやプレゼンテーション層のライブラリ提供者には,とっても感謝しております (^^;

また,言語は書き易さで選択するもので,プログラマ・コンパイラ・インタープリタ・リンカ・OS・ハードウェアの優秀さが性能を左右します.

◎質問者からの返答

やはりFORTRANは単に数値計算の処理が素晴らしい事を追求しているのですね

ライブラリを使わないとやはり単なる演算や計算ということはどの言語も

一緒であると今回理解しました

FORTRANやアセンブラという言語が現代ではほとんど使われなくなった中

それらの言語の行方はやはり今流行りのJava,C,またはWEBで充実のPerl,JavaScript

そのような比較的新しい言語をするプログラマーが原点に回心してする

ものだと思っています

正直古いプログラミングで大文字の仕様が多いいやデフォルトですかな

気になる所がありました

ライブラリが充実してそれなりにGUIに適応できるソースを記述できるように

なったのですね

「言語は人を選ぶ」ととある友人が言っておりました


5 ● Baku7770

できると言えばできますし、できないと言えばできないと言えるでしょう。

まず、図形描画という点ではa-kuma3さんが#a1で指摘されている通り、Fortranにもグラフィックライブラリが提供されていましたから、私の学生時代だと流体の流れを図式化していました。

Fortranの出現当時は各社個別に言語もライブラリも提供していましたから、呼び出しは違ってくるのが常識とされていました。

ライブラリを含めて言語と見るなら可能ですし、ライブラリを言語と見なさないなら不可能です。これはCも含めて同じです。

音声処理については、初期においてはFortranで行われていましたよ。入力装置があってデジタルデータになれば後は別に言語は殆ど問われませんからね。

何点か指摘をしますと、最近のFortranならCASE文というものがありますから、ストラクチャードプログラミングにかなり対応していると思います。

また、リカーシブ(再帰)についてはむしろAlgolが目指した理学の世界が必要としたものであって、Fortranが重宝された工学の世界ではむしろ避けられた手法ですからね。そこに中西正和先生の11行プログラムという傑作が書かれるきっかけが生じたわけです。

http://www.jssac.org/Editor/Suushiki/V12/No3/V12N3_102.pdf

それと、

>FORTRANのライバルがALGOL、COBOL、そしてPascalが現れそれに対抗する形でPL/1が登場したけど勝てずFORTRAN77が登場したというお話を見ました

ここはどういった資料か存じませんが大きく誤解をした資料ですね。FORTRANのライバルがALGOL、COBOLってそれぞれの分野で相容れないものがありましたし、PL/IはFORTRAN、ALGOL、COBOLの全てを統合する言語として登場させたものであって、ライバル視はしていませんでしたし、PascalはALGOLの改良版を求める国際コンテストで落選した言語(採用はSimula)で、PL/?よりずっと後に持て囃されるようになりましたからね。

ですから、私の専門分野の文献で言えば、理論先行の流体力学の文献はALGOLで書かれていましたが、実際の製品の設計や性能に関する流体工学はFortranで書かれていましたからね。

逆にその資料にADAがどう書かれているか興味のあるところです。

◎質問者からの返答

今、大人方のみなさんの学生時代ではやはり

今言われる古い言語が一般に使用されていたのですね

OSもそうですが今思えば、昔に比べ不可能なことが随分と可能になりましたね

WEBの方しかあまり携わっていませんが

HTMLの進化論を見たのでなんとなくFORTRAN系列も分かります

C言語もライブラリがなければただ黒い画面に演算結果が算出されるのは

FORTRANと全く同じですね

FORTRANの簡易説明書(先程のライバルの話が書かれていた本です)を読んでも

実行画面はすべて文字でしたので

その説明書にはCASE文について書かれていませんでした

やはり入門から外されるレベルなのでしょうか

あげられたPDFの内容も興味深そうなので後でじっくり読んでみます


あとライバル関連の話の概要をもう少し説明すると

IBM社が開発したFORTRANの使いが悪くピンチになったとの事でした

開発元の会社等は詳しくありませんが見たとき開発元が違うのかなと思いましたね

Pascalが滅びてPerlが標準になったという話も聞いているぐらいです

FORTRANしか目にしていないためPL/1やALGOL,COBOLがどのような仕様かは分かりませんが古い言語にもなかなか面白い可能性があったのですね


1-5件表示/7件
4.前の5件|次5件6.
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ