つれづれ

その60

昨年末の話になるけれど、転職していった id:vtwinautomaton さんと久しぶりにあって、忘年会と称して飲みました。

新しい職場はハッカー的に愉しそうでなにより。具体的な話は会社が割れちゃうから割愛かな。久しぶりに Boost がどうの、Google のコーディング規約がどうの、と言う話を愉しくできて、そして、なんだかとても寂しくなりました。

というのも、今のわたしの職場の周りに、プログラミングでオタッキーな話題で花を咲かせる人がいないのだなぁ。

はてダ を書いてれば、コメント、はてブトラックバックと、いろんな方が意見を下さって、そう言う愉しさを補完できるじゃん・・・と思ったのですが、コメントが入るときはレベルが高すぎて わたしみたいな似非プログラマには「こんな凄い人がいるんだー」とか「あぁ、そうなんだ!」とか「勉強になる分」は補完されるけれど、寂しさはいまいち埋まらないのだなぁ。・・・とも実感。

つまり、まつもとさんの髭の近況のような、くだらないことで盛り上がれる仕事仲間は貴重だったな、と言う話でした。

その61

インターフェイスはやはり切るものなのだ。そうして境界を創る。境界の内側はオカルト(秘所)として扱い中身を問うてはならぬのが正しい。

・・・なぁんて、魍魎の匣 を読み返しながら妄想しました。プログラマには愉しい小説だと思いますので、是非。(ただし、魍魎に憑かれるかもしれません)

分冊文庫版 魍魎の匣(上) (講談社文庫)

分冊文庫版 魍魎の匣(上) (講談社文庫)

分冊文庫版 魍魎の匣(中) (講談社文庫)

分冊文庫版 魍魎の匣(中) (講談社文庫)

分冊文庫版 魍魎の匣(下) (講談社文庫)

分冊文庫版 魍魎の匣(下) (講談社文庫)

その62

愉しみにしていた ファンタシースターZERO を買いました。Nintendo DS というハードの制約ゆえの不満は確かにあるのだけれど、それも良くフォローされていて、とても愉しいゲームだな、と思いました。

ただ、そうはいっても一つ大きな不満があって。一見さんとネットプレイする時にチャット出来ない(「こんにちは」とか「町に戻る」みたいな きまり文句を選ぶしか出来ない)仕様は悲しいと思いました。会話にならないし、意思の疎通も出来ません。PS0で友達になりました・・・はムリ。これは寂しい。

絵じゃNGワード弾きとかできないので、任天堂 がフリーミッションでの ピクトチャットをすることを許さなかったのだろうなぁ、と想像できるのですが。


とはいえ、既にフレンドコードを交換した友達同士ならば、タッチペンを使ったピクトチャットができます。とっても愉しそうなのですが、残念ながらそちらは未経験。まだ見ぬフレンドプレイにワクテカしながら

こんなん描いてみたのですが、一人で吹き出しを出してると、なんだか余計寂しいですね。急に部屋が寒くなったように感じます。

誰かご一緒できないかしらん。しくしく。

その63

例外について。

Smalltalk の例外って、一時停止って感じですよね?または、人間とシステムのメッセージのやりとりの場。

その64

ハードディスクもオンボードになるのかな?そうするとプログラムモデルも変わる。 -きしだのはてな さんをみて思ったこと。

いまはアプリケーションにストレージを割り当てるのは、ファイルという単位なのだけど、SSDが使えるのであれば、わざわざファイルという形でストレージに保存する必要はないと思う。もう、SSDの領域にメモリアドレスを割り当てて直接アクセスしちゃえばいい。

(中略)

そうなると、プログラムの考え方は劇的にかわるし、プログラム言語にもそれを前提とした機能が必要になるかもしれない。
そう考えると、SSDの時代というのは、大きなパラダイム転換になるんじゃないだろうか。

2008-12-11

それが Smalltalk の世界なんだけれどな、しょぼん。・・・と、思いました。

Smalltalk 環境はファイルのない世界で、作ったオブジェクトは永遠に消えない、すてきなワンダーランド。べつにSSDの時代を待つ必要はないのだけれど。30年たっても未だに未来(いまだこず)とはこれ如何に。(いけない、センスがオヤジ化してる...orz)

ただ、Seaside の継続ベース(ブラウザの戻るボタンを押すとサーバー側の状態も戻る)は、もう今では「直感的でない挙動」と受け止められてしまうように、短期コンピュータ記憶と長期コンピュータ記憶という概念は染み渡りすぎて排除できないかもしれません。

その65

プログラマーの手足を縛れ | 日経 xTECH(クロステック) について。int *n;*n=5; なみに酷いと思ったのだけれど、はてブとかあんまり盛り上がって無くって、意外でした。

わたしは「縛られる手足を自分で持ってないから、縛ることで何が問題になるかを認識できないのか」とか思っちゃった(毒々しいなぁ)。

「プログラムの書き方を規制すること」と「品質の向上」の間に直接の関係はないし、常に相関するわけでもありません。人間はミスするよね→コンピュータにやらせよう を「プログラマの手足をより縛る」と解釈してますが、そうではなく「プログラマをより善く助けよう」と捉えるべきだと思います。なら、品質が上がるのも必然でしょ?


・・・と、そんな総論よりも枝葉、「縛りは品質を上げる」例として持ち上げられちゃってる構造化プログラミングが気になる脱線大好きわたしです。

構造化プログラミングがプログラムの品質を上げるヒミツは、制御フローの自由度を減らすことじゃありません。数行ほどの小さなプログラムなら簡単に理解できるのに、大きなプログラムだと理解が出来ない(コードを見てもバグに気づけない)・・・という人の弱点をフォローするなら、大きなプログラムを小さなプログラムが集まったものに構造化するといいよ?――というのが構造化プログラミング。それが品質向上のヒミツです。

だから goto や グローバル変数って「小さなプログラム」に切れなくしちゃうからダメなだけなので、仮にそうじゃなきゃ別にgotoも広域変数も(品質論的に)ありありOK です。

「goto文は有害である」という言葉の響きがあまりに有害だったか、それ自体が目的であり効果の源のように思われてしまっています。たとえばときどき「途中returnやループのcontinueは構造化プログラミングじゃないから使うべきじゃない」とか言うお馬鹿さんがいるけれど、それはちょっと変。

スパゲティがなぜ悪いのか・・・て、そりゃ切れないからでしょ。なぜ切れないとマズイの?・・て、それは、小さいことは良いことだから。単にそれだけのことなのですよね。

その66

月と地球が落ちる話のブクマの関連エントリーで見つけた

数学は科学を素人の手の及ばないところに持っていく: 忘却からの帰還さん。

数学が科学に必須の成分となったことで、科学は素人に手の出せるものではなくなった。これはニュートンによって物理に始まり、1970年代には生態学や動物行動学にまで及んだという:

たとえばアリストテレスの著作は、それなりの水準の教育があれば誰でも読んで理解できるものだった。コペルニクスが1543年に『天体の回転について』を出版したときには、部外者でも、さしたる困難もなくその論旨をたどることができた。1632年にガリレオが『天文対話』を出したときでさえ、物理学は、そこに含まれている数学に通じていなくても、教育を受けていれば、部外者でも理解できる範囲内だった。しかしそのわずか50年後にニュートンの『プリンキピア・マテマティカ』が出たときには、事態は突如としてまったく別の方向に向かった。ある日突然、科学は鏡をくぐりぬけて、専門家にしか理解できないものになったのである。


わたしは数学が苦手な子だからそれは実感です。たとえば、ここで紹介されている万有引力の法則から楕円軌道を導く課程の数式は、わたしにとって難物です。みてると、あたまがクラクラしちゃう。数式の抽象度の高さについていけなくって、理解なんてとてもとても。あぁ、これが「抽象度が高すぎると解りにくい」ってヤツですね!

難しいのは、だからと言って抽象度を低くしても、今度は規模が大きすぎてそれが正しいのか解らない(飲み込めるけれど理解はできない)。本当に理解したければ、数式に慣れ親しむしか方策はない。抽象化したものは絶対的には難しいけれど、相対的には簡単で、悪いことに人間が理解できる許容範囲にはコレしかないケースばかりだから、科学は素人から遠ざかるのです。


* * *


しかし、コンピュータを理解の道具につかうのは、このジレンマ(数学はわからないけど数学をつかわないと解らない)を崩してくれます。

たとえば、

たかだか楕円軌道ごときでも、この有様。
とともに重要なことは、万有引力の法則から楕円軌道を導く過程を、数式なしに説明することは不可能に近いことだ。少なくとも、Kumicitには数式なしに説明できない。

について、わたしは「月と地球に落ちるお話」でやったとおり、万有引力の法則から数式なしに楕円軌道を導きました。楕円軌道を描き出すまで わたし、ケプラーの法則忘れてましたから、楕円軌道が勝手に転がり込んできたという感じ。面積速度一定(角運動量保存)もそう。わたしは途中でバグったけれど(^^; 総じて簡単。誰でも出来ます。

これは、数え上げ理解をコンピュータが肩代わりしてくれた、てことかな、と思ってます。グラフにプロットしながら数え上げ理解したことを、膨大なボリュームでもコンピュータが代わりやってくれるから、人は 自身の頭の規模への脆弱性に 邪魔されずに数え上げ理解できた・・と。

算盤が人間の弱い一時記憶をフォローするだけで計算能力を大きく底上げするように、コンピュータ/プログラミングに、規模に弱い数え上げ理解をフォローさせれば、人間の理解力は大きく底上げできます。これが Etoys とか LOGO をつかった教育の本分で、特に Etoys はそう言うのを意識した作りに成っていると思います。

なにより重要なのは、得られるのが「理解」であって「知識」じゃないこと。科学知識を詰め込むのではなく、素人が素人のまま 科学を理解できるようになること。どんと来い似非科学(w

そんな風に、プログラミングは理解の道具として素晴らしすぎるから、いずれ 読み書きや計算と同じような位置づけになるんじゃないかな。