想い出日記「四則演算」
整数BASICを含めて、必ず必要なのが四則演算ルーチンです。
特に、速度が遅いとされる「割り算」のプログラムは比較してしまいます。
他には「引き算」もやや注目します。
通常は、16進数(2進数)に変換してのビット移動を利用します。
ただ、知らない所で色々な方法・工夫が行われているでしょう。
2進数のかけ算は、ビットの繰り上げになります。
引き算は、シンプルには符号ビットとで負数を表し、負号を除いて計算する方法もありました。
コンパイラ時代でも、添付リンクルーチンとして存在します。(2011/04/03)
想い出日記「座標変換」
高級関数の計算は、割り算と同様に時間がかかります。
これを、回転系の座標変換で行うアルゴリズムが提案されました。
どの程度利用されていたか不明ですが、「BASIC09」では使用されていました。
数値解析の様に、繰り返し計算で近似値を求める方法です。
関数の種類で、演算速度が変わる事と、用途によって関数の使用頻度が異なる為に実感は不明でした。
たぶん、機械語レベルの相性も影響するのでしょう。
その後は、CPUのマイクロプログラムでのサポートもあり、ソフトの比重自体が変化しています。
ハードとファームウエアとソフトとのトータルで、演算速度は決まる時代です。(2011/04/10)
想い出日記「構造化構文」
分岐命令の種類で、構造化されているかどうかを判定されていた時がありました。
簡単にいえば、再帰可能なプログラムが書けるかどうか。
もう一歩進んで、どのコマンドを使用しても、再帰可能なプログラムになる言語かどうかです。
これの最初は、「BASIC09」でした。
これ以降は、言語の種類は異なっても再帰言語は必須となりました。
それは、OS時代が始まり、コンパイルされたプログラムがその要件として必要となったからです。
逆に言えば、言語は種類ではなく、機能がどのようなものかという事です。
BASICは、内容を変えながら種類としては残る事になりました。(2011/04/17)
想い出日記「相対アドレス・ルーチン」
同時に要求されたのが、プログラムがメイン記憶上のどのアドレスでも動作する事です。
OS時代では、複数のプログラムをロードして動作させます。
その場合に、単純にどこにロードしても動作する事が望ましいです。
OSから見れば、ブラックボックス的なルーチンを、自由な場所に置いても動作する事になります。
これは多重処理や、自動リンクやスワップなど多数の仕組みに対応出来ます。
ロード時に、配置アドレスに変換する方法もありますが、シンプルな方法を目指すでしょう。
そもそも、これはプログラム言語が対応すれば、それから作られたアプリケーションでも達成出来ます。
プログラム言語への要求です。(2011/04/23)