ひさびさの松江の教会。前回は5月4日。
いくつか知らない顔が増えている。このご時世でも宗教に関心をもってくれる人が日本に残っていることは、 ありがたいというか、希望が持てるというか。
甥っ子も1ヶ月もたつとだいぶ人間らしくなってた。
教会からの帰りに遠まわりして出雲空港に寄り、置いてきてた車をとってくる。 さすがに2台ないと不便だから。
その後、遅い昼食をいただき、昼寝。なんと3時間以上もねてしまった。 目が覚めると暗くなってた。こういうのは昼寝とは言いません。
夕べのことだが、松江駅まで妻に迎えにきてもらった。
で、帰ろうとするとエンジンがかからない。バッテリーが上がったかと思ってちょっと焦った。 しかし、ルームランプはつくし、ワイパーは動くし、電圧は下がってはいないようだ。
おかしいと思って、席を交代して見るとシフトが[D]ポジションのままだった。 普段、マニュアルを運転している彼女は停車時に[P]ポジションにするのを忘れていたのだった。 なんの表示もなくエンジンがかからないので、理由が分かるのに時間がかかってしまった。
教訓: エラーのときにはユーザにあれこれ推測させないようにできるだけ多くの情報を与えましょう。
この日記は6月5日に書いています
あーあ、helium.ruby-lang.orgも記事になってるよ。いかんよなあ。
また5月28日には,「Ruby」の公式サイトに不正侵入があったことが公表された。「何者かがhelium.ruby-lang.orgに侵入していたことを,2004年5月28日にサイト管理者が確認した」という。やはり原因はCVSのセキュリティ・ホールと見られる。ただし,chrootと呼ばれるセキュリティ対策ツールを使用し,CVSに侵入されても他のプロセスやファイルに不正な操作ができないようにしていたため,他のサービスやコンテンツへの影響の可能性は低いと考えられるとしている。また,公式サイトに置かれていたruby-1.8.1.tar.gzとruby-1.6.8.tar.gzには改ざんがないことが確認されたという。
完全に安全かどうかを証明するのは不可能に近い。 一番ありそうな(かつ楽観的な)推測は以下の通りである。
しかし、実際にはrootを奪われたと想定して検証する必要がある。 しょうがないんで最低限のデータ(CVS, FTP, WWW)だけ検証し、 残りは証拠を保全した後、クリーンインストールしよう。
発表。
11:00-11:45
Deductive systemによるCプログラムのポインタ解析
千代 英一郎(日立製作所)
最適化のためポインタ解析を効率よく、かつシンプルに実装するという話。 deductiveを関係代数を使って実装するというのが素敵。 なんかすっごい頭よさそうに見える。
11:45-12:30
オブジェクト指向スクリプト言語に適したごみ集め手法
○松本 行弘(ネットワーク応用通信研究所、島根大)、縄手 雅彦(島根大)
私の発表。漢字の名前はひさしぶり。なんか、前の発表に比べると異様にわかりやすくて 申し訳ない。実際の発表は、write barrierによる1bit reference count(というかsharing flag)を使って、 スレッドローカルGCを実装するという話。既存の技術を組み合わせただけなのだが、 全体としては新規性がある(と信じたい)。 ただ、ベースとなった技術の用語をそのまま持ってきたので、 世代別GCでないのに「世代別」と言ったり、 リファレンスカウント法でないのに「リファレンスカウント」と言ったり、 で、下手にGCに知識のある人には替えって分かり難かったかも。
まあ、かなり有利なケースでもGC時間が25%しか削減されないってことで、 期待した性能は出ていない。もうちょっとなんとかならないものか。
12:30-13:30 昼休み
ちょうど来てくださっていた、恩師、佐々先生とお話をする。 お会いするのは15年近くぶりではないかと。 全然変わっておられない。
久野先生と笹田くんとで昼食。 久野先生とはfjなどでのネット上のつきあいは私が学生のころからなので、 もう15年以上になるのだが、実際にお会いしたのはまだ二度目という。 静的型や動的型など面白げな話題について話す。
13:30-14:15
関数型ソフトウェア部品の適用履歴を用いたスクリプティング支援環境
中山 健、○谷沢 智史、Cheng Jachong、野中 貴俊、小林 良岳、前川 守(電通大)
正直、よくわからなかった。非協調状態での部品の流通と評価という話のようなのだが、 その割には「部品」に加えられる制約が厳しいような。 あるいは実態と理想との解離が大きいのかもしれない。
14:15-15:00
美術・工芸教育に適したプログラミング言語
○鍛治 秀紀(多摩美大、筑波大)、久野 靖(筑波大)
久野先生のところからの発表。久野さん自身はずっと昔から静的型派なのだが、 「学生はみな動的型の言語を作るんだよねえ」とのことだった。これもそのひとつ。 発表者は多摩美の講師。日本語プログラミング言語とそのIDEを作ったら、 学生にウケたという話。 が、文法がよかったのか、日本語がよかったのか、あるいはIDEがよかったのか、 その辺がはっきりしないところが惜しい。言語の研究は難しいねえ。 私は論文は実装方面に限定することで逃げているんだけど。
発表後も集まってうだうだと話しているうちに時間切れ。
今日は16:40の飛行機なのでここであきらめて松江に帰る。
大変、ためになった。
Bitwise MagazineでのRubyの紹介。
Bitwiseについては「4月に紹介するからなんか一言」と言われていたのに、 ほったらかしにしてしまっていたのだった。 4月になっても出たという話を聞かないから「企画が没になったのかな」と 思っていたのだが、2ヶ月ほど遅れて登場した、ということらしい。
こっちはまあ、普通。
しかし、もう一本あるのだ。
タイトルがふるっている。
Ruby programming's hidden treasure..? or a flawed gem..?
だそうだ。「Flawed」とは「偽の」とかいう意味だから、 「見かけ倒しの宝石(なの?)」という感じか。
まあ、「驚き最少の原則に反している」だの、 「全然シンプルな文法じゃない」だの、言いたい放題(笑)。
まあ、本当のことだけど。
ただ、「驚き最少の法則」は私が言い出したことじゃないんだけどなあ。 まあ、いつものことだよなあ。万人が驚かない言語なんて不可能だってば。 私自身は口にしないようにしてから3,4年は経つと思うんだけど、 まだこんなこと言われるんだよなあ。
さて、こんなにけちょんけちょんにけなしているように見えるのだが、 最後にはほめられているようだ。
Huw: Look, in all this discussion, it sounds as though both of us have been picking holes in Ruby. Anyone would think we didn’t like the language. That obviously isn’t true.
...obviously, both of us must feel that Ruby is a pretty interesting language. Let's wrap this up by trying to pick out the features that appeal to us. For myself, I think I'd say that it's the combination of reasonably thorough object orientation with a lightweight syntax. In my experience, Ruby is the most truly OOP language I've ever used with the sole exception of Smalltalk. Now, I am not completely obsessed with OOP - but it seems to me that either a language should do object orientation properly or it should leave it alone. Having decided to go for OOP, at least Ruby has, unlike most other supposedly `OOP languages' done it thoroughly. And, unlike Smalltalk, it has a simple syntax and isn't weighed down by being embedded into a hermetically sealed world \u2013 the entire environment that Smalltalk is obliged to carry around with it. In short, Ruby is, in principle, a perfect Rapid Application Development language.
Dermot: I'd agree there. Ruby is one of the most interesting languages around - certainly, the most interesting that I've seen in a long time. It makes a pleasant change from the endless variations of the C syntax that seem to come out (C++, Java, C# and so on). I particularly like the fact that while it is indeed object oriented, you don't need to know that to do simple stuff: I think mixins are brilliant!
さて、最後に面白かったところを二ヶ所ほど引用しておこう
And while I complain about the syntax (I’ve lost count of the number of times that I’d like to do something unpleasant to Matz!), writing a parser for Ruby, as I've been doing, is a whole lot different from using the Ruby language itself to do something useful.
なんだかおっかないことが書いてある。bitwise編集部には近づかないようにしよう。
Now that's a strange thought - could Ruby be the new VB?
「新たなVBとしてRubyを」ってことだけど、彼はVBの前の名前がRubyだったと知ったらどう思うだろうか。単なる偶然だけど。
前にも書いた
def foo(a,*b,c) end
のようなコードを実現した。ノードを変えちゃったので、 ripperやyarvへの対応が必要だけど、現時点ではほったらかし。
なかなか便利な気がする。オプションハッシュの取り出しとか。
朝食前に新聞を開いて驚愕した。
昨日プレスリリースされた私のフェロー就任が 地方経済面に掲載されていたからである。 しかも、公表していない「月一回東京」なんてことまで載ってる。 どこで調べたんだ。
この辺が島根クオリティか(ほめてる)。
端から見てると既得権益者が、いかに自分の権益を守り消費者から金を搾り取るか、 という話にしか見えないのが悲しい。それは私がひねくれているから?
まあ、あとdebuggerもあるにはあるんだけど。一応スレッド対応だったりもするんだけど。
RailsとDjangoの比較。タイトルにもあるように公平であることを心がけた比較。 結果として、ここはRailsがよい、ここはDjangoがよい、とかいう結論なんだけど。
ただ、Djangoがよい、という点のほとんどはRailsプラグインで解決できる(できてる)と思う。 「最初から付いてるほうがいい(I wish rails had more batteries included)」ということだ そうだけど。
あと、またUnicodeサポートについて言われてる。 確かにRuby 1.8のUnicodeサポートは限定的だ。
が、正直、Railsの国際化という点で問題はさほど起きていないわけだし、 さらに言えば、Perlのutf8フラグ問題とか、Pythonのstrとunicodeの区別とかで 発生する問題に比べたら、1.8のシンプルな解法の方がマシな気がする(のは、作者の欲目か)。
JFreeChartの作者が サンプルコードとドキュメントを有償化したら「そんなのOSSじゃない」と文句を言われた、 という話。
こういう「金を出さないが文句は言う」人たちの話を聞くと悲しくなる。 いいじゃん、別に。ソースについては間違いなくフリー(自由)なんだから。
それ以上のものを求める人がドキュメントとサンプルにお金を払うか、 それだったらJFreeChartは使わない、とするか、 それもまた自由だ。
ドキュメントの有償化は「使ってもらってなんぼ」という傾向のあるOSSにおいて 賢明な選択ではないかもしれないが、絶対にうまくいかないというわけでもないし、 生活の安定に寄与したいからという理由で、ある開発者がそのような選択をするのであれば、 私自身は尊重したい(でも、たぶんドキュメントは買わないけど)。
レグレッションテスト重要、という話。
Perlのテストスイートは言語本体だけで64793あるのに対して、 Rubyは867しかないという指摘も。うぅ。少しずつ増やしてるんだけどねえ。
JVM上のオブジェクト指向関数型言語ScalaにおけるActorの使い方。
よく見ると(よく見なくても)Erlangにそっくり。 あと、RubyのブロックっぽいScalaの文法も気持ちいい。
ScalaのActorはJVMのスレッドプールを使って実現されているそうだけど、 十分な性能が出るなら(これが難しい)、ErlangではなくScalaが次世代を席巻するかも。
Rubyでも、通信できるデータを
に限定し、値渡しであることを明記したら、 似たようなActorを実装できるかもしれない。 情報の共有が最低限にできるので、プロセスでもスレッドでも、 あまり問題を起こさず動作するのではないか。
RubyのセマンティクスにLispの文法を持つ言語RLispがなぜクラス変数をサポートしないか、 という話。
要するに
ということ。1.9のクラス変数の挙動について(手遅れになる前に)見直すべきか。
だそうだ。
たぶん私は、私の直接知っている人の中で一番「好きなことを貫いて仕事にしている」人だと 自分でも思うが、確かに「Rubyのまつもと」は他の人では交換不可能だし、 結構縛られないで自由に生きているような気がする。服装とか。
もっとも、あんまり縛られないと社会人として(というか、人類として)失格してしまうのだが、 その辺は私よりもずっと「常識人」である妻がサポートしてくれている。 あと、私の場合、宗教上の戒律も、ある一定の範囲以上踏み外さないために役立ってるような気がする。
で、私から付け加えるとするならば、
独自の価値観を持つ
「お金が一番」という価値観を否定まではしないが、私自身はそのようには考えていない。 「効率が一番」という価値観を否定しないが、プログラミング以外の領域ではそのようには考えない。 自分の価値観を自覚することが重要だと思う。 私の場合は「自由」と「幸福」かなあ。
自分が価値を見いだしたことへの努力を惜しまない
たぶん、サッカー選手になるような人は自分の人生の相当の時間をサッカーに費やしているに違いないと思う。私もRuby(とプログラミング)に費やした時間は測りしれない。
くらいかなあ。