ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
Main Menu
Tweet
Facebook
Line
:-?
フラット表示 前のトピック | 次のトピック
投稿者 スレッド
webadm
投稿日時: 2008-2-12 5:20
Webmaster
登録日: 2004-11-7
居住地:
投稿: 3086
512バイトは長いか短いか
社会人になってソフトウェア開発者として最初に手がけたプログラムはたった512バイトのアセンブラプログラムだった。

設計からコーディングと机上デバッグまで一ヶ月かかってやっと実機テストの許可が出てバッチシステムでアセンブルして出来上がったバイナリがぴったり512バイト。ハードディスクの1セクタしか無い。

アセンブルリストは相当の行数になる(ソースコードはコメントを含めれば十数ページにもなる)のに、バイナリにするとバイナリダンプしてもラインプリンタ用紙たった1枚にしかならないことを知って愕然とした。

当時は1人月約1kBとかいうまことしやかなプログラムの生産性基準があった時代なので512バイトだと1/2人月分に相当する。

当時はまだ実用になるプログラミング言語がアセンブラしかなかったので組み込み用のアプリケーションも全部アセンブラでごりごり書いていた。実際にはコーディングは大した作業比率は占めておらず、もっぱら設計と机上デバッグに時間を費やしていた時代である。

後にベル研のUNIXに端を発するC言語が組み込みソフトウェア用の言語を席巻するが、その間にはIntelのPL/Iとかが最適化が優れていて魅力的だったものの独自言語で業界標準にするつもりも無かったらしく早々に消滅してしまった。

それでもまだ当時はメモリが貴重で同じ機能ならばサイズが少ない程優れていると評価されていた。

今にして思えば、512バイトということはビットにして4096ビットでしかない。4096ビットで表されるパターンは2^4096通りしかない。といっても天文学的な数になるが、有限であることには変わりは無い。単に私はその数あるパターンの中の一つのカードを引いただけにすぎないのではないかと思うようになった。隣のカードにはどっかのビットが1ビットだけ違うまったく似たようなプログラムコードが沢山ある可能性を示している。それぞれ動きは微妙に違ったり、バグ入りのパターンも含まれているわけである。

そんなふうに考えると、俳句とか5,7,5句とかなら一文字が2バイトコードとすればたった17文字で、ビットで表すとたった272ビットしかない。これはもう力づくで全パターンを調べつくすことだって出来ない範囲ではない。全文字が意味のある16ビットコードからなるパターンを篩にかければ、かなり限定された数になるはず。古今東西この272ビットのうちの残りの未開拓なパターンを見いだすために俳人は努力しているのだろうか。

暗号化の分野では鍵の長さが短いものはもうだめくさい。64bitとかは今でいえば短すぎる。1024bitも短いけど64bitに比べれば長いのでいいやという感じである。

そんなことを考えていると昔作った512バイトのプログラムも、4096ビットのパターンの中からオール1が長く続いたりオール0が長く続くパターンから成るものを篩で落として、ランダムにビットが変化しているようなパターンの中には無数の有益なプログラムが存在しているに違いない。命令コード体系がアーキテクチャによって変わるのであるパターンはあるアーキテクチャには有益なコードだが、他のアーキテクチャにとっては無益なゴミとなる。

512バイトの中に"hello wolrd"とかいう文字列を含むパターンを篩にかければ、その中には本当のhello wolrdプログラムがいくつか出てくるに違いない。

かといって仕事で、設計やコーディングにデバッグが面倒くさいからといって、乱数生成器をつかってそれらしきサイズのそれらしきコード列を含むパターンを見つけ出すという気はもうとう無い。コンピューターの性能が飛躍的に高くなった未来の世界では、短いビット長ではそういうのも出来るようになるのかもしれない。
フラット表示 前のトピック | 次のトピック

題名 投稿者 日時
 » 512バイトは長いか短いか webadm 2008-2-12 5:20

投稿するにはまず登録を
 
ページ変換(Google Translation)
サイト内検索