まったり アイマス2

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

3402. 対応

2021年05月13日 | 日記

 本日も昼食と称して職場近所の量販店へ。新型コロナ感染症の緊急事態宣言/まん防のため、いくつかの大型店が閉鎖中です。しかし、店によって温度差があって、ゴールデンウィーク後に全館再開したところもあれば、逆に閉鎖したところも、そのまま閉鎖中の所もあり、要するに多少の混乱があるみたいです。
 ゴールデンウィーク直前に比べて、人出はさすがに少し減りましたし、飲食店の席の取り方などは強化されましたから、政策の効果はあるような気がします。

 なので、とある再開されたやや大型の書店に行ってみました。聖書は売られていますが、私の持っている新共同訳と同じみたいです。新訳があるはずですが、そちらは見当たりません。しかしなぜかその新訳の解説書だけはあって、いわゆるポリコレ対応の感じです。現代風というか、やや学術指向というか。
 ここはキリスト教会と信者が決めることなので、私は意見は言いません。感じとして、今は普及している新共同訳の日本語訳を採用するのが無難なような気がします。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

3401. 無限精度分数、続き^6

2021年05月13日 | 日記

 つまり、8bitマシンのまともなLISP処理系は、私は見たことがありません。
 私が最初に買ったNEC PC-6001 (オリジナル版)には、純LISPと称する投稿ソフトがあって、動作させてみましたが、今から考えるとdefun特殊形式が無く、lambdaだけしか無く、要するに一時記憶(局所変数)だけで、(internと呼ばれる)LISP内部のデータベース(大域変数)がありません。だから、単に関数(特殊形式を含む)を実行させるだけなので、任意のプログラムが組めるか否か、と言われると、組めると言わざるを得ませんが、チューリング機械のプログラムをしている感じで、特にコンピュータゲームが組めないのは致命的欠陥でした。いや、普通に入出力(とタイマ、つまり組み込みマイコン)を備えれば、チューリング機械だってコンピュータゲームは組めると思うので、それが無かった、ということ。

 ですから、16bitマシン(PC-9801 F2)になった途端にごくまともなLISP処理系(muLISP)が出たのには大変に驚いた記憶があります。もちろん、いろいろ試しましたが、前述のように、つまらない理由で(LISPの)マクロがまともに扱えないので、まあ、普通。専用エディタは重宝しました。
 ちなみに、カシオAI-1000と呼ばれるLISPポケコンはこのあたりがクリアされていて、LISP自体は使えました。こちらの難点は、単にポケコンである、というだけ。電卓の一派生形なので、数値演算は10進浮動小数点しかなく、無限精度の整数/分数とはほとんど関係がありません。

 無限整数/無限分数とLISPで採用されたリスト構造体はとても相性が良いです。現在のC言語や表計算ソフトは、いわゆる32bitや64bitの符号付き整数と、32bitや64bitのIEEE浮動小数点形式、いわゆる実数、がメインと思います。
 たとえば、整数12345678901234567890は、リスト形式にすると、

 (1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0)

の感じの、位取り記数法の1要素、つまり0~9の数字のリストで表現できます。しかし、多分おそらく、加算や乗算のためには逆順が有利で、

 (0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1)

とする方が取り扱いが楽になると思います。印字の時には、リストの要素を逆転するreverse関数を使えばお終いです。
 演算は足し算なら、2数の各要素を先頭から足し算して、要素が10を越えたら桁上がりなので、次の要素の和にさらに1を足します。引き算や掛け算は自明と思います。っと、負数があれば一工夫が必要かも。

 割り算は筆算の割り算アルゴリズムを使用すれば良いと思います(逐次処理)。2進なら単に桁合わせ(シフト操作)と加減算で済みますが、10進のままだと表引き、いわゆる二一天作の五、などの割り算の九九の表が必要となります。これは冗談では無く、実際にCPU内で加速機構としてやっているみたいで、おそらく16進などの計算表が内蔵されているはずです。これのバグが有名な…、この話題は微妙なのでパスします。

 無限精度分数は当然、上述の無限整数のリストを2個、ペアにすればお終いです。分子と分母です、念のため。

 途中ですが、先送りにします。給料のための明日の仕事があるので、休息が必要です。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする