goo blog サービス終了のお知らせ 

まったり アイマス2

アイドルマスター2 超ライトユーザーのプレイ日記

4606. 8bitマシンを使いこなすには、続き^3

2024年10月29日 | 日記

 多少議論が熱くなってきましたが、88SR当時のマイコン少年少女の熱気には勝てる訳ないので、そのまま続けます。

 前項の議論を見ると、FOR/NEXTのループとGOSUB/RETURNのサブルーチン呼び出しとはどこが違うのか、との観点を抱いた方もおられると思います。鋭いです。私がソフト開発の社長なら引っこ抜いてでも雇いたいです。

 計算機科学の立場から言うと違いは無いです。どちらもラムダ関数呼び出しに相当します。この場合、末尾再帰が単純ループ、つまりGOTOに相当する、という逆アイデアというか気づきが必要でしょう。数学的帰納法に相当して、分岐しなければ単純ループになります。分岐すると組み合わせ爆発が起きて、本質的にそういった問題はありますけど、計算機科学では効率の観点上、なるべく避けます。

 その昔の話で恐縮です。今は忘れられたワーニエ法というのがあります。今はHIPOと呼ばれる方法で残っているはずですが、こちらも相当のマニアとかベテランでないと想起できないはずです。SE的な立場の方は学習しておくと、きっと良いことが起こると思います。

 要点はIPOの部分で、前処理→ループ処理→後処理、の感じになります。計数型電子計算機(コンピュータ)をわざわざ使うのは(単純)ループ処理ができること、と断言して良いくらいで、ただしループ内処理が本当に同じ処理なら全くの無駄で、ではなくて次々と次のデータを処理するから値打ちがあります。

 言いたいのは、関数呼び出しには振り分け担当の前処理(および後処理)を含む総括部分への呼び出しと、ループ本体担当への突入への関数呼び出しの2種類が分類できる、と考えると、構造化プログラミング全盛の現代風になるはずです。

 ですから、BASICでは両者の文法が分かれていて、前処理/後処理を含む部分がGOSUB/RETURNで、ループ本体が、当たり前ですが、FOR/NEXTです。脱出はラムダ関数だとRETURN相当です。しかしBASICなど通常のプログラミング言語では明確に文法が異なります。もちろん、そうした方が(読む人間に)分かりやすいからです。

コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 4605. 8bitマシンを使いこな... | トップ | 4607. 8bitマシンを使いこな... »
最新の画像もっと見る

コメントを投稿

サービス終了に伴い、10月1日にコメント投稿機能を終了させていただく予定です。
ブログ作成者から承認されるまでコメントは反映されません。

日記」カテゴリの最新記事