想い出日記「正論理・負論理」
デジタルでは、「1」と「0」で表します。とは言っても実際の電気回路では、a:「0-0.5V」とb:「2.5-5.0V」との二つに分けます。 その間は「不定」とします。ようするに分からないという事です。
では、aとbのどちらが「1」かというとそれは回路の設計で決まります。bを「1」とするのが正論理といい、aを「1」とするのが 負論理です。統一した決めごとですから殆どは問題はありません。
しかし例外的に、「1」「0」とをフラッグとして使う場合は上記のどちらか分かっていないと困った事になります。フラッグが 立っているのかどうか判断が出来ないからです。
私は、ボードパソコンにアルテアー8kBASICを載せた事があります。しかし動作しませんでした。同じメーカーからの購入品なので 不思議でした。私は無謀にもハンド逆アセンブルを行いました。(まだ逆アセンブラを持っていなかったから)
長い時間がかかりましたが、原因が分かりました。ボードパソコンとプログラム言語の論理が逆だったのです。メーカーを呪いたく なりましたが、キーボードの入力チェックのフラッグの部分が論理が逆で検知出来なかったのです。
8kの中の1バイトのみが、回路板の論理に依存していたのです。なぜこれが販売されていたか今も疑問です。(2008/10/05)
想い出日記「行番号・GO TO 命令」
初期のBASIC言語の特徴であり、欠点とされていたのが「行番号」と「GO TO 命令」です。いわゆる非構造化構文です。
プログラムが行番号を付けられて書かれており、FOR NEXT等の1単位の命令の中から外へ飛び出したり、逆に途中に飛び込んだり が出来ます。これを使用するとプログラムの内容が第三者には理解しにくくなります。制作者にも時間が経過すると忘れる可能性が あります。
もう一つは、基本はインタプリタ言語だった事です。実行速度的に限界がありました。後に、TRUE BASIC となり再登場するときは これらは変更されています。
最初期の言語では、行ジャンプの時はプログラムの最初から該当行を探していました。実行回数が多い命令行は小さい行番号で プログラムの最初に書くという事も行っていました。
マイクロソフト・BASICは、ジャンプ行をマシン語のアドレスに変えておくことで大幅に実行時間を改善しました。これは同時に 行番号の位置にかかわらず行を探す速さが変わらない事を意味します。
「GO TO 命令」はプログラム言語から次第に消えて行きますがエラー等の例外処理としてはのちのちまで残りました。(2008/10/12)
想い出日記「2進化10進数」
初期のBASICの一部・マイクロソフトBASIC等で、注意が必要だったのが「2進化10進数」です。
通常使用している10進数をコンピュータが如何に扱うかの方法です。最初期には、16進数の0−9までを使用していました。 機械語にもこれに対応した命令が準備されています。使用上の問題は有りませんが、メモリーを余分に使用する・計算に時間がかかる 等の欠点もありました。
タイニーBASICは整数しか使用しませんが、マイクロソフトBASIC等は少数も扱います。小数点以下では10進数は「2進化10進数」 では正確にはあらわせません。例えば、「0.1」は無理です。
従って、「I=0.1」という判定式が成立しません。これは使用内容によって「I>=0.1」の様にする必要があります。これはプログラムの 注意点ですが、例えば金銭計算で処理上で少数になる場合は、誤差が発生する可能性があります。これは実用になりません。
用途によっては、マイクロソフトBASIC等は使用を避けられていました。「2進化10進数」誤差に対応するには結構時間を要した 記憶があります。(2008/10/19)
想い出日記「割り算方法」
パソコンだから四則演算は得意とは言ってもアルゴリズムで速度は異なります。
特に影響が大きいのが割り算です。まさか、引き算を繰り返す人は存在しないでしょうが、マシン語レベルで読んでいた頃は 専用命令はないので、異なる方法に巡りあいました。特に符号の問題も大きいです。
通常は2進数で計算を行います。2で割る操作はビットシフトになります。符号を別の所に格納して於いて数値のみを計算して 最後に符号を計算して加えるというのが多かったです。
次に符号を含んだままで、まとめて計算する方法が使用されていました。アルゴリズム的にやや複雑になり、理解したとは言えない 記憶があります。基本的にはプログラミングで割り算を出来る限り掛け算にかえる事が速度向上の常識でした。
大きなプログラム言語になってからは、個々の機械語を読む事はなくなりました。その中で、コーデックという座標変換を用いた アルゴリズムが有名になった事があります。これは小数点数や関数計算機能のある言語用です。私もそれを使用した言語を使用した 期間がありますが早いのかどうかは良く分かりませんでした。(2008/10/26)
機械語に浸り、ミニ言語に熱中した時期
BASIC言語が、ソフトの中心だった時期
アプリケーションソフトの登場でプログラムから離脱