岡山で会議。朝から雪がちらついていて、おまけに晴れているもんだから、 路面が光ってつらい。まぶしくて目がどうにかなってしまうかと思った。 こういうことは予想しなかったので眼鏡かけて運転していたのだが、 この際、格好の事は言っていられないので、眼鏡の上にサングラス。
向こうに付いたら、融雪剤で車がどろどろ。後で洗車しなくちゃ。
会議の内容はたぶん日記に書くのは問題ありなので省略。
一緒に乗せていった人の用事が終わるのを待っていたらすっかり遅くなっちゃった。 今日は妻の誕生日だったんだけどなあ。
この辺は歴史が古いせいか難しい読みの地名を見かける。いや、読みにくい地名なんてどこにでもあるか。
宍道(しんじ)というのは漢字だけ見ると読めないが、湖がそれなりに有名のような気がするので、 難しくはないか。温泉津(ゆのつ)も「温泉」を「ゆ」と読むシャレに気がつけば納得できる(か?)
しかし、ちょっと読めないだろうというのは以下のもの。
前者は私の出身地、米子市のもの。車という字を「くるま」と読まない地名は全国でもここだけらしい。 同名の小学校がある。
後者は松江の東側にある東出雲町の地名。 出雲とは松江をはさんで反対なのに東出雲というのも納得の行かない町名ではあるが、ここでは置いておこう。 これも同名の小学校がある。
答えはまた後日。ちゅーか、最近はgoogleすれば一発で分かるような気がする。
他のblogとtrackbackのやりとりをしたりすると、エントリを日単位ではなくパラグラフ単位で扱いたいなあ、 と思うこともある。pluginでなんとかできないだろうか。
ことでなんとかならないだろうか。いや、パラグラフごとにコメントをつけられるようにしないと無理かなあ。
なのだが、あいかわらず具合が良くないのであまり活動できない。 夕方、ようやっと外出してケーキ(Baskin Robinsのアイスクリームケーキ)を購入。
あんまりおめでたい感じにはしてあげられなかったなあ。
新言語。C++で記述されたVMを持つスクリプト言語、らしい。 以前はHasteという名前の言語だったらしい。
The Falcon Programming Language is a generic purpose untyped 4th generation language, based on a Virtual Machine executing portable pseudo codes (a class of languages nowdays known as Scripting Languages, and counting Python, PERL, PHP, Ruby and LUA among them), completely written in C++.
Falcon differentiates from all other scripting languages because it has been developed with a series of goals in its design since the first program line had been placed:
- Simple but elegant grammar
- Extremely fast Virtual Machine
- Easily embeddable in any kind of application
- Easily extensible and maintainable
- Fully multiplatform
文法に「end」を使うので外見はちょっとRubyに似ている。が、思想的に似ているかというと、 ちょっと違うような気もする。 単一オブジェクトを定義するobject文や、状態を明示的に記述する(らしい)state文などは興味深い。 が、state文の挙動はよくわからなかった。
downloadリンクが壊れているので、ソースはチェックできなかった(2月10日現在リンクは復旧している)。
である。同い年になった。
原稿が忙しくてなかなかよくしてやれないが、なんとか時間をとって贈り物を購入。
日ごろの感謝の気持ちを伝えたい。贈り物の選定がちょっと安直だったかもしれないが。
おめでとう。
VA Linuxの佐渡さんのインタビュー。「オープンソースから手を引け」ではなく、「オープンソース振興から手を引け」というのが肝。
あいかわらずセンセーショナルな引用のされ方をする発言の佐渡さんだが、あれって狙ってやってるのかな。計算してやってそうな気がするけど、素ならそれはそれですごいことだ。
要旨としては「オープンソースはもう当たり前になりつつあるから、わざわざ振興する必要はない。むしろ、官に依存する体質を生むからよくない。支援は違う形で」ということだと思う。
まあ、官による支援は「ばらまき型」になりがちで、それでは自助自立が成立しないということについてはわからないでもない。「官がやるべきこと」、「民間に任せること」についてもっと深い議論が進むことを望む。
ここで私自身が「こうあるべきだ」と言えればかっこいいんだけど、そこまでの見識はないんだよなあ。
「スタートアップが大変だから、そこはなんらかの支援があった方が良い」、「経済的支援危険は限定されるべきだが、死んでしまうプロジェクトが多いから、プロジェクト継続支援も必要」くらいは考えつくけど、それって官がやるべきなのか、どうか。現時点では民間にはそんな余裕はないのも事実だけれども。
追記
ミラクルのよしおかさんが、この件について論じておられる。その続きである「OSSにとってどのような支援策が必要とされているか」についてもぜひ読みたい。
以下の二冊は私の宝物である。
今回改めて見返してみると、内容が全く古びていない。前者はまだ入手可能なようだが、後者は雑誌の別冊なだけに入手困難だろう。 bit誌そのものが休刊だし。
復刊ドットコムで頼んでなんとかなるものだろうか。
あと、
もお薦めなんだが、これは出版社(トッパン)そのものが手を引いてるしな。
今日は妻の誕生日。なのにダンナはアメリカにいるわけで、 不興を買っているわけである。 日本時間の8日にSkypeしたんだが、ぜんぜん通じないのである。 この辺、電話にはまだかなわない。
さあ、どうやって機嫌を取ろうかな。
今日はSunキャンパスのEBC(Executive Briefing Center)で Full-day Meeting。ここが本社だと思ってたんだけど、 登記上の本社は別にあるのだとか。
で、いろいろな「偉い人」から
などを聞いた。ここでしか聞けないすごい濃い内容であった。 詳細なレポートを書きたいが、それにはこの余白は(ry
また、後でまとめたい。できれば。もうだいぶ忘れてるけど。
特記すべき点はみっつ。
参考: この日のミーティングに関するTim Brayのブログ。
明日にはもう帰国するので今夜が最後のアメリカでの夕食になる。 で、連れて行ってもらったのはCrusatceamという店。
で、カニ。
見たことないほど巨大なものが一人一人の皿に配られるのは圧巻であった。 バジルとオリーブオイルで炒めたものらしい。日本では見かけない味つけ。 意外(?)なことにおいしかった。
今日は今回の旅行のひとつのハイライトと言ってもよい。 あ、いや、Sunの訪問がね。
で、カニを食べながら隣に座っていた Charles NutterとRubyの可視性(visibility)やUnicode対応について 熱く語ったのであった。正直、ここまでRubyそのものの話ができる機会は 日本でもなかなか無い。
で、Charlesと話したことのメモ。
private visibilityが必要になるのは、 ローカルなルーチン(関数 or メソッド)の名前がpublicなメソッド名と偶然衝突することを避けるため。
で、組み合わせとしては以下のような場合がある。
スーパークラスとサブクラスで同名のメソッドがあり、 それぞれの可視性の組み合わせの可能性は(左がスーパークラス)、
である。ここで4は通常のオーバーライドなので問題なし。 1と2に関してはすでに解決策がある(functional styleではオーバーライドしない)。
で、残る問題は3。私の元の案では、 privateを先に検索してからpublicを検索することにしていた。 しかし、これについてはCharlesから
という指摘が。前者はメソッドキャッシュでほぼ軽減されるとは言え、 指摘はもっともだ。で、ここまでで悩んでいたのだが、 今回、カニを食べながら、Charlesが 「でもさ、無理に解決しようとするから難しいんで。 Javaならpublic × privateはそもそもエラーだぜ。 Rubyでもエラーでいいんじゃね(意訳)」という指摘が。
まったくだ。どうしてそれに気がつかなかったんだろう。 一種の視野狭窄か。
「public × private」がエラーなり警告なりで存在しない (あるいは承知でやっている)と見なすことができればシステムがずいぶん簡単になりそう。
あとでもうちょっと考えてみよう。
あと、Unicode対応では、以前の案からencoding=メソッドをなくすことにした。 つまり、ある文字列のエンコーディングは動的に変更できないということ。
変更するためにはString#encodeメソッドを使って新しい文字列を作る。 おそらく性能のため実装はcopy-on-writeを使うことになるだろうけど。
というのも、JRubyではBinary StringとUnicode Stringで クラスを分離したい(少なくとも内部的には)というニーズがあるようだ。 となると「普通の言語」ではオブジェクトのクラスを動的に変更するのは難しいので エンコーディングは変更可能でない方がありがたいことが多いだろうということ。
是非にと依頼されたので、高校の授業で話すことにする。 情報電子科2年40人弱の前で話す。 高校で話すのは初めてだ。
正直、プログラミングについて専門にやっている科ではないので(組み込みが専門らしい)、 Rubyの話をしても通じないだろうなあ、と普段以上に準備に苦労する。 いつものが使いまわせれば楽だったんだけど、 今回は結局ほとんど新作になってしまった。 ビットやバイトから話すという基本的なもの。
最初からいきなり寝ている人も居たりするのだが、 興味を持って聞いてくれてる人もいるみたい。
聴講している大人もいたのだが、 むしろそっちの方に評判が良かったようだ。 生徒たちはどう感じたのだろうか。
教会の活動で。 延々とたこ焼きを焼き続けた。 数回繰り返すうちに技術が向上した。 大阪の人たちはみんなたこ焼きにこだわりがあるって本当だろうか。
私も一応大阪生まれなんだけど。
しかし、私が生姜が駄目だということばみなさんにバレてしまった。 味覚が子供なもんで。
っていうか、子供なのは味覚だけじゃないんだけど。
Sun JVMの新しいGCアルゴリズム。[論文PDF]
要するに世代別GCにおいて「若い世代」を重点的にスキャンする代わりに、 複数のセグメントでもっともゴミが多いものを最初にスキャンするという戦略、らしい。 で、なぜどのセグメントにゴミが多いかわかるかというと ライトバリアで監視しているということらしい。
ライトバリアのコストが十分に安くて、 exact GCが実現できる環境であれば、 これはアリなアルゴリズムだな。
GoogleはGFSとかMapReduceとかBigtableとかは 公開していない。差別化の本質だと思うので 公開されてないことについて文句を言う筋合いではないのだが、 とはいえそれと似たようなものがほしいことはある。
「なければ作ればいい」ということで、ふたつほど見つかった。
両方ともHadoopの上で実装されているようだ。まだ評価はしてない。紹介だけ。