日別アーカイブ: 2016年10月30日

安楽死と自殺幇助とログ改竄と善意と悪意と

自殺幇助は罪に問われます。だから、他人の自殺を手助けしてはいけないのです。

と言うか…、

昨今のマンマシンインタフェースの向上を見るにつけ、思考読み取りなどの技術の進歩も、今後は否定出来なくなる予感もあります。

コンピュータにはログが付き物ですが、ログの改竄だってあるかもしれないでしょ。

だから、自殺幇助が罪に問われない時代が来たら、怖いです。

ある人物の死について、ある人物が深く関与したとして、「手助けしただけだから無罪です」と主張するかもしれない。

だが、なくなった人の思考ログに、その様子が記録されていると主張するかもしれない。

だけど、ログの改竄があれば、自殺した本人の意志と言うログ自体は、改竄された嘘かもしれないと考えるべきだし、意志を読み取るセンサーへの介入があったかもしれない。

本人の意図とは異なる内容がコンピュータに受け取られた結果、死に至るかもしれない。

思考支援ツールの、良い面と悪い面、悪い面は、絶望に導くとか、洗脳するとか。

何でもかんでも、IT化して、いいのですか?と言う問いは、絶望とか洗脳に導く事につながりますか?。

でも、膨大なプログラム群を分析する事に、時間と金をかけていては、競争に負ける。

とか、

足ふみをしていて一円も稼がずにいるより、何かして稼がないと生きてゆけない。

とか。

テクノロジーと魔法と手品は似ているのかもしれない。

常温で溶ける金属。(あまり世間では知られていない)

スプーンを「曲げる」「溶かす」「切断する」と言う行為は、常温で溶ける金属の存在を知る人にとっては、魔法でも無ければ手品でもない。

誰もその存在を知らない場合、「魔法」とか「超能力」になりえる。

一部知れ渡っている場合「手品」になり、

全員が知っている時代においては、「当たり前の出来事」になる。

ITにおいては、「それは不可能です」とか「それは天文学的確率でしか」とか「この世に100%はありません」とかの言葉を信じきっている人に付いては、または信じきっている人々で構成されるグループに置いては、「発生し得ない事柄」として取り扱われるはずです。

ITは、規模がでっかくなりましたので、私も含めて本当に「コンピュータと通信」について理解してやっているのでしょうかね。と言う疑問が。

「スタックマシン」と、「トランザクションマシン」について理解は済ませましたか?とかそういう唐突な質問にたいして、「理解済みです」と回答できる人は何人いるんだろう、「PASCALは再帰呼び出しを多用する場合、リソース管理をきちんとしないとダメだ」と言う人がいますが、その根拠は?と言う質問に回答するには、処理系毎の特性を理解していること言語仕様を理解していることが、挙動を推論する基礎になりますから、回答するには、その辺をマスターしていないときついのでしょう。たぶん。

 

UCSD-P SYSTEM

ふと思い出しました「UCSD-P SYSTEM」

UCSD : University of California San Diego

ちょっと検索してみましょう。

UCSD-P system wiki  とか UCSD PASCAL wiki 等があると思います。

月刊ASCII等のパソコン雑誌やマイコン雑誌で、PC-8001やAPPLE II に並んで広告が出ていたのを思い出します。

画像検索をしてみました。

関連画像は出てきているようですが、日本の雑誌に掲載された画像は見当たりません。

それらをざっと読んで頂いたとしたら、次に見て頂きたいのは

P-コードマシン wikiです。

昔、まだ、8ビットマイコンの時代に、メインメモリーが64Kバイト程度の時代に、UCSD Pascal が、出現し、UCSD-P systemが出現し、Pコードマシンと言う、仮想的なマシンをインタプリター形式でエミュレートするスタックマシンの仕組みがすでに存在してて、8ビットマイコンと言うものすごい貧弱なスペックで動いていた。と言う事実です。

と言った処で、マイブームの回想録であり、他人の方々には、それがどうしたと言う感じでしょう。

そもそも、初めて触ったBASIC言語はインタプリター形式でした。NEC PC-8001 に搭載されていた、N-BASICでした。

うん?、あれ?、あ、そうだった、最初に触ったBASICは、TSSのインタプリターのBASICでした。

TSS : Time sharing system

高校の授業で、数学のアルゴリズムの授業で、FORTRANとCOBOLをちょこっと習った気がするんです。図書館で関連書籍を読んだ記憶とかすこーしあります。

高校時代は、TK-80EμPD8080AFCという8ビットCPUのマシン語に明け暮れては居たものの、学校にコンピュータが無く、FORTRANもCOBOLも試す機会はありませんでした。月刊ASCII等を見ていてBASICはPC-8001で動くというので、BASICは熱心に読んでいました。でも、NEC PC-8001を買うまでは、実際に触るチャンスが無く、どんな感じなんだろうBASICって?。と思っていた所、当時電電公社のショールームと言うかデモンストレーションブースが、京都四条と、大阪の地下街、(大阪南の虹の街だったかな、どこだったけかな)にあったと記憶しています。そこには、DEMOS-EのTSS端末が据え付けてあって、希望者は使わせてもらえたと思います。私は広告でそれを知り、TSS端末使わせてもらって、BASICのサンプルプログラムを打ち込んでみた記憶があります。自宅から京都四条までの電車代も馬鹿にならないので、PC-8001かうべぇ。と決心した記憶があります。

PC-8001を買えば、BASICインタプリターは入っているので使いまくれるのですが、FORTRANとかCOBOLとかは、偉い高価で買えるものではありませんでした。FORTRANやCOBOLの広告は雑誌に掲載されていましたが、白黒広告で素っ気ない広告でした。買っても、当時の私は、それでどうすると言うこともありませんでしたし、あまり興味が沸きませんでした。

そんな中、APPLE IIには、UCSD-P SYSTEMの綺麗な広告がありました。PASCAL,FORTRAN,COBOLが使えるというふれこみだったと思います。

UCSD-P SYSTEMがとても優秀だと言う広告だったような気がします。そして記憶が正しければ、このソフトウェアは48万円ぐらいだったような気がします。

そして、APPLE II DISK SYSTEM にモニターにプリンターを買えば、当時のオフコン(オフィスコンピュータ)に手が届く値段だったような気もします。

と言うことで、私は、APPLE IIについては、知り合いが所有していて、少し触らせてもらったのと、後は眺めていただけでした。

あ、思い出しついでに、大津の膳所に西武百貨店がありまして、当時その中でコンピュータショップと言うか、家電のなかでワンコーナー、パソコンのコーナーがありまして、わずか1年か2年ほどだった気はしますが、近所のマイコン好きが集っていた場所です。NECのシステムイン滋賀か、西武のこのコーナーによく見る面子が集っていた気がします。西武のこのパソコンコーナーには、NEC PC-8001以外に、タンディーラジオシャックのTRS-80COMMODORE PET 2001COMMODORE 64APPLE II沖電気 IF-80等が置かれてたような気がします。気ままに触らせていただけたのが、とてもありがたかったなと思います。その後は、京都寺町の電機屋さん街で、特にニノミヤ無線さんではしょっちゅう触らせていただいておりました。apple Macintosh 等は、ニノミヤ無線さんで、触らせていただいて、ハイパーカード等も使わせていただいた気がします。ニノミヤ無線さんで思い出したのが、ashtontatedBASE III のPRがあり、トライアル版を使わせていただく機会を頂いたことが記憶にあります。

時代は、8ビットマシンのPC-8001から、PC-8801、PC-9801に、そしてソフトウェア的には、N-BAISCはN88-BAISCになり、N88-DISKBASICにと移行していく時代だったと思います。

そんな時代、「N88‐日本語BASIC(86) コンパイラ活用法―MS‐DOS版」と言う(名前だったとおもうのですが)本で、内部構造の解説を見て、驚きました。

「コンパイラーだけど、マシン語にはしていません。」と言うこと。

「コンパイルした後の実行モジュールを動かすには、RUNタイムライブラリと言われるソフトが必須」と言うこと。

つまり自分で過去に組み上げたBASIC言語でかいたソフトをコンパイルしたあと、そのコンパイル結果のファイルを配布しても動かないと言うことでした。RUNタイムライブラリも同時にいれておかないと、動かないというのです。

最初の部分を読んだだけではピンと来ませんでしたが、熟読して分かりました。驚きました。

このRUNタイムライブラリと言うものは、インタプリター本体だと言うのです。

N88-DISC BASIC コンパイラーは、UCSD-Pシステムのようにコンパイル対象のプログラムを、中間言語にコンパイル(翻訳)するのだそうです。

そして、そのNBASICコンパイラーがコンパイル(翻訳)した結果の中間言語(中間コード)を、解釈実行するインタプリターがRUNタイムライブラリだと言うことでした。

つまり、通常はN88DSIKBASICの言語仕様に従って記述されたBASICプログラムを解釈実行するのが、N88BASICインタプリターですが、UCSD-P Systemのような、中間コードインタプリターに解釈実行させるために、N88DISC BASICで書かれたBASICプログラムを中間言語に変換している。と言うことをコンパイルする。と言っていた。ようなんですね。

でも、コンパイル後のコードを実行すると、ノーマルに比べて、10倍くらい処理が速くなると言うことでした。

BASIC言語でかかれたソフトは見慣れていましたので、みれば読めるのですが、この中間コードにコンパイルされた結果は、ほとんどバイナリーコードに見えて、中間コードなんだよと教えてもらわないと、わからないものでした。なので、本で読むまでマシン語にコンパイルされていると勘違いしていました。

この中間コードだけをコンピュータに入れても動かないのです。

この中間コードに成ったソフトが動くには、RUNタイムライブラリと呼ばれていたインタープリターが入っていてこそ動けるのです。このRUNタイムライブラリが解釈実行するから、動くのです。

つまり、「それ」はプログラムなんだけど、中間言語にコンパイルされたプログラムであり、その中間言語を解釈実行する主体が存在しないと、それ単体では動かないのです。動かしても、RUNタイムライブラリがありません。としか表示できないプログラムでしかない。

と言う事で、一旦RUNタイムライブラリと言われるインタープリターが入れば、解釈実行できるようになるので動き出せるのです。

なんだか、すごいですよね。

御本家の純正BASICより、10倍くらい高速な処理速度で動作するなんて。

うーん、動き方は、コンパイル後のファイルの拡張子はexeかcomだったと思うのですが、どっちだったかな、exeモデルとかcomモデルms-dosはそれぞれの形式にしたがった起動をさせると思うのですが、コンパイル後のファイルが起動されると言うのは、fork,execでいうと、この場合forkではコンパイル後のファイルを入れるプロセスをforkして、そこにコンパイル後のプログラムをロードする事で、execするというのは、そのコンパイル後のプログラムを起動すると言うこと。そして、起動されたコンパイル後のファイルは、runタイムライブラリーを、所定のエリアに読み込みますよね、読み込んだ、runタイムライブラリは、実はインタプリタ-なので、そのインタプリターの所定のアドレスがインタプリター起動開始アドレスなので、そこにジャンプするんじゃないんだろうか?、そして、起動された中間コードインタプリターは、プロセスの所定のアドレスにコンパイル後のプログラムが格納されているはずなので、そこから読み出して解釈実行を始めるの出はないでしょうか?)

まとめ

UCSD-P system は FORTRAN、COBOL、PASCALが動く(中間コードに変換している)が、とても高価で高値の花でした。

と言う事と

N-BASIC系にも、中間言語にコンパイルするBASICコンパイラーが実在した。

と言う事と。

コンパイルと言ったって、マシン語にするとは限らない。中間コードに変換するものもある。と言うこと。

コンピュータのハードウェアには、様々なファイルが入ると思います。

単なるデータファイルなのか?プログラムなのか?

それは、単体で動くものなのか?、それとも何らかの解釈実行を司るインタプリターが必要なのか?。

思い返せば、メインメモリーが1Mバイト以下の時代に、HDDが40Mバイトの時代に、既にこういうテクノロジーは存在していて、それが、ウィルスかどうかなんて、見極めるのが困難で。気がつけばメインメモリは2Gだ、4Gだと言う時代になり、HDDはテラバイトになり、当時のインタプリターぐらいは何種類でも入れる時代になってしまったという事。

後書き

かなり、昔の話であり、そうとうに勘違いや、思い込みもあるかもしれません。お気づきの点がございましたら、ぜひとも、コメントなりなんなりで、ご指摘をお願いいたします。

おまけ

THE UCSD P-SYSTEM MUSEUMへのリンク

SD Super computer centor