目次
03日 ジョン・バッカスの誕生日(1924)
07日 ハイキング
08日 NLS伝説のデモの日(1968)
08日 【追悼】ラルフ・ベア氏
10日 エイダ・ラブレイス伯爵夫人の誕生日(1815)
12日 ロバート・ノイス 誕生日(1927)
18日 コンラッド・ツーゼ 命日(1995)
22日 Scratch 2.0
28日 リーナス・トーバルズの誕生日(1969)
29日 クリスマス
今日は、ジョン・バッカスの誕生日(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 を知ったうえでの「よく出来ている」発言だったとすれば、その理由は上記のようなものでした、
最初の言語、ではありますが、過去のプログラムの反省を踏まえ、高いレベルで作り上げられていたのです。
同じテーマの日記(最近の一覧)
関連ページ
ジョン・バッカスの命日(2007)【日記 15/03/17】
ジョン・バッカスの命日(2007)【日記 15/03/17】
別年同日の日記
申し訳ありませんが、現在意見投稿をできない状態にしています。 |
先日妻の誕生日だったので、お祝いに何かするかい? と聞いてみた。
紅葉見に行きたいなー、という答えだったので、近所の山を気軽にハイキングする予定に。
おにぎり3合分握って出かけました。
2年前に近所から港南台まで山の中を歩いている。
これ、「天園ハイキングコース」と名付けられている道なのだけど、途中から入った形になる。
じゃぁ、同じ場所から入って逆方向に歩こう。
コースとしてはすごく短いのだけど。
山に入ったのが10時半くらい。
歩きはじめて、元気ではしゃぎまわっているうちにハイキングコースは終わってしまった。
建長寺の境内に出る。時間はまだ11時半くらい。お昼ご飯を食べるにも速い。
流石にちょっと短すぎたかな、と思うが、せっかくなので建長寺を見学。
実は、近所だけど一度も入ったことない。
「ここどこ?」と子供たちは言っていたが、実は先日オクトーバーフェストに自転車で行ったときに前を通っている。
建長寺をゆっくり見学していたら、1時間くらい経ってしまった。
腹減った、というので建長寺を出たところで、「あー、前自転車で来たとこ」と納得。
と同時に「結構歩いたつもりだったけど、すごく近所だ」とショックを受ける。
建長寺の中でのこと。
小さな石碑が沢山立っている。「金百圓」とか書かれている。
なかなかこういうことを勉強する機会は無い。昔は百円の価値と言うのが非常に大きくて、百円寄付したら石碑を立ててくれるくらいだったのだ、と話をする。
百円がどれくらいの価値か…も聞かれたけど、これは時代によって変わるからわからない。
金五百圓、と刻まれた、非常に大きな石碑があった。
金心講、とも書かれている。講とは志を共にするグループの意味。寄進するために集まってお金を集めたのだろう。
下にメンバーの名前が刻まれているが、○○病院とか、○○楼(多分食べ物屋)とか、個人名ではない。
それだけの大金だった、ということだろう。
裏に回ったら、明治43年、とあった。明治末期だ。
さらに小さな石が添えられてあり、そちらには個人名が刻まれていた。そして、「金参圓」とある。
参円で名前を特に刻んで残すレベルだ。とはいえ、個人で寄進できる額でもあるので、5~6万円と言うところか。
#と思って調べたら、当時の1円は現在の2万円くらいの価値らしい。
5~6万というのはだいたいあっているようだ。
すると、五百圓は1千万円くらいの寄付。その程度寄付すると、立派な石碑が残されたようだ。
建長寺を出てから、源氏山公園を目指す。
この日の朝のラジオで、八幡宮の紅葉はさかりを過ぎたが、源氏山公園は見ごろだと言っていた。
源氏山公園の入り口が化粧坂切通(けわいざかきりとおし)。
そういえば、google now でもしばらく前から「近所の観光スポット」として紅葉が綺麗だとおすすめされていた。
また山道に入ったので、子供ははしゃいで登る。
でも、公園に入ったらごはん、というので頑張っている節もある。
紅葉の綺麗な木の下でお弁当。時間はすでに1時を過ぎていた。
おにぎりと、おかずのウィンナー・きゅうりはあっという間になくなった。
まだ食べたそうなので、非常食に持ってきていたバナナチップスを開ける。
この後どうすんの? と長男が聞いてくる。
鎌倉駅を目指すよ! と言ったら、妻が「次女がもう疲れているし、北鎌倉に抜けて帰ってもいいよ」という。
でも、源氏山公園は、鎌倉と北鎌倉の中間地点。どっちに行っても大して変わらない。
スマホの地図を出して妻に見せると、じゃぁ鎌倉行こうか、となる。
すぐに市街地に出て、車に気を付けながら歩く。
小町通り。
誕生日祝いでもあるので、何かおいしいものでも食べよう、と言っていた。
でも、さっきご飯食べたばかりだし、時間も夕飯には速い。
どんぐり共和国(ジブリグッズショップ)とか、ちょっぺー(有名なおもちゃやさん。オリジナル商品を作るので、ここでしか入手できないプラレールとかある)とか覗きながら歩く。
「石道楽」というお店があった。
入り口の目のつきやすいところに「化石コーナー」と書いてあったので何気なく見ると、安い。
三葉虫のかけらが300円、とかだったりする。
完全な標本でも800円とか。
アンモナイト、直角貝などもやすいし、珪化木も安い。
妻は1年半ほど前に科学館で珪化木標本を買っているが、それよりずっと安いので衝撃を受けていた。
この店、非常に不思議な構成だ。
化石もあれば、鉱物標本もある。パワーストーンとしての「お守り」も売っているし、ちゃんとアクセサリーとしての宝石もある。
結構前に小町通りにパワーストーン屋さんができて、その後人気があるのか徐々に増えているのは気づいていた。
でも、個人的には「パワーストーン」は好きではない。でも、この「石道楽」の扱いは好き。
パワーストーンとしての効用なども書いてあるのだけど、変にオカルト・おまじないに走らず、科学的知識も併記してあったりする。
温度によって色が変わる液晶を使い、体温で色が変わる指輪が売られていた。
5歳の次女が欲しがる。と言っても、一番小さな指輪でもぶかぶかだ。
370円。高くはないが、悩む。
7歳の長女は、「人工テレビ石」が欲しいらしい。200円。
人工だけあって天然モノよりずっと透き通っていて、面白い。こちらは買ってあげてもよいかな。
長男は、ヘマタイト磁石に興味を持っている。
紡錘形の2つの磁石のセットで、投げると空中でくっついて面白い音を出す。
小さいの 300円、大きいの500円。大きいほうが明らかに磁力が強い。
子供が欲しがっているものが特に高くないし、科学的に面白いおもちゃだとも思うので、買ってあげることにする。
テレビ石は、人工と天然のセットを 600円で売っていたので、子供は「200円のでいい」と言っているのにそちらを買う。
天然モノに興味を持つことがあれば、いろいろ話も膨らむだろう。
磁石は大きい方を。こういうのは磁力が強いほうが面白いし、面白がって遊ぶことで発見があるので、200円をケチると良くない、と考えた。
実際、後で遊んでみたら「磁力が強いからこそ」な遊びがいろいろできた。
これに加えて、妻が「アンモナイトを薄く削って磨いたもの」を購入。
穴が開いているので、紐を通せばアクセサリーになる。
妻は時々生物系の科学イベントに行っているので、「人に見せたらウケると思って」という購入動機。
値段忘れたけど、500円程度ではなかったかな。
僕は特に買わず。
あえて買うとしたらシリコンウェハー(そんなものも売っていた!)がウケを狙えそうだったけど、人に見せる機会もないし。
「おやつまだ食べてない」と次女が言うので、どっか喫茶店でも入ろうか…と言っていたが、雨が降り始めた。
源氏山のあたりでは、雲一つない天気だったのにな。
あわてて、豆菓子屋にはいる。「鎌倉まめや」かと思ったら、違う店だった。
まめやが人気あるから、類似店が増えているのだな。
と言いつつ、店内の試食を結構食べ、まめやとは違う方向のラインナップのお菓子を数点買う。
通り雨だったようですぐやんだ。でも、ちょっとあたりが寒くなった。
小町通りを「まめや」の角まで進み、若宮大路に出て、引き返す。
妻のおいわいを兼ねているので妻の食べたいものを探しているのだけど、なかなか決まらない。
結局駅まで戻ったところで、「駅前の回転ずしに入って早めの夕ご飯にしてしまおう」と妻が決断。
時間は5時少し前。
100円均一ではなく、皿によって値段が違う店。でも、適正価格でおいしかった。
次女が「エビ食べたい」と言って、天然クルマエビ一皿360円を取ってしまったりしたけど。
#普通の蒸しエビは180円。次女はまだ天然モノの味の良さとかわからないです…
腹いっぱいになってから次女がまた「おやつ食べてない」と言うので、ジュースも取ってあげたし、最後にわらびもち食べたじゃないか、と言うと「あー、そっか」と納得。
鎌倉駅から電車に乗ったのは、5時半ごろ。
でも、少し疲れたのか次女も長女も「ねむいー」と言ってました。
「今度はもっと山の中歩きたい」という要望が出たので、近いうちにまた港南台まで歩いてみるのも楽しいかも。
同じテーマの日記(最近の一覧)
別年同日の日記
申し訳ありませんが、現在意見投稿をできない状態にしています。 |
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 のデモが後に与えたインパクトは絶大で、まさに「伝説の」と呼ばれるのにふさわしいものだったように思います。
同じテーマの日記(最近の一覧)
関連ページ
別年同日の日記
申し訳ありませんが、現在意見投稿をできない状態にしています。 |
詳細は現時点で明らかになっていませんが、ラルフ・ベア氏がお亡くなりになったそうです。
(追記: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 のゲーム群…特に「スペースウォー」と正しく繋がっている、と確認するのは、ゲームの歴史を俯瞰する上で重要だと思っています。
同じテーマの日記(最近の一覧)
関連ページ
別年同日の日記
申し訳ありませんが、現在意見投稿をできない状態にしています。 |
今日は、エイダ・ラブレイス伯爵夫人の誕生日(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 など、多くの言語に取り入れられています。
同じテーマの日記(最近の一覧)
関連ページ
エイダ・ラブレイス 命日(1852)【日記 15/11/27】
別年同日の日記
申し訳ありませんが、現在意見投稿をできない状態にしています。 |
今日はロバート・ノイスの誕生日(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 開発の監督をし、周辺一帯を世界的な最先端企業の集まる地にしただけでなく、「人間らしく働ける」会社が当たり前である地域にした…
これが、彼が「シリコンバレーの市長」と呼ばれる理由であり、ジョブズが起業家として目標にしていた理由でもあります。
同じテーマの日記(最近の一覧)
関連ページ
ロバート・ノイス命日(1990)、ジョン・エッカート命日(1995)【日記 15/06/03】
ジェイ・フォレスター 誕生日(1918)【日記 15/07/14】
ジェイ・フォレスター 誕生日(1918)【日記 15/07/14】
ウイリアム・ショックレー 誕生日(1910)【日記 17/02/13】
別年同日の日記
22年 Windows 11 の 22H2 アップデートでネットがつながらなくなる
申し訳ありませんが、現在意見投稿をできない状態にしています。 |
今日は、コンラッド・ツーゼの命日(1995)。
ツーゼについては、誕生日に書いていますので、そちらを参照してください。
簡単にまとめれば、ENIAC 以前に、独自にプログラム可能な計算機を作成した人です。
第2次世界大戦は、枢軸国、イギリス帝国、連合国の三つ巴の戦いでした。
始めて本格的に無線による連絡が使われた戦いであり、暗号が重要となった戦いでもあり、傍受した相手の無線を解読するための情報戦が重要となった戦いでもあります。
そのため、各国で「計算機」が発達します。
戦後は連合国だったアメリカと、イギリスが競う形で「電子計算機」が発達しますが、ツーゼは枢軸国であったドイツ人だったため、彼のコンピューターはあまり後の世に影響を与えていません。
同じテーマの日記(最近の一覧)
別年同日の日記
15年 CentOS5+Xen3 から CentOS6+Xen4 への引っ越し
申し訳ありませんが、現在意見投稿をできない状態にしています。 |
きっかけは妻だった。
フラクタル構造にちょっと興味があるのだけど、あまり詳しくないからいい本ないかね、と相談された。
僕はフラクタルにはそれなりに興味があってかじった程度の知識はあるけど、体系だった知識は無い。
これは良い機会なので、いろいろ調べてみる。
「フラクタルって何だろう―新しい科学が自然を見る目を変えた」
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個星がかけたら、ランダムなサイズでランダムな位置に描くことにチャレンジしてみましょう。
このチャレンジは、結構難しい。教師無しでやっていると、投げ出したくなるくらいの難問かも。
(適切な教師がいれば簡単に作れると思うのですが)
さらに、星、三角、四角など、いろんな図形をランダムにちりばめてみましょう。
ここまで自力で作れたらたいしたもの。
もっといろんな絵を描いてみたり、線は引かないでも「キャラクターを自由に動かす」ことでアニメを作ってみたり、ゲームにしてみたり…
多分、思いついたことを手当たり次第にやっていれば上達できるだろう。
プログラムに興味のある方は、是非どうぞ。
同じテーマの日記(最近の一覧)
関連ページ
BASIC言語 初稼働日(1964)【日記 15/05/01】
別年同日の日記
申し訳ありませんが、現在意見投稿をできない状態にしています。 |
今日はリーナス・トーバルズ氏の誕生日(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 でも重要な決定を次々に行っていますし、オープンソースにするか否か、という根本部分でも必要に応じて変えられるのです。
同じテーマの日記(最近の一覧)
別年同日の日記
申し訳ありませんが、現在意見投稿をできない状態にしています。 |
もうずいぶん経ったが、今年のクリスマスのことを書いておこう。
23日(祝)
大掃除。
我が家では、サンタさんのプレゼントは子供部屋にやってくる。
だから、クリスマス前に部屋を片付けておかないと、プレゼントがもらえないかもしれない。
で、23日は大掃除をしながら子供に聞く。
クリスマスの「ごちそう」と「ケーキ」。同じ日だと、お腹いっぱいで食べられない、ということが多い。
2日に分けるとして、どう分ける?
僕としては23日にケーキで24日にご馳走、と考えていた。
それなら、午後に買い物に出てクリスマスの準備を買いつつ、ケーキ屋さんによってケーキを買えばいい。
ケーキは当日中に食べないとおいしくないけど、ご馳走は材料だけだから前日に買ってもいい。
でも、子供は「クリスマスイブ」と「クリスマス」に分けたいと考えたようだ。
3人の意見がまとまった結果、24日にご馳走で25日にケーキだった。一番面倒なパターン。
24日。
次女の保育園の終業式。
本当は冬休み中も預かってほしかったのだが、うっかり申請を期日までに出しそびれてしまったため、終業式で終わり。
朝次女を保育園に送り、その足で西友へ。西友は24時間営業なので朝早くでも開いているし、それなりに安い。
(うちの近所では、大きな市場があってそちらに行った方がすべてが安い。
でも、市場は11時ごろから夕方6時ごろまでしかやっていないため、仕事が忙しいとなかなか行けない)
ローストチキンを作る予定だが、鶏が小さなものしか売っていない。
付け合わせ予定のリンゴやレーズン、昼には帰ってくる小学生の長男・長女の午後のおやつ、それに「やっぱケーキ食べたい」と言われたときのため、ちょっと高めのロールケーキ(とはいえ、6切れ入りで300円)を買って帰る。
僕は仕事で忙しいので、妻が後で代わりに市場に行き、鶏などを買ってきてくれた。
午後のおやつの時間、なんだか食欲がない。子供と妻には食べてもらって、僕は仕事を続ける。
やっと仕事が終わって午後5時ごろ。
鶏の仕込みは妻がある程度やってくれていた。
今日はご馳走するし、次女を迎えにちょっと早めだが保育園へ。
なんだか、いまだに食欲がない。変な感じだ。
家の外もずいぶん寒く感じるが、実際寒い日なだけかも。
そういえば、今日は朝からなんだか眠い気がしている。
寝不足かと思っていたのだけど…
家に帰って熱を測ってみたが、特に熱は無い。
風邪を惹いたかと思ったが、思い過ごしか。
楽しい日に暗い雰囲気にしたくないので特に何も言わない。
7時ごろ、ローストチキンが焼き上がり、食事に。
子供向けに、ハピネスチャージプリキュアのシャンメリー買っておいた。次女に大うけ(絵柄が)。
大人はロゼのシャンパン…なのだが、どうも気分が悪い。吐きそう。
調子が悪いと妻には伝えたところ、シャンパンは多すぎるからやめとこうとなり、代わりに先日購入してまだ味も見ていない「レモンビール」にした。330ml。
とりあえず、メリークリスマス。
シャンメリーは、長男はそろそろ大丈夫だが、長女と次女には炭酸は「痛い」ようだった。
まぁ、そうだろうと思ってオレンジジュースも買ってある。
(チキンとフルーツは相性が良い)
僕は少し食べたが、どうも気持ちが悪い。
レモンビールは甘くておいしかったのだが、ちょっとしか飲めない。
そして、その後しばらくしてトイレに駆け込んで吐いた。
「大丈夫?」と子供たちが心配してくれるが、むしろ楽しい日に心配させてしまって申し訳ない。
でも、吐いて少し気分が良くなった。
改めて熱を測ると、微熱がある。
また吐くのが不安なので、ほとんど料理には手を付けず、チキンと一緒に焼いたリンゴは少しだけいただいた。
子供たちを風呂に入れるのは妻に任せ、そのままベッドへ。
熱はこの後上がり、38度台を保ち続けた。最高で38.8度だったかな。
夜の間も、眠りが浅くて何度も目が覚める。
25日は仕事を休んで1日寝ていた。
なんか、節々が痛い。昼頃にはインフルエンザかな、とも思ったが、もしそうなら発症からは24時間を超えているので病院に行っても無意味だろう。
(24日の朝から、なんか体はだるくて眠い状態が続いていた。
インフルエンザは発症から24時間以内なら、良く効く薬があるが、それを超えると自力で直すしかない)
ただ、その後吐くことは無く、食欲は出てきた。
夕食には、前日のチキンの腿を妻が残しておいてくれたので、ご馳走も少し食べられた。
ケーキは? と次女に言われたが、当り前だが買ってきていない。
妻にロールケーキを出してもらい、後日ちゃんとしたのを食べる約束をする。
この日の夜も眠りが浅く、何度も目が覚めた。
そのたびに熱を測っていたが、相変わらず高い。
ところが、明け方は急にぐっすりと眠れた。そして、熱が下がっていた。
5時ごろに起きだして、そのまま洗濯をする。2日間風呂に入っていないので、蒸しタオルを作って全身を拭き、服を全部洗濯機へほおりこむ。
この日は仕事をしたが、やはりまだ体力が回復していない。ふらふらしてあまり仕事に集中できず。
夜は、背中が痛くてあまり眠れず。
体力回復していないのにずっと座ってパソコンやっていたから、体に無理がかかったようだ。
しかし、これで風邪は終了。
で、今朝から次女が熱を出している。
風邪がうつったようだ。
実は、僕の風邪も次女からうつっている。
しばらく前に、次女が夜中に急に吐き、その後熱が出たことがある。1日で回復した事も含め、僕と同じ症状だった。
次女は吐いていないが、1日で治るのではないかと思っている。
正月には笑って過ごせるといいな。
同じテーマの日記(最近の一覧)
別年同日の日記
申し訳ありませんが、現在意見投稿をできない状態にしています。 |