コンピュータ21ページ目の日記です

目次

前のページ
2014-10-15 「計算機言語」が生まれた日(1956)
2014-10-15 変数名の話
2014-11-02 ホビーパソコン・オフ会
2014-11-11 寺田貴信の誕生日(1969)
2014-11-14 ピーター・ノートンの誕生日(1943)
2014-11-18 ポール・モカペトリスの誕生日(1946)
2014-11-21 サターン話のページ、全予定分 公開完了
2014-11-22 セガ・サターンの発売20周年
2014-12-03 ジョン・バッカスの誕生日(1924)
2014-12-08 NLS伝説のデモの日(1968)
2014-12-08 【追悼】ラルフ・ベア氏
2014-12-10 エイダ・ラブレイス伯爵夫人の誕生日(1815)
2014-12-12 ロバート・ノイス 誕生日(1927)
2014-12-18 コンラッド・ツーゼ 命日(1995)
2014-12-22 Scratch 2.0
2014-12-28 リーナス・トーバルズの誕生日(1969)
2015-01-01 あけましておめでとうございます
2015-01-07 スティーブン・ボーンの誕生日(1944)
2015-01-08 ジョン・モークリーの命日(1980)
2015-01-13 ロビン・ミルナー誕生日 (1934)
次のページ
「計算機言語」が生まれた日(1956)  2014-10-15 11:49:21  コンピュータ 今日は何の日

▲目次へ ⇒この記事のURL

今日は、計算機言語が生まれた日。

…というのは、非常に曖昧な言い方だな。


計算機言語っていうのは、つまりはプログラム言語のことね。

ただし、2進数で示される「機械語」は含まないものとします。


あれは、電気を ON/OFF するスイッチを制御するための信号だから。

また、機械語と1対1で対応しているアセンブラも、今は含まない。

(計算機言語に含む場合もあるけど、話の都合上含まないものとしてほしい)



つまり、プログラム言語とは、人間にわかりやすい形で示された「言語」を元に、機械を制御する「機械語」を直接生成するものです。




1950年代初頭、プログラム内蔵式のコンピューターは研究目的ではなく、実用になりつつありました。

そして、プログラムが思った以上の難題であることが明らかになってきます。


ここで、コンピューターは非常に高性能だから、コンピューターの力を使ってコンピューター自身をプログラムしよう、という構想が現れます。

自然言語(英語)を使って、おかしなところのない厳密な方法で仕様書を書くと、それをコンピューターが解釈して自分自身をプログラムする、というアイディアです。


これは「自動プログラミング」と呼ばれ、学術的な研究などが始まりました。



でも、意見は大きく二つに分かれます。

プログラムは想像力が必要なもので、機械にはできっこない、という懐疑派と、想像力が必要なのは仕様書を策定する部分で、そこから先の部分は機械でもできる、という推進派です。


IBM は推進派でした。

何よりも、主力商品となりつつあったコンピューターを売るためには、効率の良いプログラム方法が必要なのです。


懐疑派と推進派の論争を終わらせる方法はただ一つ。実際に自動プログラミングが可能なことを示せばよいのでした。


IBM は、この分野の研究開発を始めます。




1954年、IBM のジョン・バッカスは、問題を限られた範囲で解決するプログラム言語を考案します。


仕様書を理解する、と言っても、広範囲な仕様書では理解させるのも大変です。

そこで、当時のコンピューターの主要な利用目的であった、科学計算目的にターゲットを絞ります。


科学計算では、非常に複雑な式を扱う必要がありました。

しかし、それらの式は複雑すぎて、機械語に直すだけで一苦労なのです。


たとえば、 Y = X**2 + 5*X +4 …という、簡単に表せる数式があったとしましょう。

(X**2 は Xの2乗の意味です)


これを IBM 704 では次のように書く必要がありました。



LDQ X
MPY X
STQ Y
LDQ num5
MPY X
STQ tmp
CLA tmp
ADD Y
ADD num4
STO Y


数式ひとつ表すのにこんな苦労が必要。この部分の苦労だけでも解放できれば!


#上のプログラム、IBM704 を使ったことがあるわけではないので、自信なし。

 一応マニュアル参照しているので大きく間違っては無いと思います。

 なお、掛け算は結果を 70bit で返しますが、上のプログラムでは下位 35bit のみ使用しています。




数式を英語で FORMULA と呼びます。ここを変換、TRANSLATE する。

この言語は、FORTRAN と名付けられます。


FORTRAN は、IBM 704 をターゲットとして開発されました。


科学計算では、繰り返しもよく使われましたので、繰り返しを簡単に記述できる命令があります。


でも、数式と繰り返しを除けば、命令はほぼ IBM704 の機械語と同じです。

見た目こそ「高級命令」に見えるのですが、機械語と1対1対応なのです。



実現可能性を確かめながら、FORTRAN の文法を完成するまでに2年が費やされ、1956年に文法などを記した「Programmer's Reference Manual」が先に完成します。


実際に動作する言語処理系が完成するのは翌 1957年。


さて、このマニュアルの発行日が、1956年の今日、10月15日となっています。

(3ページ目の右上に書かれています)




FORTRAN で「自動プログラミング」が可能であることが示された後、翌1958年にはより便利な命令を増やした FORTRAN II が作られます。


FORTRAN の成功に続いて、研究目的の LISP(1958)、ビジネス向けの COBOL(1959) も作られ、さらに 、学生の勉強用に BASIC(1964) など、多くの言語が考案されています。


#余談になりますが、3D プリンタの元祖となるモデル記述言語、APTも 1958年に完成しています。


しかし、これらの言語は、今から見ると「いきあたりばったり」な文法体系です。

たしかに目的は達成できるのですが、命令の組み合わせ方が制限されていたり、論理が記述しにくかったりするのです。


FORTRAN を作り出したジョン・バッカスは、言語を作る研究をさらに続けていました。

そして、「より良い言語」を作ろうとしていた国際的なグループに参加します。


この時に作られた言語が ALGOL です。言語仕様は 1958年に作られていますが、実際に動作する処理系が出来たのは 1960年でした。


ALGOL の文法記述方法は、「バッカス・ナウア記法」(Backus-Naur form:BNF)と呼ばれます。

ピーター・ナウアは、ALGOL 開発者の一人。



BNF は、非常にすっきりと文法を記述できます。インターネットのプロトコル仕様などは BNF で表現されることが多く、RFC (インターネットで守られるべき取り決めのこと)を読むうえで、BNF を知っていることは非常に重要です。


最初の FORTRAN の記述方法などは「スパゲティプログラム」と呼ばれて忌み嫌われ、ALGOL の記述方法は良いものとされるのですが、作者は両方同じなのですね。


#FORTRAN の反省に立って ALGOL を設計した、とも言えます。




さて、FORTRAN が無ければその後の言語はありませんし、ALGOL が無ければ現在の C言語や、Java / PHP / Perl などの多くの言語もありません。


これらすべての元…FORTRAN の仕様がが世に示されたのが、1956年の今日なのですね。

そういうわけで「計算機言語が生まれた日」と書いたのです。


…発行日って恣意的な部分もあるから、本当に今日が生まれた日かわからないのですけど (^^;



▲目次へ ⇒この記事のURL

同じテーマの日記(最近の一覧)

今日は何の日

関連ページ

ジョン・バッカスの命日(2007)【日記 15/03/17】

ジョン・バッカスの命日(2007)【日記 15/03/17】

ハーマン・ホレリス 命日(1929)【日記 15/11/17】

プラスとピリオドの取り違え【日記 17/04/07】

ジョン・バッカスの誕生日(1924)【日記 14/12/03】

別年同日の日記

04年 大きく育て

04年 最終確認

13年 富一成さんの誕生日(1960)

15年 プレイステーションを生み出した新聞記事

15年 グレゴリオ暦の制定日(1582)

18年 UPS切り替え

18年 オーシャンハンター


申し訳ありませんが、現在意見投稿をできない状態にしています

変数名の話  2014-10-15 17:10:05  コンピュータ

▲目次へ ⇒この記事のURL

FORTRAN の誕生日ついでにもう一つ。


時々 FAQ のように「なんでループ変数に I とか J とか使うの?」という話を聞きます。

これ、知っている人は知ってますね。FORTRAN がそうだったから、というのが答えです。


でも、こないだ Twitter で見た疑問は「なんで FORTRAN は I から N が整数なの?」でした。

…そうきたか。そこを疑問に思ったことはなかった。


一応、疑問の主は「Integer とか Number なのだろうけど」と言う部分まで理解しています。




先に書いた FORTRAN の誕生日は、実はこの疑問が面白いと思ったために調べていて気付いたのでした。

最初のマニュアルを調べていたら、日付が近かったので「あ、これ記念日ネタだ」と。


で、答えを先に書けば、マニュアルには「I~N が整数」となっているだけで、理由は書かれていませんでした。

策定に2年かけているから、当初は何か理由があったのだろうけど、マニュアルに書く必要は感じられなかったのでしょうね。



FORTRAN が完成した 1957年には、PRIMER …つまり、FORTRAN プログラミング初心者向けの教則本が作られています。

こちらも理由は無しで「I~N が整数」というだけ。


IBM 650 にも FORTRAN があって…というか、IBM は作ってないのにカーネギー工科大学(現在のカーネギーメロン大学)が勝手に移植したようで、IBM が再配布しています。


勝手に作ったものなので一部互換性が無いようで FOR TRANSIT という名前です。

でも、再配布に際して IBM が作ったマニュアルは、704 の物とほぼ同じ。

つまり、ここでも理由は書かれていません。




FORTRAN のマニュアルなどには記述が無いので、以降は推測にすぎません。


まず、FORTRAN は科学計算用であったことに留意が必要です。

科学者が使う「変数名規則」をそのまま使う場合、特に説明はいらないのです。


適当な変数を使って式を立てる際、整数を I とするのはよくあることです。

Integer (整数、という意味の英語)の先頭の文字ね。


#通常、式を立てる際は変数は小文字筆記体で書かれるが、IBM 704 は 6bit で文字を表現するため、大文字しか使えなかった。


整数が複数必要なら、 I J K …とアルファベットを後ろにずらして順番に使います。


アルファベットの成立の歴史の中で、元々 J は存在せず、I から派生したものでした。

この点でも、I と J を同じように使うのに、それほど違和感はありません。



また、科学者は「自然数」の意味で、N を使います。

自然数っていうのは「1以上の整数」の意味ね。


こちらは、Nature number(自然数の意味の英語)の N です。

複数必要な場合、N M L …とアルファベットを前にずらして順番に使います。


なぜ前にずらすのかと言えば、おそらく理由は2つ。

1つ目は、後ろにずらした O よりも、 M の方が N に似ている感じがするから。


「同じ意味である」ことを示すのは重要なので、似ている気がするというのは大事です。

それに、NuMber (数値) という単語のイメージともあいます。


2つ目は、後ろにずらした O (オー) には、「原点」という別の意味があるのです。


O (オー)は数字の 0 (ゼロ) とよく似ています。

複数の数値をまとめて扱う場合、それらの数値すべてが 0(ゼロ) の点を O(オー)で示して特別視することがあります。


以上の理由で、科学者は整数に I J K ... を、自然数に N M L ... を使うのです。




ところで、FORTRAN の変数は、実数型と整数型しかありません。

自然数を表現したいなら、整数型を使うことになります。


FORTRAN のプログラムに於いて、自然数と整数は区別されないのです。


そこで、変数名の最初の1文字が I J K L M N で始まる変数は整数型、それ以外は実数型、と決め打ちになります。

これが、科学者にとって使いやすい言語仕様なのです。


型が変数名によって決まるので、変数の宣言などは不要で、いつでも使いたいときに変数を使えばよい、という形式でした。


#最初の FORTRAN では、変数名は6文字までの長さが許されていました。




…これ、思わぬバグの原因でした。

非常に有名な例を挙げましょう。


FORTRAN では、ループに「DO」と言う命令を使います。次みたいな感じ。


DO 100 I=1,10

WRITE (*,*) I

100 CONTINUE


行番号 100 に書かれた CONTINUE までの間を、I が 1 から始め 10 になるまで(増分1で)繰り返せ、という命令です。

(WRITE …は、変数 I を印字する命令ですが、ここでは気にする必要はありません)


当時、プログラマー(アルゴリズムを考案する人)と、コーダー(FORTRAN でアルゴリズムを記述する人)、パンチャー(コーダーの記述をパンチカードに打ち込む人)は別でした。


そして、上のプログラムをパンチャーがこう打ち込むのです。


DO100I=1.10

WRITE(*,*)I

100 CONTINUE


空白が無くなったことは問題ではありません。

FORTRAN の仕様で、空白は全く無視されました。パンチカードを無駄にしないように、詰め込んで書けるのです。


でも、空白以外に変わった場所があります。最初の行で、カンマ (,) がピリオド (.) に打ち間違えているのです。


すると、DO100I という、6文字以内の規定に正しく従った変数名に、1.10 という、変数の型に正しく沿った実数を代入してしまいます。

規定どおりなので、動作としては全くおかしくありません。


100 行目には CONTINUE という命令が書かれています。ループの終わりです。

「ループが始まってないのに終わりを書いてあればエラーになってくれるのでは」…と、今のプログラマーなら期待してしまいますが、そうはなりません。


実は、CONTINUE という命令は「明示的に行番号を作り出す」ためだけに存在する命令で、「何もしない」と決まっているのです。

だから、DO 命令が存在しないのに CONTINUE がある、という点でもエラーは出ません。



結果として、プログラマーが考えたアルゴリズムは、 カンマ (,) とピリオド (.) を間違えるというミスにより、全く違う動作に変換されてしまい、エラーとして検出されません。


この話、昔は「NASA がこれで金星探査機を失った」とされていたのですが、今は否定されていますね。

(NASA でこのバグが出たのは事実らしい。…NASA に限らず、このバグは良くあったみたいだけど)




上のバグがなぜ出るかと言えば、2つあって


1) 宣言もせずに変数が使えるのが良くない。

2) ループの「はじめ」と「おわり」をセットにしていないので、おかしくなったことに気付けない。


の2つです。


この反省から、ALGOL 以降の言語では、「はじめ」から「おわり」までのブロックを示すことと、変数を宣言することが重視されています。


ブロックは、まぁいいです。実際便利なので。

でも、変数をわざわざ宣言しないと使えないって、面倒くさいようにも思います。


で、今の言語では、変数の宣言が不要、というのも流行しています。面倒がなくていいね!

…そしてまたバグが出る。




変数の宣言が不要、というのは大抵は軽量言語 (Lightweight Language : 略称 LL) と呼ばれるものの特徴で、変数に「型」がありません。


整数型なんて知らない。全部実数でいいじゃん。

文字列型はあるけど、必要に応じて文字と数値は自動変換するよ。変数には気にせず突っ込んじゃえ。

特に型が無いんだから変数宣言なんていらないじゃん。好きな時に使えばいいよ。


…これ、非常に楽なんですよね。実際僕も現在は主に PHP / Javascript プログラマです。


#昔は Perl が好きだったし、そもそもゲームプログラマ時代はCもアセンブラも使ってましたよ。

 今でも使えると思うけど、易きに流れて楽している感じ。


さて、LL の始祖ともいえる awk は、フィルタを「言語的に拡張したもの」だったので、バグが出るほど大きなプログラムを作るのも苦手でした。


でも、awk を拡張した perl では、かなり大きなプログラムを作れる。

にもかかわらず、変数を宣言しないでも良いので、うっかり変数名を間違えた時に気付かない。




ところで、C言語では、変数は「大域変数」と「局所変数」に別れていました。

大域と言うのは、大きなプログラムの全体、どこからでも参照できるもの。


プログラムと言うのは、内部では小さなプログラムの寄せ集めになっているのだけど、「局所変数」は、この小さなプログラムの中でしか参照できないもの。

小さなプログラムの中で変数を宣言すると、局所変数になるようになっていました。


そして、perl も同じ方法です。

小さなプログラムの中で宣言すれば、局所変数になります。


逆に言えば、うっかり間違えた変数名は、宣言されていないので「大域変数」になります。

うっかりミスがプログラム全体に影響を及ぼしてしまう、ということ。



…やっぱ問題があると思ったようで、Perl 5 以降では、変数を宣言しないとエラーになる、というモードが追加され、そのモードを使うことが推奨されています。


あぁ、やっぱ変数の宣言って、面倒でもした方がよかったね、という流れ。




ところが、perl 以降に現れた Javascript でまた、変数の宣言が不要になります。

局所変数の定義方法など、perl と同じ構造。問題の再発です。


こちらも、同じ問題は同じ対処で…と、変数を宣言しないとエラーになるモードが追加されます。

なんと、このモード切替方法まで perl とほぼ同じ。




さらに後に作られた PHP 。


同じ轍は踏まないけど、面倒な変数宣言はやっぱ使いたくない、と思ったのか、「宣言しない限り局所変数」となりました。

小さなプログラムの中で「これは大域変数だよ」と宣言したものだけが、大域変数として使えます。


なるほど、これなら、うっかりミスしても影響は局所的です。

根本的な解決方法にはなっていませんが、perl や Javascript よりは良さそう。



でも、変数宣言したくないものだから、「URL で変数を渡したら、自動的に大域変数になる」なんて機能もあったのですね。

これが大問題で、PHP の最大のセキュリティホールとして、大きな仕様変更を伴いながら、現在では基本的に機能が無くなりました。


…過去との互換性を考えて、まだこの機能を「使おうと思ったら使える」のですけどね。

セキュリティ的には良くないのだけど、過去にやっちゃったので、今更やめにくい。

(近い将来廃止する、とずっとアナウンスしていますが)


今では、やはり「変数の宣言必須モード」にするのが推奨です。

でも、あまり使われているように思いません。


#デフォルトでそのモードなのだけど、「解除方法」が書かれた BLOG が山ほどある。

 みんなこのモード嫌がっているみたい。



ところで、PHP は WEB サーバー用として、Javascript は WEB ブラウザ用として、それぞれ人気のある言語です。

セットで勉強中、という人も多いようなのだけど、この二つで変数の「宣言しなかった時の挙動」が正反対。


言語を学ぼうとする人に、思わぬ障害になっているようです。




最後の方、FORTRAN の話からどんどん離れていきました。

まぁ、FORTRAN から始まる「変数の話」ということで。


▲目次へ ⇒この記事のURL

関連ページ

ジョン・バッカスの命日(2007)【日記 15/03/17】

ジョン・バッカスの命日(2007)【日記 15/03/17】

ハーマン・ホレリス 命日(1929)【日記 15/11/17】

プラスとピリオドの取り違え【日記 17/04/07】

ジョン・バッカスの誕生日(1924)【日記 14/12/03】

別年同日の日記

04年 大きく育て

04年 最終確認

13年 富一成さんの誕生日(1960)

15年 プレイステーションを生み出した新聞記事

15年 グレゴリオ暦の制定日(1582)

18年 UPS切り替え

18年 オーシャンハンター


申し訳ありませんが、現在意見投稿をできない状態にしています

ホビーパソコン・オフ会  2014-11-02 16:27:14  コンピュータ 歯車 社会科見学

▲目次へ ⇒この記事のURL

ホビーパソコン・オフ会

ツイッターで知り合った、「ホビーパソコン興亡史」の著者さんが、10月29日に「ホビーパソコンガイドブック」という書籍を発行するという。


あー、興味あるなー、どうしようかなー、と思っていたところ、発売前から大人気で、予約だけでアマゾンのカテゴリー1位となった、と聞いてすぐ予約しました。

前著「興亡史」も気になりながら買っていなかったので同時購入。この2冊は補完関係になるように作っている、と聞いていたので、セットで持っていないと面白さが半減しそうです。


内容詳細についてはきっと他の方が書評を書くのでそちらに譲ります。

雑感としては、どちらも相当の誤りを含みます。これは著者の方も認めるところ。


しかし、30年も前の散逸した資料を、メーカーなどにも存在しないのにかき集め、整え、まとまった形で書籍にしたことが素晴らしいです。

2冊組だというのも、文字を中心とした解説と、カラー写真を中心とした図版の両面から記録に残すため。

特にカラー中心の「ガイドブック」は、ほぼ全ページカラーにもかかわらず1200円というお手ごろ価格で驚愕です。




さて、出版前からカテゴリ1位になった記念に、興味のある方で集まってお話しませんか、というお誘いがありました。

…いや、僕が誘われたわけではなく、そういう話になっているのを知って「参加したい」と割り込ませてもらったのですが。


最近主夫しているので、オフ会と言うものに参加するのが久しぶり。

妻の許可も得て、11月1日のオフに参加させてもらいました。


#昔からパソコン通信などやっていたので、オフ会自体はたびたび参加してました。

 妻と知り合ったのもネットですし。

 でも、最後にオフらしいものに出たのは10年前か…




さて、以下はオフ会の様子をアトランダムに。


非常に楽しい会でした。この会に自分が混ざっていていいのかな、というくらい「濃い」方が多い。

ホビーパソコン時代の話は、僕はリアルタイムに見ていましたが、実のところそれほどわかってないのです。


自分のページで「第2部」とする以前に紹介している機種が自分の使った機種。

学研FXマイコン、ファミリーベーシック、PB-100、MSX、MSX2、PC-E500、Handy98、X68000。これで全てです。


オフ会の元となった書籍の趣旨である「ホビーパソコン」としては、携帯機を含みませんので、ファミベ、MSX(および2)、X68kの3機種「しか」知らない、知識の少ない人です (^^;;

(Handy98 は、中古で購入して「所有」しましたが、あまり活用してません)


しかも、これらは僕にとって「過去に使った機種」なのですね。

今でも古い機械を愛し、活動を続けている方の「濃さ」も持ち合わせていない。




ぴゅう太買えや」の方、チューター(ぴゅう太の海外販売名)用ソフト初めて見ました。


PC6001mkII を持ち込んだ方、ベルーガ(2007年に発表されたPC6001の新作ソフト)のカセットテープ版の存在知りませんでした。

(特殊カートリッジがないと動かないと思ってました…6001 ではメモリの都合で特殊カートリッジが必要で、mkII では十分なメモリがあるのでテープで動く、とのこと)


FM-TownsII ノートを持ち込まれた方、非常に珍しいと聞いていましたが、実機初めて見ました。

試作器が流出した程度しか存在しない、と以前にどこかで聞いていたのですが、実際には教育用として学校などには販売されていたとのこと。

いずれにせよ、非常に珍しいです。


386~Pentium 時代のCPUを多数持ち込んだ方。

全くわかっていない僕に、それぞれの石がどのような特徴を持っていて、どんな部分が面白いのか懇切丁寧に解説してくださいました。


#自分がよくわかる CPU としては、6502 Z80 68000 V60 SH2 あたり。Intel 系は弱いのです。



一応書いておくと、僕は「当時の販促用缶バッジいろいろ」なんてものを持ち込んでました。

Apple ロゴ2種、Mac ColorClassic、Pipin とApple関係ばかりの中に、IBM JX が1つ。


この JX の缶バッジが妙に受けていましたが、そこですかさず「キーホルダーが JXです」と、鍵を出した方がいました。確かに同じロゴが。

JX なんてマイナーマシン、わかってもらえるかな、くらいに思っていたのに「普段から持ち歩いている」という強烈な反撃を食らった格好。


いや、とっても濃い世界でした。


というか、ホビーパソコン時代に合わせて考えて缶バッヂ持っていったのだけど、関係なしに変なものもってけばよかった。

これは反省点です。




宴会が始まってすぐに「こちら、ホビーパソコンのオフ会ですよね?」と飛び込み参加したZOB速水さん。


超有名人だったようで、自己紹介した瞬間に湧きました。

申し訳ない。僕は存じていませんでした。

(このあたりで、本当に当時の文化に疎いことがわかるかと思います)


でも、実は、この人が一番すごかった。僕の趣味に刺さった、という意味ですが。

年配の方で、「子供の頃にホビーパソコンで遊んでいた」多くの参加者とは違い、それを「仕掛けた」大人側の方。


今、昔の書籍を復刻する作業中…と、話の枕に名刺代わりに取り出したのが、「ざべ」。

この時点ですごさがわかります。


えーと、当時の書籍と言えば、「I/O」とか「PIO」「ASCII」「ベーマガ」などいろいろあります。

でも、「ざべ」(元はThe BASICというタイトルでしたが、表紙には「ざべ」と書かれていました)はそうした雑誌とは一線をかくしていました。


内容は、各ハードウェアの解析記事とか、市販ソフトの改造記事など。

「ハッカー」のようなゲーム改造や、コピーのための解析などと違って「高度に実用性を重視した」ものでした。


たとえば、PC-98HA は、98との互換性に十分気を使っていましたが、VRAM構造が違うという致命的な非互換性がありました。

しかし、内部ロムにはこの非互換性を「解消」するためのサービスルーチンが用意されており、それを呼び出すことで簡単に互換性が取れるようになっています。


…こうしたことを「解析記事」として紹介したうえで、実例として Vzエディタ(当時流行した高機能エディタ)を改造し、98HA 対応にしてしまう…というような記事を載せていました。



話が横道にそれましたが、この「ざべ」でアセンブラの解説記事の連載をしていた、というのです。

復刻しようとしている、という書籍は、その連載をまとめた本。


20年も前のCPU解説に意味があるのか、と思う方もいるでしょうが、最近 Intel 系のCPUが組込み機器でも使われるようになり、C言語ではなくアセンブラで、記述する必要性も増しているのです。




ところでZOBさん、前述の Vzエディタを作った c.mos さんとは旧知の仲。


ZOBさんは「ZOB Station」という草の根BBSを運営していた方で、c.mos さんもそこの常連だったとか。

そこで、ゲームを作るためにエディタを作っていたのが、エディタだけで十分すごいので発売したのが Vzエディタだったのだとか。



いわく、c.mos さんのプログラムは「超人的だった」。

クロック数計算をしないでどんどんアセンブラで書いていき、それが一番速いコードになっている、と言う状態だったとか。


…って話から「森田さんも同じタイプだった」と言う話に飛びます。

森田将棋や、PC88でアルフォスを作った故・森田氏。やはり知り合いで、天才だったと言います。


森田さんは大胆な省略によって高速化する手法が上手だったそうです。

森田将棋のアルゴリズムにはそうした大胆さが行かされていたし、アルフォスもそうだった、と。



森田将棋は、僕の記憶では一番古い「市販された将棋ソフト」。

研究としては1970年代からあったようですが、1985年に発売された「森田和郎の将棋」に始まる森田将棋シリーズは、その後のコンピューター将棋の研究を活発化させます。


その後、類似の将棋ソフトも出てきた時点で「世界コンピューター将棋選手権」が開催され、第2回では優勝。初回から第6回までは常に3位以内に入る、という元祖としての貫録を見せます。

大会により「目標」が明示されたことにより、次々と新しいソフトも作られ、現在はコンピューター将棋もずいぶん強くなりました。

しかし、その源流を作り出したのが森田将棋と考えてよいかと思います。

 

アルフォスはゼビウスを真似して作ったゲームですが、ゼビウスは当時「パソコンには移植不可能」と言われていました。

何よりも、当時のパソコンには「縦スクロール」を現実的な速度で実現する方法がありませんでした。

アルフォスでは、RGB別々にわかれているグラフィック画面のうち、「2枚だけ」しかスクロールに使わない、とい割り切りで高速化を行っています。

使える色数に激しい制限を受けますが、処理は2/3に軽減されます。


アルフォスは「真似をしたゲーム」であり、ゼビウスではありませんでした。

しかし、「あまりにも似すぎている」という判断で発売元のエニックスがナムコに許諾を求めます。

そして、これもナムコは「別のゲームだから許諾不要」とは判断せず、許諾を与えます。


つまり「移植不可能」と言われたもの高いレベルで再現した、と認められたのです。




ZOBさんは西和彦とも知り合いで、一緒に仕事をしようと誘われたけど、その時は断ってしまった、とのこと。


返事一つで億万長者だったのにねー、と悔しがるそぶりを見せながら、それほど悔しそうではありません。

十分に面白そうな人生を歩んでおられる。




さて、この方が「面白いものを持ってきた」と取り出した1枚の基板。

これ、個人的には今回一番の目玉でした。


Intel4004 の評価用テストボード。


4004 は、世界初の「CPU」です。

1971年に出荷され、まずはビジコン社の電卓に使用されます。


これは、4004の開発を持ち掛け、ほぼすべての回路を設計したのがビジコンだから。

インテルは「製造担当」にすぎませんでした。

…と言っても、現実には設計にもかなり関与していますし、共同開発と言ってよいです。


契約上はインテルは製造のみの担当なので、ビジコンが独占的に使用するはずでした。

しかし、開発費がかさみ過ぎたため、ビジコンはインテルに権利を売却。インテルから「一般に」発売されます。

ビジコンはその採用第1号となっただけ。


4004 は最初の CPU ですから、当時新しすぎて使い方などが理解されませんでした。

設計依頼したビジコン「だけが」使えたといってよい状態。


それでは困りますから、インテルは開発者が実際に回路を組んで CPU 動作が学べる「評価用ボード」を発売しました。



ビジコンの電卓は、一般に発売されたためそれなりの数があります。

国立科学技術博物館にも保存展示されています。


それに対し、「評価用ボード」は開発者向けに出荷されただけで、一般販売ではありません。

そのため非常に珍しく、インテル純正の「リファレンス基板」としても価値があります。


ちなみに、搭載された 4004 も白いセラミックパッケージの比較的初期のもの。

後期になると黒いパッケージになります。この点も価値がある。


ただ、このボードの発売自体が 1973 年だったようで、1971年のビジコンの電卓で使用されたパッケージとも違うようです、



…と、この基盤が出されたときに僕は水を得た魚のように活き活きしてました(笑)

Townsや6001の話では「聞き役」に徹していたのですけどね。


写真を撮る方に、CPU 横に書かれた 4004 の表記、RAM部分に書かれた 4002 の表記、端に書かれた Intel ロゴあたりが「見所」と解説。


…それはいいんですけど、僕自身が全体写真を撮れていないと、会が終わった後で気づきました。

何やってんだ。


#一応全体写真は撮ってあるのですが、撮影角度の問題で 4002 の文字が見えないのです。

 4002文字部分の拡大写真などは別途あるのですが。



「4bit って、アドレスも4bit だったの?」などの質問が僕に飛んできましたが、まさか 4004が出てくると思ってなかったために下調べしておらず、十分に答えられませんでした。


この場を借りて、概略の解説。


アドレスは12bit 、レジスタは 16本ありました。

16本は2本づつが「ペア」になって、8bit としても使えました。


ここら辺、のちの 8080 で、8bit レジスタをペアにして 16bit 演算ができたのと同じです。

命令は 4bit ですが、オペランド部分は 4bit ~ 12bit の可変です。



型番「4001」の ROM をメインメモリとして使用し、基本的にはレジスタのみで演算を行いますが、型番「4002」の RAM にデータを保存することもできます。


4002 は I/O 空間に接続されているため、「メインメモリではない」のがミソ。

電卓用途を考えていたので、プログラムを収めるメインメモリはすべて ROM です。


メインメモリに RAM がないのでスタックもありません。

でも、プログラムカウンタ自体が4本あり、3段までのスタックを形成します。

このため、サブルーチン呼び出しは可能でした。


4003 は電卓キーボードや表示部との橋渡しで、キーボードが押されたときに、4004 の TEST ピンに電圧をかける役割を持ちます。


TEST ピンは割り込み線ではありませんが、内部フラグを変化させ、このフラグを使って条件ジャンプが可能でした。

キーボードのアクセスは遅いのですが、事前に「入力の有無」程度は確認できることになり、効率よくプログラムを動かせます。


で、4004 は CPU 。

「4bit だから 4004」なのではなく、4000 シリーズと言う LSI の4番目の製品なのです。


#8008 は、「4bit から 8bit に拡張したから 8008」です。


詳細は、過去に書いた「4004の発売日」を参照してください。



この基盤、「CPU なんだから、動かさないと意味がない」とのことで、復活プロジェクト中だそうです。

ROM 部分がソケットになっているのだけど、できることならそこに刺すROMも当時のものにしたい、でも入手するあてもない、という状況らしい。


すごいなぁ。楽しみに続報を待ちます。


2014.11.4追記

このボード、Intellec4 の物かなーと思っていたら、どうやら違う様子。


Intellec はインテルが作成し、開発者向けに市販した評価用の基板です。

一応「コンピューター」として完成できるようになっていて、スイッチを使ってデータを与えたり、ランプの点滅で結果を返したりできます。


Intellec4 は 4004 で、Intellec8 は 8008 。

世界初のパソコンとされている、Altair の祖先みたいなもの。


Youtube に、Intellec4 の解説ビデオがありました。

内部基板なども映っているのですが、見せていただいたものとは異なります。



Intellec4 の基板に書かれた年号は「1973」で、見せていただいたボードと同じ年です。

同時期に類似目的のボードを複数作っていた、というのも不思議です。

(まぁ、目的は少し違うようにも思いますが)


本当にかなり珍しいものの様子。なんなのだろう…


以上、追記終り。




さて、オフ会の最後に、じゃんけん大会がありました。

秋葉原の「家電のケンちゃん」の方が、オフ会があると知って賞品提供を申し出てくれたのだとか。


賞品、PC6001とFP1000の交換用キーボードの「新品」。

数か月前に、急に店頭に並んで話題になりました。なんで30年もたって新品が出てくるのか、と。


取り壊す倉庫があって、中に置かれているのはもうゴミばかりだろう…と整理していたら大量に見つかったのだそうです。


もう「品切れ」となっていて、再入荷の予定も当然ない、とアナウンスされている…のに、少し残っていたのですね。

どうやら、このじゃんけん大会が入手の最後のチャンスのようです。



PC6001のキーボードは、2つしかなかったのに欲しい方多数。

これは、PC6001で現在も活動している方に譲るのが筋。


FP1000のほうは、5つありましたが特に欲しい方がおらず…

貰えるならもらう、と手を挙げましたが、全部で4人。定員割れ(笑)

じゃぁ、ともう一人手を挙げたので全部貰われましたが、もらった人全員が「なんにつかうんだろう」と首をひねる状態。


僕電子工作できないから、有効活用できる方がいらっしゃいましたら譲ります。


#一方で、Arduinoに挑む良い機会かとも思っている。



2014.11.4追記

その後、参加者のツイッターでのつぶやきをまとめることで会の雰囲気を伝える「まとめ」が作られました。



ついでなので見ながら思い出したことを追記。


0次会について、上に書いた日記には書きませんでしたが、実は「早めに行くので0次会しましょうよ」と言い出したのは僕だったり (^^;

時間が合わなくて来られない、という方がいたのですが、ぜひお会いしたかったので持ち掛けたのです。


本の著者で、今回のオフの主催者の前田さんは、「0次会は5名程度」と考えていたようなのですが、当日蓋を開けてみれば、16名と言う大所帯。

(1次会と言うか、本来の会は26名でした)


こちらでは、みなさん「本番に向けてネタを控えて」いたようで、それほどとんでもないものは出ていません。

書籍編集の苦労話を前田さんから伺うなど、なかなか楽しい会ではありましたが。



えーと、先に日記まとめた際には「書かない方が良いかな?」と思っていたのですが、今見たところ、当人が隠していないので書いてしまいます。


紅一点、女性の参加者がおられました。こんなおっさんホイホイの集まりに。

そして、女性らしい心遣いで、前田さんに「出版おめでとうございます」と花束を…


おー、すごく当たり前の心遣いなのに、おっさんどもは誰一人その「お祝い」をしてなかった。

みんな「書籍買いましたよ」とサインを求めることが、最大の賛辞だと思ってました。



この方、「他の女性参加者が無い」と悲しんでおられました。8bit パソコン時代の話題が出来る女性って少ないですからね。


妻に伝えたら「今度あったら私も行こうか?」と言ってました。

でも、子供いるから二人同時参加はできないですわー (^^;;


#妻はこういう話普通についてきます。

 僕が教えたのではなくて、元々興味があったから付き合いがはじまったの。


#ところで、妻は「女だと知ると、急にちやほやしてくる奴がいてウザイから」という理由でネット上では性別隠してます。

 それが、当初「参加者に女性がいた」ことを書くのをためらった理由です。


▲目次へ ⇒この記事のURL

同じテーマの日記(最近の一覧)

歯車

社会科見学

関連ページ

マイコンインフィニットPRO68K【日記 15/05/05】

別年同日の日記

01年 11/1

12年 最近のうちの子

17年 引っ越し作業

18年 マイルドハイブリッド

18年 アイドリングストップ

18年 イグニスの修理終わりました


申し訳ありませんが、現在意見投稿をできない状態にしています

寺田貴信の誕生日(1969)  2014-11-11 12:47:44  コンピュータ 今日は何の日

▲目次へ ⇒この記事のURL

今日は寺田貴信さんの誕生日(1969)。


僕、この人知りませんでした。

スーパーロボット大戦シリーズ一筋のプロデューサーの方。


…このシリーズやったことないんですよ。

先日書いたばかりだけど、ゲーム好きだけど「気に入ったゲームをやり込む」タイプなので、知らないゲームの方が多い。


それに、アニメも子供のころからそれほど見なかったので、元ネタをほとんど知らんのです。




じゃぁなんで書くのか、といえば、昔バイトしていた会社でSDガンダムのゲーム作るのを、ちょっと手伝った覚えがあるため。


自分でも何やったのかよく覚えてないけど、主にデータ整理だったんじゃないかな。

プログラムした覚えはない。


僕はガンダム良く知らないからわからないのだけど、発注元の営業さんが来た際にドット絵を見て、「16ドットなのに、よく似たモビルスーツの違いがちゃんと判る」としきりに感心していたのを覚えています。

その現場では、プログラムもドット絵描きもやっていました。


シリーズいっぱい出ているけど、どれだったのかなー…と今調べたけど、わかりませんでした。

この作品、孫請けでやっていたはずなのね。開発元にすら会社名入っていない。


メイン発注元の「ライバル会社」の発注を受けてしまったので、こっそりやる…と、メインの事務所とは違うマンションの一室で開発していました。

だから、開発元としても名前出さなかったんでしょうね。


この会社以外でもゲーム会社でバイトしたり、他の会社の事情も聴いたことありますけど、こんな話ざらにあります。

孫請けで仕事しても世の中に名前でないし、名前出すわけに行かない仕事でも請け負うことが多い。



この仕事やっていたとき、プログラマの人に、「キャラクタ動かすのに、小数点を使わず、正確に目的地について、動きの速度が一定になる方法、なんか知らない?」と聞かれたので、ブレゼンハムのアルゴリズム教えました。


グラフィックなんかで線を描くアルゴリズムなんですけど、しばらく研究して「求めているのと違う」と言って、結局固定小数点で計算してました。



寺田さんは「スーパーロボット大戦」の人で、SDガンダムとは違うのだけど、延長上にあるシリーズ…と考えていいんですよね?

やってないので何とも言えないのだけど。




ガンダム知らないにも関わらず、ファミコンディスクの「ガチャポン戦士」は遊んでいて、非常に面白かった覚えがあります。

シミュレーションゲームは基本的に好きなのね。


ただ、時間かかるものが多いからあまり遊ばないのだけど。



というわけで、この日記は非常に短く終了。

人を紹介したはずなのに、どういう方かちゃんとわかっておらず、申し訳ない。



▲目次へ ⇒この記事のURL

同じテーマの日記(最近の一覧)

今日は何の日

別年同日の日記

13年 vi は世界初のスクリーンエディタか?


申し訳ありませんが、現在意見投稿をできない状態にしています

ピーター・ノートンの誕生日(1943)  2014-11-14 12:19:21  コンピュータ 今日は何の日

▲目次へ ⇒この記事のURL

今日はピーター・ノートンの誕生日(1943)


ノートン先生本人です。最近は知らない人も多いかな。

「ノートン・ユーティリティーズ」や、「ノートン・インターネットセキュリティー」のソフトウェアブランド名として残っていますね。




元々は、IBM-PC が発売されてすぐに、DOS 用の便利なユーティリティー集を作成して販売した人…でした。


その機能は、消してしまったファイルを復活する、壊れたファイルを出来る限り修復する、ファイルを見えなくする、ファイルエントリを整頓する…などなど。


今となってはこれ自体に解説が必要だな。

当時、今の Windows や MacOS にあるような「ゴミ箱」なんて概念は存在せず、消去したファイルは瞬時に消えました。

でも、実は「ディスク上のメモリを解放した」だけで、データは残っているんですね。


そこで、データが「少しでも残されている」前提で、できる限りデータを拾い出して復活する、というのが消去ファイルの復活・壊れたファイルの修復になります。

消した直後なら復活しやすいけど、時間がたつと(データが上書きされると)確率は下がります。


こういうツールはフリーソフトでも良く作られていたのだけど、それを最初にやったツール。


DOS では、「ファイル一覧」を見ると、ディスクに書き込まれている順…つまりは、DOS 内部の都合による順番でファイルが表示されました。

これを、ファイル名順とか、変更時刻順とか、自由に並び替えるのが「ファイルエントリの整頓」。


ファイルを見えなくするのは、単に「見えない」属性を付けるだけ。

DOS 自体にその機能はあったのですが、操作する方法がありませんでした。



どの機能も、後で定番となるようなものばかりです。

というか、CP/M でもあったのかも。僕は CP/M 当時をそれほど知りませんが、誰よりも早く DOS に移植した、というだけかもしれません。


でも、ノートンは、このソフトで大儲けします。




人気が出たので DOS がバージョンアップすれば対応版を作りますし、便利な機能を増やしたバージョンアップ版も作ります。


その一方で、こうしたツールを作るために「解析」した、IBM-PC のハードウェア詳細や DOS の内部詳細を、まとめて本にします。

この本の表紙には、腕組みをしたピーター・ノートン本人の写真が使われました。


IBM-PC や DOS の仕様変更に伴い、こうした本は数冊発売されています。

IBM-PC ハッカーの必携書でした。



1984年に Macintosh が発表になると、すぐにノートンユーティリティーの Mac 版も作ります。

Mac 版では「アイコン」を付けなくてはならなかったため、腕組みをしたノートンのイラスト…本で有名となった「本人」を登場させます。


ノートンは腕の立つハッカーで、小粒ながら本当に役立つツールを作成する、と認識されていました。

その本人が自分の肖像を付けて販売するソフトは、性能保証を意味していたのです。



Mac が「ファイルの扱い」で DOS よりも便利である、と話題になると、すぐに「ノートンコマンダー」を DOS 向けに発売します。

これは、いわゆる「ファイラー」(ファイルマネージャー)の元祖です。


ファイル一覧を画面に表示し、カーソルキーで選んで操作できました。

コピー、移動、複製、削除、内容表示、編集、外部プログラムへの受け渡し、などなど…


元祖だったため、以降に続く類似ソフトは、みなノートンコマンダーの作法に倣いました。

現在でも、数多くのファイル管理ソフトが、同じ作法で操作することができます。



いずれも、決して派手なソフトではありません。

しかし地味に使い勝手を向上させ、確実にパソコン環境を改善するツールばかりを作り出しています。




Windows 時代にもノートンコマンダーは作られましたが、そもそも Windows ではファイルの扱いが簡単になったため、それほど売れなかったようです。

かわりに、増え始めたウィルスの脅威に対してノートン・アンチウィルスや、ノートン・インターネットセキュリティが発売され、こちらも人気を博します。


他にも、ノートン360、ノートンパーソナルファイアーウォール、ノートンシステムワークス、ノートンパーテションマジック、ノートンアンチスパム、ノートンアンチボット、ノートンGoBack、ノートンゴースト…などなど。


今では他の製品の一部になっていたり、完全に開発終了しているものも含め、非常に多くの製品を送り出していおます。

(僕も知らない製品ばっかなので、あまり質問しないでね!)



ノートンユーティリティズの方は、今でもシリーズが続いていますね。

「フロッピーディスクを対象としたソフト」だったのが、現在ではハードディスクのデフラグや Windows のレジストリ整理など、全然違う内容になっていますが。


…でも、消去したファイルの復活はまだあるのね。

一度ゴミ箱に入れて、それから消去して、その後で「あ、間違えた」と言う時でも復活できる。うっかりさんには必要…なのか?


いずれにせよ、今ではほとんどがOSに付属していたり、無料で入手可能な機能ばかり。

「ノートンを買わないとその機能が手に入らない」ころと違って、雑誌などでの評価も下がっているようです。




ところで、68k Mac の頃に、ノートンユーティリティズの一機能であった「ノートン・ディスクドクター」のパロディで、「ニュートロン・ディスコダンサー」というソフトがありました。


ディスクドクターは、「ディスクを検査し、修復します」と、ディスクの聴診器を当てるノートン先生のアニメがありました。

ディスコダンサーは、「ディスクを破壊し、消去します」と、同じように手を動かして、DJ 風にディスクをスクラッチしたりする。


冗談ソフトなので、もちろん壊れてないし消去されないのですが。


こんなパロディが登場すること自体、「誰もが知っている」ことを前提としていたわけで、すごく普及していたのだと思います。




現在、ピーター・ノートン氏は健在ですが、流石にソフト業界からは手を引いています。

ノートン社もシマンテックに吸収され、ブランドのみが残っています。


つまり、ノートンは名前のみが残っていて、ノートン氏が作っているのでも、ノートン社が作っているのでもない。


ノートン氏は現在でもいくつかの会社の会長などを務めていて、それとは別に財団も持っているようです。

財団では、主に美術館と協力して美術品の保護にお金を出したりしているみたいです。






▲目次へ ⇒この記事のURL

同じテーマの日記(最近の一覧)

今日は何の日

別年同日の日記

01年 11/13

03年 首村消失

13年 ゲームセンターあらし 発表日(1978)


申し訳ありませんが、現在意見投稿をできない状態にしています

ポール・モカペトリスの誕生日(1946)  2014-11-18 16:23:54  コンピュータ 今日は何の日

▲目次へ ⇒この記事のURL

今日は、ポール・モカペトリスの誕生日(1946)。


初期インターネットに貢献したプログラマーです。

そして、最大の貢献は DNS の発案と、最初のサーバーの実装でしょう。


DNS については、技術記事として過去何度か取り上げています。

今回は、「なぜ」DNS が必要になったのか、その歴史を書いてみたいと思います。




初期のインターネットに DNS はありませんでした。


まずは、アドレスを直接指定して接続する「実験」が行われます。

これでは不便なので、すぐに「アドレスとホスト名の対応表」が作られます。


対応表は、HOSTS.TXT という名前で配布されていました。

(当初は、1バイトが 6bitのマシンもインターネットに接続されていました。

 このため、ファイル名などは全て大文字が使用されました)


これを、各システムの適切な位置にコピーして使用します。

unix であれば今でも /etc/hosts に、「対応表」を置くことができます。



HOSTS.TXT は非常に重要なものなので、一括管理されました。


管理者はダグラス・エンゲルバート

「マウスの発明者」として有名な…本当はもっとすごい…人です。



彼は初期のインターネットの管理に手を貸していました。

申請に応じて IP アドレスとホスト名を割り振り、HOSTS.TXT に書き込み、公開します。


利用者は、時々最新の HOSTS.TXT を取得する必要がありました。

そうしないと、新しく追加されたホストにはアクセスできないためです。




最初はうまくいっていたこの管理方法は、やがて破綻します。


当時、ホスト名は「世界中にたった1個」しか許されないものでした。

しかし、手動管理ではこれが保証できず、ホスト名の衝突が起こることがありました。


つまりは、送ろうとしたメールが、同じホスト名の別のマシンに届いたりするのです。


また、HOSTS.TXT は、数万行という非常に巨大なファイルとなりました。

世界中のすべてのホスト名が、このファイルに書かれているのですから。


そして、当時のインターネットはまだ低速でした。

何万と言うホストの管理者が、みんなで1つしかないこの巨大ファイルをダウンロードしようとするのです。

サーバーは接続に対応しきれませんでした。




これを解決しようとして、ポール・モカペトリスが出したアイディアが、ホスト名の分散管理です。


まず、ホスト名の衝突問題の解決。

世界中のホストを調査し、同じ名前にならない名前を付けなくてはならない、というのは現実的ではない。


そこで、名前を階層化します。

つまり、普通の人が「姓」と「名」を持つと同じ。


ある団体に、団体名を割り当てます。

この団体名は、同じ名前が無いようにします。


団体が大きすぎる場合、団体の中でさらにグループ名を割り当てます。

この名前も、団体の中では同じ名前が無いようにします。


さらに、グループ内でホスト名を考えてもらいます。

このホスト名も、グループ内で同じ名前が無いようにします。


最後に、今まで「ホスト名」を必要とした部分で、ホスト名、グループ名、団体名を接続した名前を指定します。

世界中に同じホスト名・同じグループ名が存在したとしても、団体名が違えば別の名前になります。



英語で、あるまとまった地域などのことを「ドメイン」と呼びます。

これが、「ホスト名のドメイン管理」です。


ちなみに、グループ名などは、何段階に階層化しても構いません。

世界に一つ、という保証さえあれば問題は無いのです。




次に、HOSTS.TXT 相当のファイルの管理も、グループや団体の単位で行ってもらいます。

自分の「ドメイン」の中にあるホスト名やグループに関してのみ責任を持ち、それ以外のことは適切な別のところに問い合わせる。


これが、ドメインの名前管理サービス。…つまり Domain Name Server 、DNS です。


各ドメインの管理ファイルは、今までの HOSTS.TXT のように巨大なものにはならないでしょう。

必要最小限の情報だけを送り合うことで、低速な回線でもすぐに情報が伝達できるようにします。


DNS の考え方では、知らない名前は基本的に「上位」のサーバーに問い合わせます。

つまり、ホスト名がわからなければ自分の属するグループに訊ね、そのグループは属する団体に訊ねるのです。


じゃぁ、団体はどこに訊ねるの? …一番上には「ルート」、つまり「根っこ」を用意します。

(太い根っこから、幹が伸びて枝に別れ、葉っぱが茂っているイメージです。葉っぱがホストに相当します)




アイディアが出されたのは、1983年の11月。RFC881,882,883の連番で、2と3がモカペトリスによって書かれています。

(881は、モカペトリスのアイディアを実行に移すために、以下のスケジュールを考えている…という内容)




この時のアイディアはたたき台に過ぎず、これから長い時間議論が続きます。

最終的には、4年後の 1987年11月に、RFC1034, 1035 として仕様が決まり、モカペトリスによって最初のサーバー(JEEVES)が実装されます。



当初、ルートサーバーは、エンゲルバートが管理しました。

それまでの HOSTS.TXT の管理人です。


しかし、重要なものを個人が管理するのも違うだろうということで、後に世界で13台のサーバーを、分散して管理することになります。


ルートにアクセスする必要がある際は、この13台の中でランダムに問い合わせを行います。

どれかのサーバーが障害を起こしてアクセスできなくても、別のサーバーに問い合わせれば大丈夫。


#現在は、見た目の上では13台のままですが、さらに数百台に分散されています。


ちなみに、13台には A~M の名前が付けられていますが、日本には M が置かれています。

これ、当時の日本のインターネットの世話役であった、「村井純」先生のイニシャルから決められたそうです。


#この話、以前に NHK の技術番組でも、本人が語っていました。

 上のリンクは、最近本人にお会いして聞いた、という方のブログ。




ところで、DNS と IP アドレス(IPv4)には、似て非なる関係性があります。


IP アドレスは、0~255 (8bitで表現できる数)を、. (ピリオド)で区切って4つ並べたものです。

左側の数字が上位の管理者によって管理され、右に行くほど末端を意味します。


ドメイン名は、「名前」を . (ピリオド)で区切って並べたものです。

右の名前が上位の管理者によって管理され、左に行くほど末端を意味します。


…ドットで区切って並べる、という部分が同じなのに、左右のどちらが末端か、という扱いが違うのです。


DNS は、基本的には「名前を元に、IP アドレスを調べる」ためのものです。

しかし、IP アドレスを元に名前を知りたい、という場合(逆引き)もあります。


DNS では、「プログラムの仕組みはそのまま」で、「データを工夫して」逆引きに対応しています。


たとえば、192.168.127.32 というアドレスがある場合、これを逆引きするためのデータは、次のような「ホスト名」として設定します。


32.127.168.192.IN-ADDR.ARPA


IP アドレスを区切ったうえで逆に並べ、最後に IN-ADDR.ARPA を付けただけ。

でも、これで IP アドレスの「末端が右」という規則は「末端が左」に変わり、ドメイン名と同じプログラムで処理できるようになりました。


もちろん、IP アドレスの部分にはホスト名を書いておきます。

…これはつまり、DNS のプログラムが、IP アドレスとホスト名を「まったく」区別していないことを意味します。

数字である IP アドレスを書く部分に、アルファベットのホスト名書けちゃうのね。


プログラムを複雑にしないで、運用上の工夫で乗り切ろうとする姿勢、素敵です。


#運用上の、と書いたけど、運用しながら作りだされた方法ではなくて、最初の DNS RFC にこの表記方法が明記されてます。




過去に書いた通り、DNS の設計時点では「悪人」がいることは想定していなかったので、仕組みそのものにセキュリティホールが指摘されています。


以前には「毒入れ」と呼ばれる問題と、google DNS がその問題の解決方法の一つだということを書いたのですが、つい最近別の問題も起こっていました。

ドメイン名ハイジャックとして話題になりましたが、DNS の登録情報もまた、DNS のように「人から人へ」と伝播していくのを悪用した攻撃です。



セキュリティは弱いところからほころびる、と言われますが、極度に分散した仕組みであるDNSは、弱いところだらけです…




▲目次へ ⇒この記事のURL

同じテーマの日記(最近の一覧)

今日は何の日

関連ページ

DJBの誕生日(1971)【日記 15/10/29】

世界最初のドメイン登録(1985)【日記 17/03/15】

別年同日の日記

01年 11/17

02年 予約特典

04年 CSV-S57改造

13年 ミッキーマウス&ポール・モカペトリス 誕生日

16年 ら抜き言葉


申し訳ありませんが、現在意見投稿をできない状態にしています

サターン話のページ、全予定分 公開完了  2014-11-21 12:37:15  コンピュータ

▲目次へ ⇒この記事のURL

1年ちょっと前から書き続けていた…というか、忙しくて1年近く放置していただけだけど、サターンの話当初予定分を公開し終わった。


明日がサターンの発売20周年だからね。


サターンの話がこれで終わりか、っていうと、他にも語りたいことは一杯あります。

ST-V のゲーム作ってたから、それぞれにまつわる思い出なんかもある。


ただ、そちらは個人の思い出でもあり、サターンの技術話とは別の物。

「ゲーム作成の話を出来るだけ記録しておく」という当初の考えでいえば、いつか書きたいと思っています。

でも、まだその時期ではない。




今回、kozo さんのツイートを転載させてもらったうえで解説を加えたのですが、興味深い話にもかかわらず入れられなかったものがあります。


kozo さんは当時SGLを使っていただけで内部にはそれほど詳しくなかったそうです。

そして、他の人のプログラムを「見せてもらった」だけの部分もある。


そんな中で、話としては非常に興味深いのだけど、技術的な裏付けがわからずに取り上げられなかったものがあるのです。



それが、「パレットテクスチャマッピングしたポリゴンモデルで、何らかの工夫でグーローシェーディングのようなことをしていた」という話。


詳細は本記事を読んでもらうことにして、概要だけを説明すると、サターンには「テクスチャ」の描き方が2つあります。

1つは、RGB の値を直接指定する、RGB テクスチャ。

もう一つは、いくつかの選択した色だけで書かれる、パレットテクスチャです。


パレットテクスチャの方が、色情報を限定できるので、ずっと省メモリです。

メモリへのアクセスが少ないので、描画も高速。


でも、描画するプロセッサは色を知ることができないため色演算ができません。

グーローシェーディングは色演算の一種なので、パレットテクスチャではグーローシェーディングはできないのです。




サターンの色は、RGB 各5bit でした。

そして、グーローシェーディングも、RGB 各 5bit で「色の増減差分」を指定します。


増減差分には符号があるので、5bit の色情報を完全にカバーできません。

白を灰色にしたり、黒を灰色にするのが精いっぱい。黒を白に、はできません。


でも、kozo さんはパレットテクスチャで工夫した「グーローもどき」で、黒の物体に白いハイライトが入っているのを見たのだそうです。

グーローもどきはパレットテクスチャなので、RGB テクスチャよりもずっと省メモリで高速なのもよかった、とのこと。



光源計算して uv値を変えていたような覚えがある…といいます。

uv というのは、テクスチャとして使う画像の座標のこと。大きな画像の一部をテクスチャとして切り出す、という方法でテクスチャを貼るときに使います。プレステはこの方法。


でも、サターンには uv 値はありません。テクスチャを「貼る」のではなく、四角いスプライトを「変形」させて面を作るのです。



…でも、しばらく考えていて思い出しました。

サターンの技術の詳細には書いていませんが、uv 値を変化させるようなことを出来る方法がありました。


サターンのテクスチャは、横方向の「切り出し位置」は決め打ちになってしまいますが、縦方向だけならドット単位で変えられたのです。

仮に、縦に長いテクスチャがあったとして、その一部を切り出して「面」に張り付けることができます。


切り出し位置を少しづつ変えれば、面に書かれた画像がスクロールしているように見えます。

隣り合ったポリゴンで連続した位置を切り出せば、2連続のポリゴンでスクロールしているように見えます。


筒状に並んだポリゴンで、陰影を表したグラデーションの画像を、光源方向に合わせるように「回転」させれば、グーローもどきの表現ができるかもしれません。




kozo さんに聞いてみたところ、技術的に可能なら興味深いけど、それが自分が見たデモと同じような効果が出せるのかどうかはわからない、とのこと。

まぁ、それはそうですね。可能性がある、ということと、実際にそれが使われていたということは別です。


他にも、考えるだけならいくつかの「可能性」を考えられたのですが、結局はわからないので本文に入れるのをやめました。

しかし、こんな方法当時は試そうとも思わなかったので、もし本当にやっていた人が居たならすごいな、ということで書き留めておきます。



ちなみに、ですが、僕は ST-V で作られた2Dゲームで、この「スプライト内の画像が縦に動く」という妙な効果をゲームに使ったことがあります。

ちゃんと市販もされたよー。別に有名なタイトルではないけど。



▲目次へ ⇒この記事のURL

関連ページ

セガ・サターンの発売20周年【日記 14/11/22】

別年同日の日記

01年 11/20

13年 スーパーファミコンの発売日(1990)

18年 NAOMI向け開発


申し訳ありませんが、現在意見投稿をできない状態にしています

あきよし】 脱字指摘ありがとうございます。修正しました。 (2014-12-27 18:58:51)

【獣】 サターンには「テクスチャ」の描き方がつあります ←数字が抜けてます^^ (2014-12-12 17:30:40)

セガ・サターンの発売20周年  2014-11-22 12:47:18  コンピュータ 今日は何の日

▲目次へ ⇒この記事のURL

今日はセガサターンの発売日(1994)。

発売 20周年です。


サターンの発売日としては去年も書いたし、今日が土曜日なので昨日も書いた

でも、ツイッターでセガ公式氏が昨日「仕掛けた」ので、昨日今日とサターンファンが盛り上がって自分の思い出話を語り続けている。



で、時々見かけるのがサターンの「マスコットキャラ」の…であったはずの…ペパルーチョの話と、「なんでソニックじゃなかったのか」という話。


ソニックの人気を上層部が過小評価していたのではないか、ということを呟いている人もいました。

えー、それは流石に違うと思う。



真相は知りませんが、当時の噂としては理由をちょっと聞いていましたし、最近サターンの話を調べていた際の情報とも合致します。

なので、どうも…多少の信憑性はあるんじゃないかな、と思っている噂話を書いておきます。




サターンの話の中で、サターンが当初はメガドラ互換として考慮されていた話を書きました。

当初はメガドライブ 32 という開発名だったようです。


System 32 の機能を大幅に取り込みながらも、メガドライブ互換。

…つまりは、ポリゴンなんて出なかった、ってこと。


そのころから、セガはポリゴンゲームも作りはじめていました。

なので、メガドライブ 32 はポリゴン機能も付け加えられ、その頃から「ジュピター」と名前を変えた模様。



この頃の CPU が何だったかは知りません。

でも、メイン CPU にはそれなりに強力なものを据えて、サブ CPU に 68000 を搭載したのではないかな。


想像ですが、メイン CPU は Z80 をエミュレートさせても、十分に 3.58Mhz の速度を出せる程度の速度は持っていたでしょう。

そして、メガドライブと同じように、68000 とメイン CPU は、どちらも同等のバスに接続させる。


こうしておけば、メガドライブのソフトも Z80 部分をエミュレートすることで動かせます。

68000 を音楽用にして、メイン CPU をネイティブで動かせば、十分なパワーも引き出せます。



実は、メガドライブも同じような仕組みで、「mkIII 互換」になっているのは、セガファンなら知っているところ。




メガドライブの互換機、というのは非常に重要だったと思います。

日本ではメガドライブはあまり売れていませんでしたが、世界的にはすごい大きな市場を作った機械。

この市場を「丸ごと捨てる」という判断はあり得ません。


そして、ソニックはこの市場を代表するビッグキャラクター。

おそらく、ジュピターがメガドライブ互換のまま完成していたら、当然のようにソニックのゲームも同時発売されていたのではないかと思います。



しかし、当のアメリカ市場で、3Dゲームの旋風が巻き起こることになります。




パソコン用には3Dゲームが流行し始めていました。

3DOの開発の噂もありましたし、PS-Xの噂もありました。


どうも、一番ライバル視したのはPS-Xのようですが、この機械に負けないようにジュピターは大幅に設計をしなおし、サターンに変わります。


どうやらこの過程で、「メイン CPU とサブ CPU を同じバスにつなげる」という選択は捨てられた模様。

同じバスを奪い合うと性能が低下するために、性能向上を狙うとこの選択は無かったのでしょう。


サターンに音楽用としての 68000 は残っていますが、メインとして使うことはできません。

これは、「メガドライブ互換にはなり得ない」ことを意味します。


メガドライブの互換性を気にしすぎると、性能が低くて他社との競争に負ける。

しかし、メガドライブの互換性が無くなれば、大きな市場を手放すことになる。


非常に難しい選択を迫られた形です。




サターンにはメガドライブの互換性は望めない。

…どうも、技術的にこのことがはっきりしたのは、かなり遅かったようです。

逆に言えば、互換性を考慮できないか、ぎりぎりまで設計の見直しが続いていたのかもしれません。


しかし、互換性が保てないとはっきりした時点で、セガは「互換性を持った後継機」の路線を諦め、メガドライブの延命策を始めます。



この方法も、念のための2系統。

一つは、メガドライブの「後継機」ではなく、「周辺機器」でパワーアップを計る方向。

もう一つは、そのままメガドライブの市場を維持する方向。


前者はスーパー32X ですね。

メガドライブがすでに「拡張」に耐えられないほど古いハードになっていた上に、戦略決定が遅かったため、スーパー 32X のハード自体を十分練り込む時間もなく、歴史的な大失敗しました。


ハードを「開発する」という決定から、発売まで1年無いんだよね。

同時発売のソフトの開発も考えると、ハードの実質的な設計期間は3か月程度だったのではないかと思います。


それでも、こちらではサターンにはなかなか出なかったソニックシリーズが、すぐに発売されています

ソニックは登場しない、外伝的作品ですけど。



で、メガドライブ延命策のもう一つ、「そのまま市場維持」です。

…これが難しいのは、最初からわかっていたでしょう。


でも、そのための戦略の一つが「ソニックはメガドライブのキャラクターだ」という宣言です。


ソニックの人気を過小評価なんてしていない。

むしろ、非常に大きく評価しているからこそ、「ソニックの続編はまだメガドライブで出る」としておけば、メガドライブの市場を保てるのではないか、と考えたのでしょう。




もっとも、この宣言自体、非常に玉虫色なんですね。


どうも、どこかで「メガドライブのキャラクターだ」と言ったようなのですが、そのことを聞かれたセガの人間は「いや、メガドライブと言うことは無くて、あれはセガのキャラクターですよ」なんて言ってたりもする。


でも、そういうときにも必ず、「サターンにはサターンで活躍する新しいキャラが必要でしょう」と付け加えたり…

要は、言質を取られないようにのらりくらりとかわしながら、ソニックの新作はまだメガドライブで出るんじゃないか、と期待させようとしている。


これ、結局「市場維持するためにも、ソニックはメガドライブと共にあるような幻想を見せておけ」という戦略だったのではないかと思います。

いつか市場がしぼむとは分かっているから、決して言い切ったりはしないのだけど。




で、サターンのキャラはペパルーチョ、ということになるのですが、これは単に宣伝上の戦略。


プレステは、発売日の少し前から「モータートゥーン・グランプリ」のキャラクターイラストをチラシなどに使っていました。


#モータートゥーンは当時ソニーが直接作っていたゲームで、後の「グランツーリスモ」の元になるゲーム。


かなり使っていたし、初代マスコットキャラ、と思っていたのだけど…

Wikipedia にもプレステのマスコットキャラ一覧、ってのがあるのだけど、載ってないね。


まぁ、ともかくプレステは「かわいいゲームキャライラスト」を使ってチラシとか作っていたのね。

じゃぁ、サターンもやらなくちゃまずい。


でも、ソニックはメガドライブ市場を温存する戦略があるので使えません。

注目タイトルはバーチャファイターでしたが、「アキラ」は…一般向けのかわいいキャラとは言えない。



そこで、開発中のゲームのキャラから、ペパルーチョが選ばれた。ただそんだけ。

「クロックワークナイト」を作っていたチームは、サターンを背負って立つキャラになるなんて、全く考えていなかった模様。




急にメインキャラの重圧を背負わされた、クロックワークナイトの開発チームの方には同情を禁じ得ません。

「ソニックに続く看板キャラだったのに、いつの間にか消えた」とか言ってあげるのは、ちょっとかわいそう。


看板キャラだから、当然「同時発売で」と言われたと思うのですが、そんなつもりで開発してない。

じゃぁせめて2週間遅れで、となったのでしょうが、おかげで、未完成だったのに「上巻」って名付けて半分だけ発売することになっちゃうし…


#クロックワークナイトの発売は、本体発売からおよそ2週間後の、12月9日。


でも、「上巻」って名付けて発売したので、下巻を発売することが約束されました。

ここで、「アイディアコンテスト」を行ったのは流石。転んでもタダでは起きない。


このゲーム、上巻はスーパーマリオタイプの普通のゲームなのね。

3Dを活かした演出はあるのだけど、「3Dじゃなくちゃ」と言うほどのものは無い。


でも、下巻はすごいです。横から見ている2Dゲームなのにも関わらず、3Dじゃないとできないことが詰まっている。


アイディアコンテストで応募された中から、実際に面白いアイディアを詰め込んだのですね。

数人の開発チームで作っていても出てこないような仕掛けが、これでもかと詰め込まれている。


それでいて、ちゃんと2Dゲームなので、遠近感が掴めないで遊びづらい、とかいうこともない。

それまでのゲームでは見たこともないような突拍子もないアイディアを、ちゃんと遊びやすいゲームにまとめ上げているのだから、たいしたものです。


名作です。遊んでない人は今からでも是非。




そんなこんなで、ソニックのゲームがセガサターンでなかなか発売されなかった理由と、ペパルーチョがマスコットとされた理由の「噂」を書いてみました。


もう一度書いとくけど、当時聞いた噂だよ。

ここには書けないこともあって、それなりの信憑性はあると信じているけど、核心に迫る事実は何も知らないので間違えていても責任はとれません。



▲目次へ ⇒この記事のURL

同じテーマの日記(最近の一覧)

今日は何の日

別年同日の日記

01年 11/21

02年 エアチェック

09年 風邪…ひいた?

09年 Netwalker 買った。

13年 セガ・サターンの発売日

17年 加湿器


申し訳ありませんが、現在意見投稿をできない状態にしています

【sh】 海外のフォーラムで、32Xのソニックは元はセガサターンで(主役もソニックとして)出すつもりだったという噂がありました。実はその頃のものらしき開発中ROMデータというのがネットに流出して出回っているんですが、それがメガドライブ用のROMなんですよね... 互換性を予定していたのと関係あるのかもと妄想してます (2017-08-27 00:54:49)

ジョン・バッカスの誕生日(1924)  2014-12-03 10:30:47  コンピュータ 今日は何の日

▲目次へ ⇒この記事のURL

今日は、ジョン・バッカスの誕生日(1924)


FORTRAN 開発の責任者であり、ALGOL の作者の一人であり、BNF記法の考案者の一人でもあります。

つまり、世の中の多くのコンピューター言語の基礎を作り上げた人。


Lisp なんかはまた違う潮流ですけどね。



以前の日記に、FORTRAN の誕生経緯を書いたことがあります。

バッカスの業績は、大体そこに書いてあるので、そちらをご覧ください。



ここでは、そちらに書かなかった話を書こうかと思います。




僕の認識では FORTRAN は世界最初の「高級言語」です。


高級言語の定義と言うのは非常に曖昧なのだけど、アセンブラではなくて、もう少し「文法」らしきものを持っている、ということね。


ただ、今日バッカスの誕生日なので調べたら、Wikipedia の日本語版には FORTRAN の前にバッカスが SpeedCoding という言語を作っている、となっている。


うーん、あれを言語と呼ぶか。…呼べなくはないけど、そう認識してなかった。

弁明するわけではないけど、FORTRAN が「世界最初」と以前に書いてしまった手前、SpeedCoding について解説しておく必要がありそうです。




FORTRAN が作られた IBM 704 は、701 の、互換性のない後継機です。


701 は IBM の作った最初の電子式デジタルコンピューターで、科学計算用でしたが固定小数点しか扱えませんでした。

(704 は浮動小数点を扱うハードを持っていて、これが世界初です)


しかし、科学計算では浮動小数点が無くては、精度が十分ではありません。


そこで、浮動小数点を含む科学演算を素早くプログラムするために、SpeedCoding が作られました。

その意味では、目的は FORTRAN と同じ。



でも、SpeedCoding は FORTRAN とは全く違うアプローチを使っています。


これは、IBM 701 の中に作られた「仮想コンピューター」なのです。


この仮想コンピューターでは、浮動小数点を扱う命令を持っていますし、主要な数学関数を扱う命令も持っています。

それらの命令は全て、仮想コンピューターの「機械語」として用意されています。


SpeedCoding システムは、この仮想コンピューターの命令を解釈できます。

…内部的には、命令語(数値)を拾ってきて、その数値に対応するルーチンを呼び出す、というのをひたすら繰り返すだけです。


ひたすらルーチンを呼び出し続けるだけなので、遅いです。



命令の中には、IBM 701 に処理を戻す命令もあります。

なので、IBM 701 の命令で前処理を行い、SpeedCoding システムで浮動小数点計算を行い、終了後は IBM 701 命令で結果出力を行う、という使い方になります。


(判る人にだけ:Apple ][ の ROM にある、Sweet16 と全く同じような動作です)



まさかこれが「FORTRAN の前に作られていた言語」と言われるとは思いませんでした。

言語と言えなくはないですが、完全に機械語で、この時代なのでおそらくハンドアセンブル。


まぁ、どう捉えるかは人それぞれでもあるのですが、英語版 Wikipedia でも「世界初の高級言語」というような紹介をされていて、それはちょっとどうかと思う。


日本語版はその翻訳に過ぎないのですが、「世界初の高級言語」は流石に違うと思ったのか、「先に作られた言語」みたいにトーンダウンしてる。




ただ、SpeedCoding が FORTRAN に影響を与えているのは事実です。


SpeedCoding は、結局のところ機械語だったので「誰でも使える」とは言い難いものでした。

また、インタプリタ実行だったので、非常に遅く、機械の高速性を殺してしまうものでした。


そこで、FORTRAN は「英語のような文法」を持つ言語として設計され、下手なアセンブラプログラマが組むよりはずっと速い実行速度を持つコードを生成することが目標とされました。


最初の FORTRAN では、すでに局所最適化などのテクニックが駆使されています。


言語構造は実のところ、英語の文法に近づけただけで、IBM 704 の機械語の影響を強く受けています。

…つまるところ、アセンブラと大して変わらなかった、ということ。


でも、生成されるコードの品質に関しては、いきなり高いレベルを狙っているのです。




冒頭でリンクした FORTRAN の誕生経緯を書いた際に、「FORTRAN はよく出来ているから、最初の言語だとは思わなかった」と言っている方がいました。


多分、その方は 現代の FORTRAN や、FORTRAN の各種バージョンの中でも特に普及した FORTRAN 77 を想定していたのではないかな、と思います。


最初の FORTRAN は、「文法を変えただけのアセンブラ」と言う感じが残っているのですが、FORTRAN 77 の頃にはそのような部分は無くなっていて、よく出来た高級言語です。



でも、上に書いたような経緯で、最初の言語であるにもかかわらず、「過去の反省」が活かされてもいます。

最初の FORTRAN を知ったうえでの「よく出来ている」発言だったとすれば、その理由は上記のようなものでした、


最初の言語、ではありますが、過去のプログラムの反省を踏まえ、高いレベルで作り上げられていたのです。





▲目次へ ⇒この記事のURL

同じテーマの日記(最近の一覧)

今日は何の日

関連ページ

ジョン・バッカスの命日(2007)【日記 15/03/17】

ジョン・バッカスの命日(2007)【日記 15/03/17】

IBM - SSEC

別年同日の日記

02年 イタメシヤ

02年 オムライスカレー

12年 ボーリング

18年 妻の誕生日

18年 ノートパソコン修理


申し訳ありませんが、現在意見投稿をできない状態にしています

NLS伝説のデモの日(1968)  2014-12-08 13:13:15  コンピュータ 今日は何の日

▲目次へ ⇒この記事のURL

1968年の今日、ダグラス・エンゲルバートにより、NLS の「伝説のデモ」が行われました。


ダグラス・エンゲルバートは元米空軍のレーダー技師で、Whirlwind I の海軍版である「SAGE」を扱っていました。


当時のコンピューターは、「計算機」にすぎません。

パンチカードでプログラムとデータを入力すると、テレタイプライターが結果を印字します。

普通なら、これで終わり。


しかし、SAGE はそうではありませんでした。

何台もの CRT ディスプレイ…オシロスコープを改造したものが接続されていて、ベクタースキャンで画像や文字を出力します。

さらに、ライトガンと呼ばれる機器で画面をタッチすることで操作を行えます。


米空軍では、海岸線に並べたレーダーから入る情報を SAGE を使って統合し、表示し、必要なら即座に詳細情報を見られるようにしていました。

こうして、米国本土に侵入する航空機を監視していたのです。




エンゲルバートは、SAGE を扱った経験から、「コンピューターと対話する」可能性に気付きました。

SAGE では、必要な情報を画面に表示するだけです。しかし、「計算」だけではなく、画像や文字で情報が表示され、それに触れるだけで詳細を得られました。


この方法をもっと拡張すれば、コンピューターで文章を作成したり、遠く離れた人とそれを共有したり、文字を使って会議をすることもできるでしょう。


エンゲルバートのアイディアは、oN Line System 、略して NLS と呼ばれ、ARPA (国防総省高等研究計画局) の予算を獲得します。


NLS では、SAGE で使っていたベクタースキャンディスプレイよりも「安価な端末」として、市販されていたテレビを利用します。

ただ、このためにライトガンが使えなくなってしまいました。


そこで、エンゲルバートはライトガンに変わる「暫定的な」ポインティングデバイスとして、マウスを考案します。

また、マウスと同時に「片手だけで文字を入力できるキーボード」として、和音キーボードも考案します。


NLS は、文字入力用の通常のキーボードと、コマンド入力用の和音キーボード、そして、コマンドを適用する位置を指定するマウスの、3つの入力機器を使用していました。




1968年の今日…12月8日に、スタンフォード大学で NLS の発表会が行われます。

これが、後に「伝説のデモ」と呼ばれることになるものでした。


SAGE からずっと時代はたっていますが…まだ、コンピューターはテレタイプで使うのが普通でした。

ディスプレイを接続された PDP-1 などは現れていましたが、それはちょっとグラフを表示したりテレビゲームに使われたりする程度の、メイン用途ではない周辺機器です。


そこに、マウスによってグラフィカルに操作を行え、文章を自由自在に「コピー&ペースト」出来る、魔法のようなワープロが登場したのです。

oN Line System の名前の通り、遠隔地ともオンラインで結ばれており、テレビ会議を行うことも可能でした。


エンゲルバートのスピーチも見事なもので、この新しい概念…コンピューターを計算以外に使う、ということの有用性をわかりやすく伝えていました。



このデモを直接見た人は、そう多くはないそうです。

大学の講堂で行われた発表会に過ぎませんから。


しかし、その中にアラン・ケイがいて、スモールトークと GUI が生み出されます。


テッド・ネルソンの Xanadu も、伝説のデモの影響をいくらか受けているようです。

(ハイパーリンク、という案は伝説のデモ以前から持っていたようですが、このデモ以降に具体的なものとなったようです)



スモールトークが元となって Macintosh が、そして Windows が生み出されましたし、Xanadu が元となって WEB が生み出されました。

その意味で、NLS のデモが後に与えたインパクトは絶大で、まさに「伝説の」と呼ばれるのにふさわしいものだったように思います。



▲目次へ ⇒この記事のURL

同じテーマの日記(最近の一覧)

今日は何の日

関連ページ

PONG 発表日(1972)【日記 15/11/29】

別年同日の日記

01年 12/7


申し訳ありませんが、現在意見投稿をできない状態にしています

【追悼】ラルフ・ベア氏  2014-12-08 16:52:17  コンピュータ 今日は何の日

▲目次へ ⇒この記事のURL

詳細は現時点で明らかになっていませんが、ラルフ・ベア氏がお亡くなりになったそうです。

(追記:12月6日没)


世界最初のテレビゲーム機である、ODYSSEY を作成した方。

そのプロトタイプモデルである BROWN BOX と共に有名です。


(BROWN BOX の方が性能が良く、発売に際してコスト削減で性能が落ちたため)



「世界最初のテレビゲーム」と一般に言われる、アタリ社の「ポン」は、ODYSSEY に含まれる複数のゲームのうち「テニス」を真似して、さらに完成度を高めたもの。


ついでに書けば、アタリ社はポンを「ビデオゲーム」と呼んでいます。

ラルフ・ベアは ODYSSEY を「テレビゲーム」と呼びました。


そういう意味では、ODYSSEY こそが、世界で最初のテレビゲーム。

「テレビゲーム」という言葉を作り出したのは、ラルフ・ベア氏です。




1年ほど前に、テレビゲームの初期の歴史を「ある程度」追いかけた記事を書きました


僕はコンピューターの歴史を追いかけるのが好きですが、どんなものでも「無から生じる」ことは無いと思っています。

必ず先行技術があり、影響を受けたり、改良されたりして新しいものが出来る。



先に書いたように、ポンは ODYSSEY の影響を受けています。パクリだと呼ぶ人もいます。

でも、そこで行われた「改良」は非常に重要なもので、ヒットの原動力となっています。


だから、ポンが「世界最初」と呼ばれるのも自然な事。

正直なところ、ODYSSEY のゲームは、現代人から見るとゲームらしくありません。



でも、記事を書いたときに、BROWN BOX がどんな先行技術から生み出されたのか、さっぱりわかりませんでした。

もしかしたら、ラルフ・ベアは本当に人知を超えた天才で、完全な無からこれを作り上げたのか…とさえ思いました。



でも、多分そうじゃない。


記事を書いている最中にしつこく調べつづけて発見しましたが、ラルフ・ベア氏の元で働いたエンジニア、ウィリアム・ラッシュが、MIT 出身でした。

そして、彼が新しいアイディアを次々もたらして、「おにごっこ」しか遊べなかった BROWN BOX に、次々と新ゲームを追加していったことがわかりました。


恐らくは、彼は MIT で作られた多数のゲーム…特に「スペースウォー」を知っていたのでしょう。



この記事を書いた時点で、ベア氏はまだ存命でした。

彼の WEBサイトも見つけていました。


…ただ、コンタクト用ページは 404 NotFound になっていました。

WaybackMachineを使ってメールアドレスを見つけましたが、まだ使えているのかも不明でした。



メールが届くかどうかもわからないけど、思い切って、ラッシュ氏のことを聞いてみようか…


そう思いましたが、きっとベア氏には、ラッシュ氏は「アイディアも豊富なエンジニアだった」程度の認識しかないでしょう。

ラッシュ氏が何処でアイディアを得たのか、という謎にはきっとたどり着けないと思いました。



それに…彼のページを見ると、すべてを一人で作り上げたかのように書いてあります。

実際はそうではない、というのは少し調べればわかるのに。


テレビゲームは彼が切り拓いた世界なのに、テレビゲームの世界は、すでに彼の手を離れている。


ラルフ氏は他にも有名な電子ゲーム、「サイモン」を作ったりしていますが、テレビゲームの隆盛を、半ば寂しく見守っていたのではないか、という気がしました。

「彼がひとりで作った」かのように書いているのも、彼の精いっぱいの虚栄心なのではないか?


そう考えると、そのアイディアはラッシュ氏が持ってきたのでは? などと聞く気にはなれませんでした。

僕の考えすぎかもしれませんが、とにかく聞く気にはなれなかったのです。


そして、永遠に聞くことは出来なくなってしまいました。




ラッシュ氏はベア氏ほど有名ではないので、現在どこにいるのかわかりません。

彼が PDP-1 とスペースウォーを知っていたのかどうか…状況証拠から、恐らく知っていたと確信しているのですが、是非知りたいところです。


決してそれは、ラルフ氏の業績を貶めるものではありません。


最初に書いた通り、どんなものも、先行技術を受け継いで生み出されると思っています。


BROWN BOX / ODYSSEY は重要な「ターニングポイント」です。

これが、MIT のゲーム群…特に「スペースウォー」と正しく繋がっている、と確認するのは、ゲームの歴史を俯瞰する上で重要だと思っています。



▲目次へ ⇒この記事のURL

同じテーマの日記(最近の一覧)

今日は何の日

関連ページ

PONG 発表日(1972)【日記 15/11/29】

別年同日の日記

01年 12/7


申し訳ありませんが、現在意見投稿をできない状態にしています

エイダ・ラブレイス伯爵夫人の誕生日(1815)  2014-12-10 09:25:59  コンピュータ 歯車 今日は何の日

▲目次へ ⇒この記事のURL

今日は、エイダ・ラブレイス伯爵夫人の誕生日(1815)。


そして、米国防総省規格番号 MIL-STD-1815 、「エイダ」言語が正式承認された日(1983)。



エイダは世界最初のプログラマ、と呼ばれる女性です。

バベジのよき理解者で、バベジが構想していた「解析機関」の講演集をまとめたりもしています。


まずはこちらの話から。




彼女は貴族の出身で、父親は「詩聖」とも呼ばれる詩人、バイロン卿。


もっとも、彼女はバイロンのたった一人の子供ですが、生後一か月で両親が離婚し、母親に引き取られています。


父母は離婚後会うことは無かったようですが、バイロンはエイダの実の父親として、この後も多少の交流はあったようです。

エイダ自身、結婚前は「エイダ・バイロン」を名乗っています。


また、以前に「悪魔とドラキュラの誕生日」として書いたのですが、バイロンがスイス旅行した際に同行し、後に「フランケンシュタイン」を執筆したメアリー・シェリーは親友でした。



エイダの母親は数学・科学好きで、エイダにも家庭教師を付けています。

その家庭教師の一人が、ド・モルガン。


プログラムの学習をすれば、必ず「ド・モルガンの法則」として名前が出てくる人です。

どんな法則か気になる人は自分で調べてください。


ここでは、「論理性を重視した数学分野」で特に深い功績のあった数学者だ、とだけ書いておきます。




さて、そんな重要人物に数学を教わったエイダは、論理性というものを正しく理解していました。

そして、母親が数学・科学好きだったため、数学者や科学者たちとも親交がありました。


17歳の時(1833)、エイダは知人の紹介で、当時 41歳のバベジと知り合います。


バベジは、1822年から階差機関を作成中でした。

しかし、政府も資金を提供した(世界初の国家プロジェクトだった!)階差機関の作成は、10年目にして暗礁に乗り上げていました。


バベジは「完璧な機械」を作ろうとするあまり、作成中なのに設計図を変更したり、職人の仕事のやり方に口をはさんだりするのです。

雇われていた機械職人は非常に技術の高い人でしたが、ついに10年目で仲違いし、彼は去ってしまったのです。

余りにも複雑な階差機関を作れる職人は、他にいませんでした。


そこで、バベジは階差機関のほんの一部を使って、卓上型に作り直した「見世物としての」階差機関を持って、多くの人に階差機関の素晴らしさを説いて回っていました。

これには、国家予算を使い果たしてまだ足りない開発資金を提供してくれる、貴族のパトロン探しの目的もありました。


…そして、貴族の出身であるエイダも、この「見世物」を見物することになるのです。




19世紀当時、女性の地位は低く、学のある女性はそれほど多くありませんでした。

しかし、エイダは階差機関の動作に非常に興味を持ち、的確な質問をバベジに浴びせかけます。


バベジは、この若い聡明な娘さんに対して、丁寧に解説を行います。

この関係は、その後もずっと、エイダが結婚して「ラブレイス伯爵夫人」となっても続きます。


エイダはバベジの最大の理解者であり、バベジはエイダにとって多くのことを教えてくれる教師でした。




1842年頃、バベジはイタリアで、当時考案していた「解析機関」のアイディアを講演しています。


解析機関は、先に書いた、見世物にした「階差機関」とは違う新たな機械です。

階差機関は計算機にすぎませんが、解析機関はプログラム可能なコンピューターでした。



この時の講演を、イタリアの軍事技術者メナブレアが、フランス語で記録していました。

これはメナブレア記録、と呼ばれます。


エイダもバベジもイギリス人でしたが、バベジの講演はイタリアで行われ、フランス語で書かれていました。

そこで、エイダはメナブレア記録を入手し、英語に翻訳します。


そしてこの際に、バベジの協力の下で膨大な注釈を入れました。注釈が、本文の2倍にも及びます。

実際に階差機関の「プログラム」も多数添えられていますが、これらのプログラムはバベジが書いたものだと考えられています。


しかし、以前はこれらのプログラムは、注釈を書いたエイダが作ったものだと考えられていたため、エイダを「世界最初のプログラマー」だとする説が広まっています。




もっとも、エイダもプログラムは書けたようで、彼女の手によるプログラムも残っています。

バベジとプログラムの作り方が明らかに異なるため、彼女の物だとはっきりわかるのだそうです。


#プログラマの方であれば、プログラムに「個性」が出ることはお分かりであろう。


また、バベジが作ったプログラムをよく吟味し、誤り…つまりは「バグ」の指摘も行っています。



ただ、エイダは数学知識はあまりなく、メナブレアの記述ミスで、明らかに間違っている数式をそのまま翻訳しています。

現代のプログラマにも、数学的知識はあまり持っていないがプログラムは出来る、という人は多数いますので、そういうタイプだったようです。


…ただし、当時はプログラマは、エイダとバベジの二人しかいないのですが。




エイダは、数学的な知識はそれほどありませんでしたし、それほど優れたプログラムを残したわけでもありません。

しかし、解析機関の可能性については、バベジよりも的確に把握していました。


バベジは、解析機関を優れた計算機として考えていましたし、そのつもりで設計していました。


しかしエイダは、解析機関が単なる計算機を超えたものであることを感じ、人工知能の可能性にまで言及しています。





時代はずっと下って 1983年。

米国防総省は、軍事用のプログラムを行うための専用言語を開発し「エイダ」と名付けました。


この言語の正式な「規格番号」は、MIL-STD-1815 。軍事(ミリタリー)標準(スタンダード)1815、という意味ですが、1815とはエイダの誕生年です。


適当につけた番号ではなく、軍の規格として使われる「通し番号」が、この数字になるようにタイミングを見計らって付けたようです。

そして、この言語が正式に「承認」されたのは、1980年の 12月10日、エイダの誕生日でした。


軍事用なので、とにかく「バグが出ないプログラムを書く」ために工夫が凝らされています。


プログラムの作りやすさよりも読みやすさを優先する、「名前空間」を導入し変数名が衝突しないようにする、「例外」処理のための機構を作る、など、当時としては最先端の言語でした。


その思想は、その後 C++ や Java など、多くの言語に取り入れられています。




▲目次へ ⇒この記事のURL

同じテーマの日記(最近の一覧)

歯車

今日は何の日

関連ページ

エイダ・ラブレイス 命日(1852)【日記 15/11/27】

別年同日の日記

02年 昨日は雪でした

13年 たき火

17年 風邪ひき

18年 辞職を切り出す


申し訳ありませんが、現在意見投稿をできない状態にしています

ロバート・ノイス 誕生日(1927)  2014-12-12 11:50:35  コンピュータ 今日は何の日

▲目次へ ⇒この記事のURL

今日はロバート・ノイスの誕生日(1927)。



アラン・シュガートの命日でもあります(2006)。

シュガートは、ハードディスクの開発者であり、今のハードディスクや、ハードディスクと同じインターフェイスを使用する SSD に影響を残しています。


シュガートについては誕生日の時に詳しく書いたので、今日はノイスの方を書きましょう。



ロバート・ノイスは…SSD はもちろん、現在のパソコンすべてに影響を与えています。


彼は集積回路(IC)を発明し、世界で初めての集積回路製造会社であるフェアチャイルド・セミコンダクター社を創業し、さらにはそこを飛び出してインテル社を設立し、世界初の CPU である 4004 の開発を監督したのです。


また、その影響力の強さから「シリコンバレーの市長」と呼ばれていました。

(注:シリコンバレーは地域を意味する俗称で「市」ではない。そのため市長は存在しない)


スティーブ・ジョブズは、ノイスを尊敬しており、彼を目標としていました。



#ノイスは「集積回路」の生産に関する特許を取っていますが、ジャック・キルビーが6か月早く、別の方法について集積回路の特許を出願していました。

 それぞれの方法は違うため、現在は二人が集積回路の発明者とされています。




元々、ノイスはシリコンバレーにある、ショックレー研究所の一員でした。


ショックレーは、トランジスタを発明し、ノーベル賞を受賞した発明家・物理学者です。

ただ、彼は「天才」ではあるのですが、人を気遣える性格ではありませんでした。

彼の名前を関した研究所があるのも、彼が組織の中で他の人となじむことができず、飛び出して独立したためです。


そして、それは研究所の所長になっても一緒でした。

すぐに部下を疑い、非能をなじり、すべてを自分の支配下に置こうとするのです。


ある時、彼はシリコン基板上に半導体を生成する技術…今でいう集積回路の研究を、上手くいかないから打ち切ることに決定します。


しかし、研究中の部下は、あと少しでこの技術が完成しそうだったことを知っていました。

そして、この「打ち切り」に反発して研究所を辞めるのです。


この時に飛び出したのが8人。「8人の反逆者」と呼ばれています。

ノイスはこのうちの一人でした。




ノイスは仲間と共に、フェアチャイルド・カメラ社の社長、シャーマン・フェアチャイルドに面会し、出資を頼みました。

フェアチャイルドはノイスのプレゼンテーションにほれ込み、フェアチャイルド・セミコンダクターを設立します(1957)。


そして、フェアチャイルド・セミコンダクターは、世界で最初の IC の製造に成功します。


ノイスらは「技術者として」会社を成長させたいと考えていました。

じっくりと研究を行い、革新的な新技術を作り出したかったのです。


しかし、フェアチャイルドは「出資者として」利益を追求したいと考えていました。

ある程度の研究は必要ですが、目標と締切が必要でした。

驚くような新技術よりも、すぐに金になる技術の方が重要でした。



このため、会社の運営方針について意見が対立。

ノイスは、また会社を飛び出し、インテル社を設立します(1968)。




インテルは、半導体メモリーを作る会社でした。


当時はまだメモリと言えばコア・メモリが主流。

そもそも、コンピューターが「非常に高価な機械」です。


この頃、「小さいし安価」で人気のあったコンピューター、PDP-8 シリーズはトランジスタで作られています(1965)。

しかし、IC が安くなると、IC を組み合わせて作られるようになります。


当時の IC は、主によく使う「論理回路」を集積したものだけでした。

メモリは、まだコアメモリが使われていました。


インテルはここに目を付けました。

論理部分が IC に置き変えられていく中で、メモリも IC で提供すれば、絶対に買ってもらえます。


…という目算で、会社設立後に研究を開始しています。

会社が出来たからすぐに製品出荷を、とはいきません。




会社設立間もない、1969年の6月に、日本のビジコン社…インテル側からすれば「聞いたこともない会社」から、技術者が商談にやってきます。


日本の技術者は英語が非常に下手で要領を得ないものでしたが、つまりは電卓用の IC を作って欲しい、とのことのようです。


インテルはまだ最初の製品となる IC を開発中でしたが、すでに生産設備は整っていました。

(倒産した IC 生産工場を、設備付きのままで借りていました)


主力商品の生産が始まるまで、生産設備を貸すことに問題はありません。インテルは生産を快諾しました。


…しかし、「生産担当」は、コミュニケーションがうまくいかなかったための勘違いでした。



紆余曲折ありましたが、これで生み出されたのが、世界初の CPU である 4004 でした。

「ロジック回路ではなく、メモリ回路を作る」という目標で設立されたインテル社は、当時もっとも複雑なロジック回路を生み出してしまったのです。



RAM の生産を予定していたのに、非常に複雑なロジック回路を作ることになった。

この予定外の事態に、当時社長だったロバート・ノイスは、直接プロジェクト監督を行っています。




4004を作ったビジコン側の技術者…嶋正利さんは、著書「わが青春の4004」の中で、インテル社の思い出を語っています。


インテルは、社員が楽しんで仕事が出来るように気遣っている会社でした。


恐らくは、ノイスの理想…ショックレー研究所や、フェアチャイルド社での社員の扱いへの反発があったのでしょう。

インテルでは、仕事上の「上司や部下」の関係はあっても、人間としては対等である、という考えでした。



社員みんなでピクニックに行ったとき、ゴードン・ムーア(当時副社長)が肉を焼いてみんなに振る舞っていた…という写真が、嶋さんの書籍の中に載っています。

また、ロバート・ノイスが嶋さんに車を貸してくれたので、その車(当時の日本人からすれば、乗るだけで緊張するような高級車!)の前で記念撮影している写真もあります。


#ゴードン・ムーアは、ショックレー研究所時代からノイスと行動を共にしてきた人。

 「半導体は 18か月ごとに性能が倍になる」という、ムーアの法則の提唱者としても有名。

 ただし、実際には彼はそのように言ってはいない。




シリコンバレーは、元々ヒューレット・パッカード社が創立したこときっかけに作られた…とされていることが多いです。


しかし、実際にはヒューレット・パッカード社が高性能な測定器を作っていたため、ショックレーが近くに研究所を構え、その近くにフェアチャイルド、インテルなど、大きな集積回路製造会社が次々と創設されたことに始まっています。


#だから「シリコン」なのです。

 ヒューレットパッカードやショックレー研は、半導体を使用してはいましたが、「シリコン基板」ではありませんでした。


つまり、シリコンバレーが形作られる過程で、ノイスの影響は非常に強いのです。

そしてインテル以降は、「従業員を大切にする」ことが、シリコンバレーの多くの企業の社風となりました。



ロバート・ノイスは、集積回路を発明し、フェアチャイルド社・インテル社を創業し、世界初の CPU 開発の監督をし、周辺一帯を世界的な最先端企業の集まる地にしただけでなく、「人間らしく働ける」会社が当たり前である地域にした…


これが、彼が「シリコンバレーの市長」と呼ばれる理由であり、ジョブズが起業家として目標にしていた理由でもあります。



▲目次へ ⇒この記事のURL

同じテーマの日記(最近の一覧)

今日は何の日

関連ページ

ロバート・ノイス命日(1990)、ジョン・エッカート命日(1995)【日記 15/06/03】

ジェイ・フォレスター 誕生日(1918)【日記 15/07/14】

ROM と RAM【日記 16/05/24】

ジェイ・フォレスター 誕生日(1918)【日記 15/07/14】

ウイリアム・ショックレー 誕生日(1910)【日記 17/02/13】

別年同日の日記

01年 12/11

02年 粗大ゴミ

11年 カレンダー

12年 nexus 7 と US キーボード

17年 IP電話


申し訳ありませんが、現在意見投稿をできない状態にしています

コンラッド・ツーゼ 命日(1995)  2014-12-18 23:05:13  コンピュータ 歯車 今日は何の日

▲目次へ ⇒この記事のURL

今日は、コンラッド・ツーゼの命日(1995)。


ツーゼについては、誕生日に書いていますので、そちらを参照してください。


簡単にまとめれば、ENIAC 以前に、独自にプログラム可能な計算機を作成した人です。



第2次世界大戦は、枢軸国、イギリス帝国、連合国の三つ巴の戦いでした。

始めて本格的に無線による連絡が使われた戦いであり、暗号が重要となった戦いでもあり、傍受した相手の無線を解読するための情報戦が重要となった戦いでもあります。


そのため、各国で「計算機」が発達します。

戦後は連合国だったアメリカと、イギリスが競う形で「電子計算機」が発達しますが、ツーゼは枢軸国であったドイツ人だったため、彼のコンピューターはあまり後の世に影響を与えていません。



▲目次へ ⇒この記事のURL

同じテーマの日記(最近の一覧)

歯車

今日は何の日

別年同日の日記

09年 名機の条件

12年 ふたござ流星群

15年 CentOS5+Xen3 から CentOS6+Xen4 への引っ越し

17年 P10 plus に乗り換え

17年 ピューロランドのクリスマス

18年 ハムスター購入


申し訳ありませんが、現在意見投稿をできない状態にしています

Scratch 2.0  2014-12-22 11:52:35  コンピュータ 家族

▲目次へ ⇒この記事のURL

きっかけは妻だった。

フラクタル構造にちょっと興味があるのだけど、あまり詳しくないからいい本ないかね、と相談された。


僕はフラクタルにはそれなりに興味があってかじった程度の知識はあるけど、体系だった知識は無い。

これは良い機会なので、いろいろ調べてみる。


フラクタルって何だろう―新しい科学が自然を見る目を変えた


1988 年の出版なので、すでに古本でしか手に入らないのだけど、この本が良さそうだ。

購入してみる。


…届いた本は、まさに疑問に答える良書だった。

著者はマンデルブロの元で学んだ、日本のフラクタル研究の第1人者で、その人が「誰にでもわかるように、平易に」フラクタルを解説したもの。


図版も多く、巻頭にはカラーページもある。




さて、妻に渡す前に届いた本をざっと読んでいたら、子供が表紙の絵やカラーページに興味を持った。


実は、少し前に子供と話をしていて「フラクタル構造」について雑多な話をしたことはある。

良い機会なので、図版を見せながら、以前話したことの再確認をする。


特に「シェルピンスキ―のギャスケット」が長女(7歳)のツボだったようで、お絵かきし始めた。

最初はうまく描けなかったが、「三角形の辺の中心を結ぶ」ことをコツとして教えたら、6段階くらいまで描いていた。

6段も描くと、ちゃんとフラクタルに見える。


面白がって別の紙にも描いて量産しながら「描くの大変~」とか笑ってる。

じゃぁ、ここはパソコンで描けるのを見せるところか。




子供がお絵かきして楽しんだのが水曜日の話で、木曜日に「パソコンで見せるなら適切な言語は何か」と調査した。

タートルグラフィックが使いたいが、案外気軽な言語が無い。


…とおもったら、Scratch がタートルグラフィックを扱えた。

ずっと以前に Scratch でゲーム作ったりして見たけど、タートル扱えるのなんて忘れてた。


(もう一つ忘れていた理由があるのだけど、これは後で解説する)



昼の間に、コッホ雪片を描くプログラムを自作してみる。

うん。簡単に実演できそうだ。


夜、子供が風呂に入っている間に準備をして、風呂上がりの子供にコッホ雪片を描く過程を実演。


まず、「猫」に命令する形で、三角形を描くプログラムを作る。

次に、長さを与えると、その長さの「1段階のコッホ曲線」を描くサブルーチンを作る。


三角形の「直線」部分を「コッホ曲線」に変えると、六芒星が描かれる。



最後に、コッホ曲線を描くサブルーチンを改造し、その内部で使っている「直線」の定義を、「コッホ曲線」に置き変える。

すると、コッホ曲線は1段階ではなく、無限に細かくなり、「三角形」が「コッホ雪片」に変わる。


#実際には、直線の定義を変えるだけでなく、「ある程度短い線なら実際に描いてしまう」という条件分岐も必要。




非常に簡単なプログラムで、美しい図形が描き出されるのは面白かったようだ。


もっといろいろ描いて! というので、とりあえず猫がランダムウォークしながら、虹色の線を描くプログラムを作った。


猫以外出せないの? というから、新たなキャラクターの絵を選ばせ(長女がスケート靴を選んだ)、同じようにランダムウォークさせる。


次女(5歳)も「絵を選びたかった」と拗ねるので、さらに選ばせると、プレゼントの箱にした。

ランダムウォークではつまらないので、スケート靴がぶつかったら音を出すプログラムを仕込む。


音のライブラリから音を選ぶと、「ヒヒーン」という馬のいななきが選ばれた。

これで、スケート靴がプレゼントにぶつかるたびに「ヒヒーン」となくようになった。

ついでに、プレゼントの箱から「ひひーん」と吹き出しが出るようにした。


猫がぶつかった時も何かしたい、というので、ジングルベルが流れ出すことになった。

この際、プレゼントは「おめでとう」と喋る。


そして、猫とスケート靴がぶつかったときは、猫が1秒間巨大化することになった。


なにがなんだかわからないカオスな世界。

しかし、子供たちはゲラゲラ笑いながらこの作成過程を楽しんだ。


いつも寝る時間は8時半なのに、10時になっていた。

「今日はおしまい。明日も学校あるから早く寝ないと」と終了。


子供たちが寝た後、「小学生からはじめるわくわくプログラミング」を Amazon に注文。


この様子だと、長男(10歳)にはそろそろプログラムを教えても楽しいだろう。




翌日金曜日は特に何もなく、その次の土曜日。


いじっていて気になる機能があったので、ちょっと自分の方で実験してみる。


「クローン」という機能ブロックがあったのが気になっていた。

これはもしや、インスタンスを作る機能では?


…まさにその通りだった。


Scratch は、オブジェクト指向に作られているのだけど、以前に 1.4 を使ったときはインスタンスが作れなかった。


厳密に言えば、作ったオブジェクトを「コピー」して増やすことはできる。

ただし、それはプログラム作成時点で手動でコピーするのであり、プログラム内でインスタンス生成することはできなかった。


また、コピーしたプログラムは新たな別プログラムになるので、ゲームを作る際に「20匹の敵が出るようにする」ために20のコピーを作ると、同じ内容のプログラムが20個に増えることになる。


その後プログラムの改造をすると、「少しづつ違うプログラム」が出来てしまう。

そのため、実行前に20個のコピーを一旦削除し、再び20個のコピーを作り、それから実行…と余計な手間が増える。



クローン機能はこの手間を無くすもので、非常に強力だ。

早速小さなゲームを作ってみる。


このゲームに子供たちが反応した。

お絵かきが出来るんだと思っていたら、ゲームも作れる!



#この機能は、強力だけど難しい概念でもあります。

 オブジェクト指向に作りながらインスタンス生成が無かった、というのは、判りにくい概念を避けるために「あえて」入れなかった、ということでしょう。




長女が、動かす絵は選ぶだけで自分で描けないの? と聞いてきた。

描けるよ、と教えると、ピクミンを描きたいという。


(うちの子は結構ピクミンが好き。ゲームが、というよりは、あの世界観が好き)


Scratch では、お絵かきのための簡単なツールもついている。

ビットマップとベクターの両形式で描けるが、ここは子供にわかりやすくビットマップで描かせてみる。


あえて何もヒントを出さずに筆だけで描かせたら、最初は「うまく描けない」と言っていたのが、「筆を太くして円を描く」というテクニックを見つけ出した。

(筆を太くすると、「点」が大きさを持った円になる)


これで、雪だるまのように頭と体を描き、そこに小さめの黒丸で目を入れる。


…手足を描く段階で「うまくまっすぐ描けない」とまた言い出したので、助け舟を出す。

実は、直線を描くための機能がある、ということと、 Undo 機能が存在することを教えた。


これでずっと絵が描きやすくなった。やがて赤ピクミン完成。


青と黄色も描きたい、というので、赤をコピーして、ペイントバケツで色を変えるテクニックを教える。

後はキャラごとの顔の違いをちょっと変更して、三色のピクミンが完成した。




さて、これをどうする?

長女にはまだプログラムは難しい。


ピクミンだから 100匹動かしたい! という要望。

早速、クローンを使う時が来た。


赤ピクミンをクローンして100匹に増やす。


オリマーの後ろにぞろぞろ歩くようにしたい、と言われる。


マウスカーソルの方に「向かせる」ことは簡単なので、マウスカーソルに向かって歩くようにする。

ところが、これだとやがて皆が重なり合い、ぞろぞろ感が出ない。


各ピクミンごとの「足の速さ」パラメータをランダムに決め、バラつきを演出する。

ところが、これでもまとまりすぎてぞろぞろ感が出ない。


マウスカーソルに追随しすぎるのだ。「マウスカーソルに向く」タイミングを、ランダムで 1/5 にしてみた。

平均すれば5歩歩くたびに方向を変えるわけだ。


これでやっと「ぞろぞろ」感が出た。


ついでに、クローン時にランダムに赤・青・黄色を切り替えるようにもした。


(3種類は「コスチューム」の違い…同じプログラムで動くが、見た目だけの違いとなっていて、クローン時にランダムに切り替える)




ぞろぞろとピクミンを連れて歩けるようになったら「敵を置いて攻撃したい」と言われた。


画像ライブラリにはカエルの絵があった。

じゃぁ、コイツがマロガエルってことで。(ピクミンには、そういう名前の敵キャラがいる)


マロガエルを置き、ピクミンに触れたら「体力」が減少するようにする。


…マロガエル側でチェックしたら、ピクミンが1人触れていても、100人触れていても同じ速度で体力が減少した。

これはつまらないので、ピクミン側でチェックするように変更。


これで、集団攻撃するとあっという間に倒せるようになった。


マロガエルは攻撃されるとゲコゲコと啼き、倒されると断末魔を上げて消える。


「敵が止まってたらつまらない」と言われたので、ランダムウォークも追加した。

逃げ回るカエルを追いかけるゲーム。


これでも「攻撃してこないと緊張感が無い」と言われたので、舌を長く伸ばしたカエルの絵を追加。

スペースキーを押すと、1秒間の間舌を伸ばすようにした。


この舌にピクミンが当たると、ピクミンは消えてしまう。


…意図せず、謎のゲームが出来上がった。

スペースキーをタイミングよく押して、ピクミンを食べつくすカエルと、全滅前にカエルを倒すピクミンの戦い。



ここまで完成した時点で、僕は関与するのを辞めた。

作る過程を全部隣で見ていた長男が、ある程度理解している。


ピクミンの強さを定めるパラメータ位置と、カエルの強さを定めるパラメータ位置を教え、好きなように調整して「ゲーム」を面白くしてごらん、と任せてみる。




長男に任せたのは、そろそろ昼ご飯作らないとな…と思ったからだったのだけど、その時丁度郵便屋さんが来た。


一昨日ポチった Scratch の本が届いた。

中身をざっと確認してから、長男に見せてみる。


長男もざっと中身を確認してから…あまり興味を示さず、パソコンに戻る。

というのも、すでに本で紹介している学習レベルを超えてしまっていたから!


本に書いてあるのは、いくつかのサンプル程度のレベルを超えないプログラムを作るまでの過程で、簡単なゲームも含まれていた。


しかし、すでに簡単なゲームのレベルを超えたものを作りはじめ、長男はゲームバランスをどうやったらとれるか考え始めている。

プログラムの学習はじめてから、合計で6時間程度しかたっていないのに!



後で長男がパソコンに向かえない時間(大人気になってしまい、長男・長女・次女が1時間交代で使うようになった)に、Scratch 本を眺めたりはしている。

でも、基本的に知識を再学習し、体系づけているだけで「新発見」することは何もないようだ。




さて、ここで Scratch 本を僕も読み、Scratch にタートルグラフィックがある、ということを忘れていた理由がわかった。


以前使った 1.4 では、サブルーチン定義ができなかったのだ。

僕がタートルグラフィックを使いたい理由は、「再帰」による描画が簡単にできるからだ。


しかし、Scratch 1.4 ではサブルーチン定義ができず、再帰も行えなかった。


「ローカル変数を持った、再帰可能な関数」である必要はない。

僕は大学1年の時まで BASIC (と機械語)しか使えなかったが、三角関数と LINE でタートルグラフィック相当の描画を行えるようにしたうえで、コッホ曲線とかを描いていた。


再帰可能なC言語のような関数であれば描くのはより楽だが、そうでなくても配列が使えれば自前でスタックを組んでローカル変数を確保できる。


しかし、そもそも「サブルーチン」が定義できない 1.4 では、フラクタルを描く方法はなかった。

これが僕にとって「タートルグラフィックがあっても魅力を感じなかった」理由で、そのために存在自体を覚えていなかったのだった。


そして、2.0 ではいきなりコッホ曲線を描いていたように、強力なサブルーチン定義がある。



以前に、1.4 を使ったときに書いた日記では、Scratch は初心者向けには良いが、将来の保証が何もない、と書いた。

すぐに限界にぶつかるし、別の言語への乗り換え易さも考慮されていなかったためだ。


しかし、先に書いた「インスタンス生成」と、「サブルーチン定義」の2つが追加されたことで、Scratch に対する不満はかなり解消されたと思う。


別の言語への乗り換えは、相変わらず考慮されていない。しかし、「乗り換えなくてはならない」と思うほどに言語の壁に突き当たるのは、かなり熟練してからだろう。



多くの子供は、そこまで熟練しないだろうし、する必要もない。

Scratch は大人の使用に耐えるほどの機能を持っていて、サンデープログラマならこれで十分。


サンデープログラマの枠に収まらないレベルになったら乗り換えるべきだけど、そのレベルに行きつける人なら乗り換えは難しくない、むしろ楽しいチャレンジだろう。


#あえて難を言えば、配列の機能が弱い。

 一次元配列は持てるし、その操作機能は十分なのだけど、2次元配列にはできない。

 もっとも、1次元を2次元に拡張することは「不可能ではない」ので、十分な知識があれば乗り越えられる。

 (でも、乗り越えられる技量があるなら、別の言語に乗り換えたほうが良いかも)




さて、長女の絵に始まった「ピクミン」プログラムは、長男が大きく改造を開始したことで、2つのプロジェクトにフォークした。


長男は、ランダムウォークしかできないカエルに不満を持ち、キー操作で様々な「技」を出せるように改造した。

代わりに、ピクミンはランダムウォークとなり、対戦ゲームではなくなった。


元々、ピクミンもカエルも、横から見た絵だった。

だから、カエルはほおっておくと下に落ちる。ピクミンはランダムウォークだが、基本的に下方向に集まっており、黄色だけが高くジャンプできる。

(ゲームでも黄色はジャンプ力が高い)


下キーを押すと、カエルは向いている方向に舌を出し、同時に少しその方向に進む。


上を押すと「昇竜拳」で、カエルが舌を出して左右に激しく向きを変えながら一番上まで上昇する。

(その後落ちてくる)

左右キーは、舌を出しながら押された向きに画面端まで一気に進む。


下キーの「舌を出すだけ」と言うのがあまりにも地味だが、この技は連続して出せる。

しかし、それ以外の技は、出した後に長い硬直時間があり、連続して出せない。


「強い技にはデメリットもある」という、バランスを考慮したものになっている。


土曜日のプログラムはここまで。




日曜日。

長男はさらに大改造を試みる。


紫ピクミンと白ピクミンを追加し、カエルの技に「プレス」を追加した。

昇竜拳で空中に上がった後、下キーを押すとカエルが一気に落ち、その間に当たったピクミンを「プレス」で倒せる。

(ちなみに、下にいるときの下キーは、今まで通り舌を出す)


白ピクミンには毒があるので、プレスで倒さないといけない。間違えて食べると、カエルの体力が大きく削られる。


しかし、紫ピクミンにぶつかると、カエルはしばらく操作不能となる。

画面内を大きく移動する「昇竜拳&プレス」は、紫にぶつかる確率を上げてしまうので、使いどころを考えなくてはならない。



長男から構想を聞かされた時に、これはまだ長男の手に余るのではないかな、と思って「まだ難しいかもしれないけど、頑張ってごらん」と言っておいた。


実際、思ったより難しかったようで、時々弱音を吐きながら作っていた。

しかし、日曜日の間に大体完成。


時々バグが出て、上手く動かないと言って自分でじっくりとロジックを考え「あー、ここが悪かった」と修正したりしている。

中には、どうしても原因がわからずに「お父さんわかる?」と聞いてくる。


たとえば、ピクミンの「残り数」を表示しているだが、これをピクミンの処理ルーチン内でこなしていた。

すると、最後の一匹を倒した瞬間に「ピクミン処理ルーチン」は全て停止してしまい、「残り1匹」の表示のままになってしまう。


最後の1匹を倒したとき「以外」は正常に動いているので、何が悪いのかなかなか気づきにくい。

いわゆる「端の処理」というやつで、経験則上もっともバグの出やすい部分で、僕は症状を聞いただけで原因が推察できた。


でも、経験が浅いとどこが悪いのかわかりにくい。


しかし、逆に言えば、経験の必要な個所以外は、自分で工夫して「やりたいこと」を実現していってしまう。

まさか、たった2日でこのレベルまでプログラムが組めるようになるとは思わなかった。




ちなみに、妻もフラクタルの描き方とかを勉強してます。


こちらは、いきなり「再帰処理」を学ぼうとしているわけで、ちょっと混乱気味。

でも、描きたかった画像を大体作るプログラムは完成していて、残すはパラメーター調整のみ。


妻はちょっと Javascript と PHP を使った経験はあるけど、再帰処理するようなプログラムは初体験。

上達は十分速いと感じる。


妻も長男も、上達が早いように感じるのは、それだけ Scratch が使いやすいからだ。



長女の方の「ピクミン」プロジェクトはまた別の方向に進んでいる。

「ペレット」にピクミンが触れると少し「オニヨン」の方向に動き、オニヨンにペレットを運び込むとピクミンが10匹増える。

(ペレットはまたランダムな個所に現れる)


戦いとはまた別の、「協力して物を運ぶピクミン」という方向に伸びているのが面白い。



次女もピクミンの絵を描きたいというのでさらに別プロジェクト。

こちらは、たくさんのピクミンが「ひっこぬかれて あなただけに ついていく」などと歌いながらお散歩している。


同じ題材で作り始めても、これだけの多様性が出る。

子供の考えることって面白い。




Scratch の「初心者に対する」使いやすさはかなり良くできていて、誰でもプログラムを始められると思う。

(これは、誰にとっても使いやすい、という意味ではない。あくまでも初心者にとってのハードルの低さの話)


プログラムをやってみたい人に薦められる言語が無い、と20年くらい思っていたのだけど、いまなら間違いなく Scratch がお勧め。



最初に何をやっていいかわからない、という人は、簡単なお絵かきから始めるのがお勧めかな。



「ペンを下ろす」を指示してから「~歩動かす」をすると、線を描くことができます。

~歩、の数字を大きくすれば長い線になります。


そして、「~度回す」を使うと、進む方向が変えられる。

ブロックをダブルクリックすればそのコマンドを実行できるし、隣のエリアに持っていけばブロックを繋げて手順を示せる。


繋がった手順ブロックをダブルクリックすれば、まとめて実行されます。



まずは、三角形描いてみましょう。

それができたら、次は星型。(5つ腕がある奴ね)


1個星がかけたら、ランダムなサイズでランダムな位置に描くことにチャレンジしてみましょう。

このチャレンジは、結構難しい。教師無しでやっていると、投げ出したくなるくらいの難問かも。


(適切な教師がいれば簡単に作れると思うのですが)


さらに、星、三角、四角など、いろんな図形をランダムにちりばめてみましょう。


ここまで自力で作れたらたいしたもの。

もっといろんな絵を描いてみたり、線は引かないでも「キャラクターを自由に動かす」ことでアニメを作ってみたり、ゲームにしてみたり…

多分、思いついたことを手当たり次第にやっていれば上達できるだろう。



プログラムに興味のある方は、是非どうぞ。



▲目次へ ⇒この記事のURL

同じテーマの日記(最近の一覧)

家族

関連ページ

妻の実家へ【日記 15/01/05】

忘れさられた言語LOGO

BASIC言語 初稼働日(1964)【日記 15/05/01】

ゲーム会社の仕事【日記 17/02/08】

7 Billion Humans【日記 18/11/09】

別年同日の日記

04年 冒険百連発?

11年 リモコン当たった

16年 ここらでコラムス


申し訳ありませんが、現在意見投稿をできない状態にしています

リーナス・トーバルズの誕生日(1969)  2014-12-28 09:56:47  コンピュータ 今日は何の日

▲目次へ ⇒この記事のURL

今日はリーナス・トーバルズ氏の誕生日(1969)。


Linux を作った人です。


Linux なんて使ってない、という人でも、Android 端末の中身が Linux だったり、ネットワークハードディスクは大抵 Linux で動かされていたり、WiFi ルータの中身が Linux だったりすることが多い、と書けば、どこかでお世話になっているのではないかな。


それでも使ってない、という人。

今あなたが読んでいるこの日記は、Linux サーバーから配信されています。

ネットの半数くらいのサーバーは Linux 。影響なしに生活している人なんていない、と断言できます。



そんな彼ですから、あまりに有名すぎて、僕が生半可な知識で何か語って間違っていたら、各方面からお叱りがきそう。


エピソードはちょっと探せばたくさん見つかりますから、概要だけをかいつまんで書きましょう。




その昔、IBM-PC 互換機の OS といえば MS-DOS 、と相場が決まっていました。


IBM-PC 互換でなくても、Intel 系の CPU であれば大抵 MS-DOS。

PC-9801 も、FM-Towns もそうでした。


MS-DOS は、8086 向けに作成された OS です。

細かな経緯は省きますが、Multics に由来する「ディレクトリ管理」や、「デバイスファイル」などの概念を持つ OS です。

ただし、非常に簡素で低機能でした。


時代は過ぎ、80386 が登場すると、MS-DOS は「非力」となります。80386 の機能を十分に活かせないのです。


たとえば、先に書いた FM-Towns では、全体の管理には MS-DOS を使いつつ、アプリケーションを実行するときは RUN386 という支援ソフトの力を借りていました。

面倒な手順が必要となりますが、こうすることでやっと、80386 の機能を開放することができたのです。


とはいえ、最終的には 8086 で動作する OS に戻らなくてはならいないので、非常に制限の多いものでしたが。




リーナス・トーバルズは、80386 の機能を十分に活用できる OS が欲しい、と考えていました。


8086 用には、Minix と呼ばれる OS がありました。

これは、UNIX を 8086 向けに移植したもので、実用と言うよりは「OS 構造の教育用」でした。


しかし、リーナスは Minix で OS の構造を勉強し、80386 向けに1から Minix に似た OS を作ります。


また、この際に Minixが 8086 の制約で「本物の UNIX」とは変えてあった部分も変更し、80386 の機能を活かして「本物の UNIX」とします。


こうして生まれたのが Linux でした。




最初は Minix の「改良」として作られた Linux ですが、Minix とは全く開発方針の違うものでした。


Minix は OS 構造の教育用ですから、実用性よりもわかりやすさと、最新テクニックを使用することを心がけられていました。


しかし、Linux は 80386 の機能を活かせる OS としての「実用品」でした。

わかりやすさよりも高速性、最新テクニックよりも信頼のおける技術を使うことが重要でした。


このため、最初は Minix のコミュニティで発表された Linux は、すぐに Minix コミュニティを離れて独自のコミュニティを作り上げます。




Linux は、 OS の「中心部分」しかありませんでした。


OS というのは、CPU やメモリを管理するための「中心部分」と、その上で人間が便利に使うための最低限のアプリケーションなどのセットです。


リーナスは、当初アプリケーション部分に GNU のプログラムを利用しました。

GNU は、独自の UNIX 環境を構築することを最終目標として活動していた団体で、一通りのアプリケーション群は全て無償で公開されていました。


しかし、GNU が作成すると約束していた OS の「中心部分」は、予定通りには開発が進んでいませんでした。


GNU の思惑とは違いましたが、GNUのアプリケーション群に Linux を組み合わせることで、一揃いの UNIX 環境が構築できました。




ところで、UNIX には大きく二つの「流派」があります。


UNIX を開発した AT&T ベル研究所がそのまま拡張を施した、SystemV 系列がその一つ。(以下 SysVと書きます)


教育機関向けに無償公開されていた初期の UNIX を元に、カリフォルニア大学バークレイ校が独自に拡張を施した Berkeley Software Distribution 系列がもう一つです。(以下 BSD と書きます)


初期の UNIX を元に多数の機能を追加した BSD が先にあり、その拡張を本家が真似する形で SysV が作られています。


UNIX が急速に普及したのは、BSD を採用した Sun 社の存在があったためです。

その一方で、Linux が作られたころには「本家」である SysV が標準規格となりつつありました。


GNU アプリケーションは、主に BSD 向けに作られており、細かな「方言」に相当する部分が BSD に準拠していました。

一方で、Linux は SysV に適合するように作られました。


そのままでは、同じ UNIX と言えども、GNU アプリケーションを動かすのには「移植」が必要となります。



でも、リーナスは現実主義者でした。

Linux は SysV をベースとしていますが、BSD の機能も次々と搭載してしまい、BSD のソフトもほぼそのまま動作するようになっています。




このように書くと、Linux が最初から夢の環境だったようです。

しかし実際には、当初の Linux は問題の多いものでした。


個人が趣味で作ったものでしたから、拡張性に乏しい部分が多く、すぐに壁に突き当たったのです。


僕が初めて Linux に触れたのはその頃でした。

FM-Towns に Linux が移植され、国内の会社から「日本語が使える」Linux が販売されていました。


…すみません。正直に言えば、僕はその頃に「Linux に触れた」のは事実ですが、とても使いこなせませんでした。

UNIX に対する知識があまりに不足していて、インストールはしたものの、それをどのように設定し、運用するのが適切かわからなかったのです。


だから、比較的早い時期に Linux に触れていたからエキスパート、というようなことは * まったく * ありません。

ただ、触れてたのは早いんだよ、と自慢してみたかっただけで。



そして、リーナスも最初から素晴らしいものを作り出した偉人、というわけではありません。

上に書いた通り、初期の Linux は多数の問題がありました。


彼一人で Linux を作り出したのではなく、時代が作り上げていったのです。




Linux は普及に従って協力者が増え、次々に機能が追加されていきました。

当初あった壁も、すぐに解消されます。今でも Linux には多数の問題点がありますが、それらもやがて解決されるでしょう。


ただし、協力者はみな「趣味で」やっているだけです。問題点がわかっていても、その作業が「ひたすら面倒で誰もやりたがらない」ような問題の場合、永久に手を付けられない場合もあります。


また、素晴らしい仕組みが作られていても、余りにもエキスパート向けの機能すぎて誰もその素晴らしさに気付かない場合、こちらも協力者が少ないために作業が遅々として進まない問題もあります。


ここら辺が、マイクロソフトが作成する Windows に比べて弱いところです。

Windows は、製品として作られていますので、必要とされる機能であればどんなに面倒な事であってもキッチリ作成されます。


#Windows 8.1 では、95 のソフトも動かせる「互換モード」があります。

 Linux では、すでに 80386 時代のソフトの互換性は切り捨てられています。


#MacOS や Android は企業が作っているけどサポート弱いね…。ここは企業の持つ総合力の問題。

 それがわかっているから、それ以外の「アイディア」部分で差をつけているわけだけど。




すでに、リーナスのプログラム作業はほとんど行われていないようです。


彼の一番重要な仕事は、全体にとって何が大切で、何が不要かを決めること。

たとえば、かなり前に Google は Linux の本体部分に Android のための機能を「追加」しました。


しかし、その後 Google がこれらの機能を一切メンテナンスしようとしないため、彼は「切り捨て」を決定しました。

本体部分は、デスクトップ PC やサーバー、Android まで含め、すべての環境に影響を与えるものです。


しかし、Android 専用の機能を「本体部分」に追加した挙句、その後ほったらかしという態度に怒ったのです。

これらは機種ごとに作ることができる「付属部分」で解決することが妥当で、本体に入れるべきではない、というのが彼の決定でした。


Android は、Linux を利用した機械としてはかなり大きな市場です。

そこに影響が出る大きな決定を、彼の一存で決めてしまうわけです。


しかし、これは Linux の崩壊を防ぐためには必要な決定です。

Android は大きな市場とはいえ、Linux のすべてではありません。

その Android 専用の機能を「その他すべての Linux 」も含めて追加するのは、妥当ではないでしょう。



彼は時々このような重要な決定をするので、Linux 界隈で「優しい終身の独裁者」と呼ばれています。

これが彼の現在の一番重要な仕事です。




Linux は無償で提供される、「オープンソース」の代表のようなソフトですが、リーナス自身がオープンソース信者と言うわけではありません。


その昔、トランスメタと言う会社でソフトを作り、そのソフトを「企業秘密」として公開しなかったこともあります。


…当たり前の行為です。彼はその時は、一社員に過ぎないのですから彼の一存で公開などできません。


しかし、全てがオープンソースであるべきだ、と考えている一派から見ると、Linux を作ったリーナスがソフトを秘密にした、というのは許しがたい裏切り行為に思えたようです。



リーナスをオープンソース界の神、とみる人々がいて、裏切り行為だとみられたのはその反動です。

しかし、彼は決して神などではないし、熱心にオープンソースをやりたいと思っているわけでもなさそうです。



ただ、彼は非常に優れたバランス感覚の持ち主だと思います。


そのバランス感があるから、Linux でも重要な決定を次々に行っていますし、オープンソースにするか否か、という根本部分でも必要に応じて変えられるのです。



▲目次へ ⇒この記事のURL

同じテーマの日記(最近の一覧)

今日は何の日

別年同日の日記

02年 ページレイアウト変更

05年 サンマルク

15年 今年のクリスマス

18年 The House of the Dead 2


申し訳ありませんが、現在意見投稿をできない状態にしています

あけましておめでとうございます  2015-01-01 06:52:48  コンピュータ 家族

▲目次へ ⇒この記事のURL

初日の出より前に書いているから、本当は「あけまして」じゃないのだけど(笑)



最近書いていたように、子供と Scratch 始めました。

で、子供に見せるためにサンプルとして作ったのが上のゲーム。


「おとしだま」です。ダジャレかい (^^;

原型は20年くらい前、ごく初期のこのページで、正月に Java で作って公開していたゲームだったりします。



右上の緑色の旗をクリックするとゲームが始まります。

全部で100個の玉が落ちてきますから、マウスカーソルで「拾って」ください。


黄は 1点。青は 5点。紫は 20点。

合計点は左上の数字です。


100個の玉が落ちると終わりです。特にゲームオーバー表示とかありません。




Scratch は、ソースリストも含めてすべて公開することが、WEB上での「公開」の条件です。

上のプログラム、非常に短いです。


プログラム未経験者でも、興味があったら覗いてみてください



▲目次へ ⇒この記事のURL

同じテーマの日記(最近の一覧)

家族

別年同日の日記

03年 謹賀新年

03年 -70度

05年 A Happy New...

06年 あけましておめでとうございます

13年 あけましておめでとうございます

16年 あけましておめでとうございます

17年 あけましておめでとうございます

18年 あけましておめでとうございます

19年 あけましておめでとうございます


申し訳ありませんが、現在意見投稿をできない状態にしています

スティーブン・ボーンの誕生日(1944)  2015-01-07 09:56:59  コンピュータ 今日は何の日

▲目次へ ⇒この記事のURL

今日はスティーブン・ボーン (Stephen R. Bourne) の誕生日(1944)。


誰それ、という人でも、彼の名前が付けられた Bourne Shell なら知っているはず。

…あれ? ご存じない?



Linux なんかで、コマンドを打ち込むときに使うものが「シェル」です。

/bin/sh と書いた方がわかりやすいかもしれません。


普通は、わざわざ起動しないでも、ログイン時に勝手に起動されます。

人間の入力を受け付けるプログラムが「シェル」なので、シェルが起動しないと、シェルを起動させることもできないからね。


Linux では、実際には Bourne Shell ではなく、Bourne-again Shell (bash)が使われることが普通です。

Bourne Shell が生まれ変わった (Born-again) 物で、互換性を保ったまま非常に高機能になっています。




Bourne Shell の前は、Thompson Shell が使われていたそうです。


「そうです」っていうのは、さすがにその時代は知らないから。

最初の UNIX を作成した、ケン・トンプソンが作ったシェルで、> と < で標準入出力をファイルにリダイレクトでき、| で別のプログラムに渡せる、という構文は、トンプソン・シェルが最初に定めたものです。


でも、トンプソン・シェルは、ユーザー入力を受け付けるためだけの存在で、その操作を「自動化」するようなことは考えられていませんでした。


…いや、いいんですよ。最初はコンピューターを操作するのがシェルの目的だったし、何か操作を自動化したいなら、プログラムを組むのが当たり前だった。


でも、シェルで定型的に操作するコマンドを、自動化したいという要求が高まってきたのです。



1977年に作られた Bourne Shell は、そうした要求を満たすものでした。


シェルで操作する内容をそのままテキストファイルとして書いておけば、そのまま実行できます(バッチ処理)。


また、直前のコマンドの結果により条件分岐したり、ループを作れたり、「変数」を使えたり、通常のメッセージとエラーメッセージを分離出来たり(エラーは標準出力ではなく、エラー出力を使う)、関数を定義出来たり(1984年のバージョンから)…


「操作の自動化」と言うだけではなく、十分なプログラム言語として成長しました。

スクリプト言語の元祖、と言ってもよいでしょう。




ところで、トンプソン・シェルに限界を感じて作られたのは、 Bourne Shell だけではありません。

カリフォルニア大学バークレイ校(BSD の開発元)では、C Shell というものが作られました。


Bourne Shell は ALGOL 風の表記でプログラムを行うのですが、C Shell はその名前の通り、C 風の表記を使います。

当たり前ですが、Bourne Shell との互換性はありません。


C Shell の特徴は、実はスクリプトの組み方よりも、「操作性の良さ」にあります。

コマンドラインで操作する時に便利な機能が多いのです。


過去に実行したコマンドを大量に覚えておき(ヒストリ機能)、すぐに呼び出せる、というのは C Shell が初めて実装した機能でした。

呼び出すだけでなく、正規表現により一部を書き変えて実行、ということもできます。


後に C Shell の高機能版である tc Shell でさらに便利になり、上下のカーソルキーで過去の実行履歴を呼び出し、左右のカーソルで編集できるようになりました。


そして、現在ではこの機能は Bourne-again Shell でも実装されています。

つまり、現在この機能は「C Shell の優位点」ではなくなっています。




しかし、今でも C Shell の方が優れている部分もあります。


たとえば、大量にファイルが存在していて、そのファイル名を複雑な規則で書き変えたい、という事例があったとしましょう。


C Shell でも Bourne Shell でも、コマンドラインから「すべてのファイルに繰り返し適用」という指示を出すことはできます。


しかし、Bourne Shell (および bash)では、「複雑な規則で書き変え」を指示する方法はありません。



正規表現「マッチ」は出来ますし、マッチした部分を配列に入れることもできます。

ですから、この配列を使ってさらに条件を判断し、目的を達成することは出来るのですが…

これは、ちょっとしたスクリプトプログラムを組まなくてはなりません。


C Shell なら、当たり前に出来ます。

変数の内容などに対し、「正規表現で置換する」ことができるので、「元のファイル名」を「正規表現で置換したファイル名」に書き変える、という指示が1行で書けるのです。



ただ、C Shell でも、その高機能版である tc Shell でも、シェルスクリプトを作る際に「関数」が作れません。

これがかなり致命的で、スクリプトを組むのであれば Bourne Shell の方が組みやすいのです。


僕は会社員時代には tcsh を好んで使っていました。

スクリプトが必要なら、Bourne Shell を使わずに awk や perl で組んでいました。


しかし、Linux って bash が標準であることが多いんですよね…

最初はそれでも tcsh を使っていたのですが、bash ならヒストリ機能なども問題なく使えるし、普段の操作は bash でやるようになりました。


スクリプトなども、他人に渡したりする必要があるものは bash で作ります。

そうすれば、ほぼどこでも動くことが保障されますから。



ただ、今でも先に書いたような「大量のファイル名置換」などが必要な際には、tcsh を起動します。

適材適所で使い分けている。




最後の方は完全にスティーブン・ボーンから話がそれていますが、あらゆるスクリプト言語の元祖であり、今でも UNIX 操作の基本である Bourne Shell を作った、という功績は大きいかと思います。


ちなみに、その後のボーンは、シリコングラフィックスやDEC、SUN、シスコシステムズなど、有名企業で管理職として働いていて、現在も存命です。



当日中に追記

もっと詳しく知りたい人は、IBM の公開している記事Linux におけるシェルの進化をどうぞ。


▲目次へ ⇒この記事のURL

同じテーマの日記(最近の一覧)

今日は何の日

別年同日の日記

03年 続々・C700レポート

05年 Quintuple header

07年 あけましておめでとうございます

09年 FALTIMA030 その後[レビュー・評価]

16年 Serverman SIM LTE 解約

19年 シュガーラッシュ:オンライン


申し訳ありませんが、現在意見投稿をできない状態にしています

ジョン・モークリーの命日(1980)  2015-01-08 11:08:27  コンピュータ 今日は何の日

▲目次へ ⇒この記事のURL

今日はジョン・モークリーの命日(1980)。


ENIAC を作った二人のうち、一人です。主に構想担当。

詳細は誕生日の時の記事を見てね。




命日なので晩年の話を書きましょう。


モークリーは ENIAC で「世界初のコンピューター」を作ったとされ、その後世界初の商用コンピューター UNIVAC-I も作り上げ、コンピューター業界を創世しました。


しかし、晩年になって汚名を着せられ、失意のうちに生涯を閉じることになります。



その汚名とは、「ENIAC はアイディアを盗んだものだ」というもの。

はっきり書いておけば、そんなことはありません。


ENIAC は立派に彼の構想した機械であり、世界初のコンピューター…とは僕は呼んでいないのですが (^^; 後のコンピューター時代の幕開けとなった、デジタル電子計算機でした。



汚名の元となったのは、60年代末から70年代初頭にかけての裁判です。


モークリーはここで、特許論争に巻き込まれることになります。


ENIAC 開発に際し彼は「電子計算機」の非常に多くの特許を取得しました。

これはそのまま彼が後に設立した会社、「モークリー・エッカート社」の物となり、さらには資金繰りの問題から同社が身売りし、レミントン・ランド社、さらに社名変更してスぺリー・ランド社の物となっています。


これは、「スぺリー・ランド社の許可なしにはコンピューターを作れない」ということであり、ここにコンピューター業界の一角であるハネウェル社が噛みついたのです。




当時、コンピューター業界は IBM を筆頭に、8社がひしめき合っていました。


アメリカ政府としても、コンピューター業界を成長させることは、アメリカの経済発展に欠かせない、という意向を示しました。


この中で、裁判は代理戦争の様相を呈していきます。


つまり、ハネウェル社はスぺリー・ランド以外すべてのコンピューター会社と、アメリカ政府を代表する形になったのです。



ハネウェルは、とにかくコンピューターの特許を無効化するため、ありとあらゆる手段を使いました。

その一つが、「ABC マシン」を見つけ出し、掘り起こしたことでした。




ABC マシン…アタナソフ・ベリー・コンピューターは、アタナソフとベリーによって作られた、連立1次方程式を解くための専用計算機です。


ENIAC よりも早く構想されていますが、実際には完成しませんでしたし、物理的な動作個所が多く、とても「電子計算機」と呼べるものではありません。


しかし、とにかく ENIAC よりも前に作られた「電子計算機と呼べそうなもの」を掘り起こすことで、ENIAC が最初ではない、と示すことが目的でした。


最初ではないものには、特許は与えられません。


…実際のところ、これが法廷でどれほどの効果を持ったのかはわかりません。

裁判官は冷静で、これが ENIAC とは全く無関係であることを正しく認識したようです。


結局、裁判は「ENIAC の特許申請手続きに不備があった」ことを理由に、ENIAC の特許を無効として終わります。


アメリカでは、「公表から1年以内に特許書類を提出」が義務付けられています。

モークリーは、ちゃんと ENIAC の完成から1年以内に書類を提出していました。


しかし、ENIAC 開発中に、誘われて「いやいやながら」視察に来たフォン・ノイマンが、この機械のすごさに気付いて勝手に「紹介記事」を書いていました。


これが公表にあたる、と判断され、提出はこの記事から1年以上たった後だった、と結論付けられたのです。



反論しても無駄でした。

特許を無効にしろ、という圧力は政府からもかかっており、裁判官は順法精神と政府圧力の間で板挟みになっていました。


「手続きの不備を見つけて無効化」は、裁判官としても譲れない決着方法だったのです。




特許が無効化されたとはいえ、コンピューターが普及し、可能性が理解されるにつれ「世界最初のコンピューター」という ENIAC の名声はあがります。


そして、名声が上がると「それは私が作ったのだ」と主張する人が、あまりにも多く現われました。


ENIAC は、大きなプロジェクトでした。作成への参加者も数多くいます。

その中には、自分こそがプロジェクトの考案者であり、名声は自分に与えられるべきだ、と主張するものもいました。



フォン・ノイマンもそうした一人です。

彼は先に書いたように、勝手に ENIAC を世に紹介し、そのために特許を無効化してしまい、後続の EDVAC プロジェクトを引っ掻き回して進行を遅らせ、極秘資料を流出させ、そのために「同等品」である EDSAC を先に作られてしまう、という事態を引き起こした張本人です。


しかし、コンピューターはフォン・ノイマンが作った、と信じている人は多く、今のコンピューターは「ノイマン型」と総称されます。



さらに、1970年代末に「最初のコンピューター」のルーツを探る本が発行されます。


その本の中では、先に書いた法廷論争が取り上げられ、ENIAC の特許が無効とされたのは、ABC が先に作られていたからだ、とされていました。


ENIAC の特許が無効化された、というだけでもモークリーにとっては不幸な事でしたが、この本によって、モークリーは「ABC のアイディアを盗んだ」という汚名を着せられることになります。


反面、ABC は一躍脚光を浴びました。完成しなかったし、それまで全く無名の存在だったのに。


コンピューター時代を切り拓いたのは、明らかに ENIAC であり、モークリーのアイディアでした。


…ABC は「ENIAC 以前に2進法を採用していた」ことがよく言われるのですが、ENIAC は10進法で計算しているのです。


また、ABC は「計算する」ことが目的で、物理的な動作個所が多く、速度は問題視していませんでした。

ENIAC は最初から超高速計算が目的で、そのためのアイディアがふんだんに盛り込まれています。



しかし、多くの人は技術には詳しくなく、たとえ嘘であってもセンセーショナルなニュースが伝えられると、興味本位に「覚えて」しまいます。


そして、多くの人が記憶していることは、やがて「それが事実のように」語られてしまうのです。



モークリーは、死ぬまでノイマンを恨んでいました。

しかし、アタナソフについては恨んではおらず、ただ世間から誤解されていることについて涙を流したそうです。




モークリーは、エッカートというパートナーにも恵まれ、独自のアイディアでコンピューター時代を切り拓きました。


現代の先進国に暮らす多くの人が、コンピューターの存在による恩恵にあずかっているはずです。

彼は、世界中の人が幸せに暮らせる時代を作り出した、と言っても過言ではありません。


しかし、その報酬は「アイディアを盗んだ者」との汚名でした。

彼は汚名の返上を願いながらもかなわず、生涯を閉じたのです。



彼は晩年「あまりにも多くのものが失われた」と語っています。

人々が幸せに暮らせる時代を作り出した発明者としては、あまりにも寂しい晩年でした。



▲目次へ ⇒この記事のURL

同じテーマの日記(最近の一覧)

今日は何の日

別年同日の日記

17年 プログラマーの技術力


申し訳ありませんが、現在意見投稿をできない状態にしています

ロビン・ミルナー誕生日 (1934)  2015-01-13 11:03:28  コンピュータ 今日は何の日

▲目次へ ⇒この記事のURL

今日はロビン・ミルナーの誕生日(1934)


さっき調べるまで、僕はこの人のことを全然知りませんでした。すみません。


というか、この人の業績分野に全然詳しくない。ただ、重要であることはわかります。

そこで、今回は資料首っ引きで、理解できた範囲で解説する形でお伝えします(笑)




彼は 1972年に、LCF (Logic for Computable Functions)という名前の、「自動定理証明」プログラムを作っています。

…まず、定理、って言葉を解説する必要があるでしょうね。


数学では、最初にその数学が成り立つ条件を「仮定」します。

あくまでも仮定ね。違う仮定だってあるかもしれない。


この仮定のことを「公理」と呼びます。


たとえば、「2つの点を結ぶ直線は、1つだけ存在する」というのは一般的な幾何学(ユークリッド幾何学)の公理です。

普通、図形を扱う場合にはユークリッド幾何学が使われますので、この仮定の上にすべてが成り立っています。


言い換えれば、「2つの点を結ぶ直線は1つ」というのは、必ず正しいです。


ただし、世の中には別の幾何学系と言うものもあり、その系では正しいとは言えないかもしれません。

必ず正しいというのは、あくまでも「仮定」に基づいた話ですから。



なんだか冒頭からややこしそうな話になっていますが、こうした「公理」から導かれ、「公理が正しいとするなら」という前提付で「必ず正しい」とされるものを、定理と言います。


「2つの直線が交差した時、向き合う角の角度は同じである」


というのは、ユークリッド幾何学における定理です。


先に書いたように、公理は「ユークリッド幾何学において」という条件付きで、必ず正しいです。

ですから、その公理から導かれる定理もまた、同じ条件では必ず正しいです。




あー、ややこしい数学の話になってきてしまっていますが、後の話は簡単。


公理から導かれる定理、というのは、あくまでも「絶対正しい」もののはずです。


じゃぁ、いくつかの公理を元に必ず推論できるはず。

どの公理をどのように組み合わせればよいのか、ひたすら組み合わせればいつかは正しい組み合わせに辿りつくはずなので、コンピューターにもできるはずです。


これを「やらせてみる」ためのシステムが、「自動定理証明」。

人工知能研究の一環として、今でも、よりシンプルで美しい証明を導けるシステムを目指した開発が行われています。


ロビン・ミルナーの作った LCF は、こうしたシステムのごく初期のものです。




さて、ミルナーは、LCF を作るにあたって、この「ややこしいシステム」を簡素に書けるためのプログラム言語から設計しました。


当時はプログラム言語も黎明期。科学計算向けの FORTRAN 、ビジネス計算向けの COBOL …など、目的別に違う設計の言語があるのが普通でした。


そして、彼は自動定理証明を行うシステムを書くために、「非常に複雑なシステムをすっきりと書ける」言語を設計したのです。


ここで注意すべきは、LCF 自体が「プログラム言語」である、ということです。


コンピューターに何かを行わせるような、いわゆるプログラムを書くわけではありません。

しかし、いくつかの公理と、証明すべき定理を「記述」する必要がある、という点で、LCF はプログラム言語なのです。


プログラム言語のプログラムを書くためのプログラム言語。

なんとも奇妙な関係ですが、ルミナーはこの言語に「メタ言語」という名前を付けました。


メタ、とは、何かの概念の元となる概念を意味する接頭語です。

言語の元となる言語なので、「メタ言語」…英語では Meta-Language です。


この「メタ言語」は、頭文字をとって ML と呼ばれました。



この ML がプログラム言語としてはなかなか使い勝手の良い言語で、多くの人が亜種を作りました。

しかし、あまり亜種が増えるのも困りもの。ML の「標準」を作ろう、という流れが出来上がります。


そして生み出されたのが Standard ML 。SML として知られる言語です。

この SML は「標準仕様」であり、これをもとに多くの実装が作られています。



ただ、ML の亜種がすべて SML に吸収されていったわけではない。

もう一つ、大きな亜種が育ちました。


Caml という ML の亜種があり、それに Object の機能をもたせた OCaml。

結構人気のある言語だそうです。(僕は使ったことないので伝聞調 (^^; )



SML、OCaml 共に、いわゆる「関数型言語」と呼ばれるものです。


関数型と手続型(いわゆる、普通の「プログラム言語」)の何が違うのか、というのは宗教論争になりがちなのであまり踏み込みません (^^;;




晩年には並列プログラミングの研究も行っていたそうで、こちらにも重要な功績をいくつも持っているようです。


LCF の開発、ML の開発、並列プログラミングの研究…が、彼の3大功績のようです。



こんな多くの功績がある人ですから、チューリング賞も受賞していますし、多くの大学を渡り歩き、研究所の所長や、計算機科学科の学科長なども務めています。


…にもかかわらず、博士号を持っていません!


今回、彼のことを調べていて一番驚いたのがこのこと。

研究者として大学などに雇ってもらおうと思えば、博士号を持っていることは最低条件…のはずです。一般的には。いや、日本では。



でも、彼は博士号を持っていないのに多くの大学を渡り歩きましたし、所長や学科長も務めたのです。


博士号を持つということは、指導教官が付いたということでもあり、その指導教官の紹介でより「偉い人」に紹介してもらえることを意味します。


彼は、そんな重要な「パイプ」を持っていないにも関わらず、自分で道を切り拓き続けたのです。


…つまり、それは「優秀な人間がいるのであれば、肩書などにこだわらずに地位を与える」という、本当の意味での実力主義、本当の意味での「人を見る目」を持った社会の存在を意味しています。



これ、日本の社会に一番欠けているものではないかな、と思います。



▲目次へ ⇒この記事のURL

同じテーマの日記(最近の一覧)

今日は何の日

関連ページ

ロビン・ミルナー 命日 (2010)【日記 16/03/20】

別年同日の日記

03年 日記が長いね…

11年 あけましておめでとうございます


申し訳ありませんが、現在意見投稿をできない状態にしています


戻る
トップページへ

-- share --

0000

-- follow --




- Reverse Link -