まったり アイマス2

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

3494. データベース、続き^6

2021年08月19日 | 日記

 文字列型に関しては、私は初期のパソコンBASICのやり方が気に入っています。おそらく今のVisual BASICでも同様。表計算ソフトでも文字列は単純型扱いです。
 現在の計算機で文字列という場合は普通は8bitの列を指します。バイトとかオクテットと呼ばれるものが単位で、それを系列として並べたものです。

 C言語などの普通の計算機言語はASCII 94文字(コード33~コード126)で記述できるように設計されます。数字とアルファベットとハイフンやピリオドなどの若干の記号です。現在は大型機のEBCDICはほぼ考えなくて良いので、これでもかなり楽になりました。
 ASCIIではコード0~31とコード127は特別で、改行などの制御文字です。コード127はあまりまともな解説を見たことはないのですが、私の感触では紙テープで打ち間違えたときに位置を一つ戻して穴を全部に空けて無かったことにする、と言う意味の抹消です。
 コード32の空白は印字文字と制御文字の両方の性格を持つ唯一の文字です。
 これでコード0~127の7bitが埋められます。

 紙テープは5単位から8単位の4種が流通していたそうで、しかし私は8単位のものしか知りません。スプロケットだったか紙送り用の小さな穴の片側に3個の穴があって、その反対側を2穴→5穴と増やしてゆくみたいです。5bitは国際テレックス網の単位だったか。これが世界を変えたはずですが、仮名文字は無くて我が国は完全に蚊帳の外。ASCIIは本来は7bitで、これも通信規約のはずです。8bit目はパリティと言って誤り訂正に使われたはずです。はずですって、さすがにこれも私はよく知りません。

 早いとこ漢字をどう扱うかの話に持って行きたいのですが、まだこの感じがちょっと続くと思います。

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

3493. データベース、続き^5

2021年08月19日 | 日記

 なんだか話が間延びしそうなので、途中で書いている私がつまらないと思った時点で終了すると思います。悪しからず。

 多少議論になりそうなのは文字列型で、これを(計算機の)整数や実数のように単純データ型と見なすのか、配列のような複合データ型と見なすのか。

 私が計算機言語の原点と思っている(初期の) FORTRANでは整数(integer: 32bit符号付き2の補数表現が普通)と実数(real (単精度浮動小数点数) / double precision (倍精度浮動小数点数))が区別されていて、たしかこの頃のFORTRANでは混在が不可能で、混ぜるときは変換関数をプログラマがしっかり書かないとコンパイルの段階でエラーを食らったと思います。
 当時は紙カードに穴をパンチするのがプログラム打ち込みで、結果は翌日などに計算センターからラインプリンタで返されるので、あっさりコンパイラからsyntax errorなどと出力された用紙を見て面食らった…、はずです。いや、さすがに今は老人の私でもこの経験はほとんどありません。
 なので、コンパイラはソースプログラムを解析していって、最初の解析不能バグで報告して停止するのでは無く、そのままコンパイルを続けてバグを総出しするのが普通です。
 通常、括弧の閉じ忘れなどが起こると、その後のプログラムはめちゃくちゃに解釈されてしまうので無駄なプリンタ出力になることが多いですが、この、いいから続けろ方式が好まれます。現在のいわゆる統合開発環境でもそうなってます。

 1970年頃のNHKコンピュータ講座でもすでにオンライン端末を使っていましたから、プログラムにバグがあったら直ちに計算機がその旨を返事します。スタジオで実時間で講師が対応していたはずです。普通はリハーサルで潰されていたようですが、重要でありがちな事態は番組で対処法が紹介されていたと思います。

 つまり、数値型と言っても初期のFORTRAN段階で3つの型が存在します。型(type)は同じ数値、たとえば数値1をメモリ上で表すのに3方式が存在する、ということ。
 この区別は初期のパソコンBASICにはありません。現在の表計算ソフトも数値型は数値型の1種だけです。
 現在のパソコンのCPUは驚愕の高性能なので、万能感のある64bit IEEE浮動小数点数で押し通してもそんなに速度は落ちないと思います(トータルで1/10程度には収まると思う)。なにせ、機械語に浮動小数点数と整数の変換命令があるので、それを使えば万事OKです。

 片や現在逐次実行型コンパイル言語代表のC言語では数値型が沢山あります。主なもので、char、int、doubleの3種です。それぞれ1文字ASCIIコード(0~127)、2の補数の(16/32/64bit)整数、64bit IEEE浮動小数点数です。つまり私は特に必要で無い限りこの3型しか使いません。しかし、派生形が山ほどあって、間の悪いことにCPUによって整数精度が異なったりして、多分、C言語の生産性が悪い感じがする原因の一つがここと思います。

 次回は文字列型の話のつもりですが、予想通り、楽屋落ちの感じの話が続くと思います。あるいは、続きません。

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