4月に出すつもりだったRuby 1.8のリリースが遅れている。 自分の誕生日に出すつもりだったのだが。
リリースが遅れている理由はふたつある。 ひとつはリリースマネージメントの問題だ。 つまり、私はリリース前になにをなすべきかを十分に把握していないことだ。 これについてはこれから文章化して明確にして行こうと思っている。
もうひとつはもうちょっと深刻で、私が内心ではリリースを望んでいないことだ。 より正確には、望んでいないのはリリース前のfeature freezeだ。 私が一番関心があるのは言語をよりよくすることで、 「よりよく」には本質的に変化が伴うので、 変化を止めてしまうfeature freezeは嬉しくないのだ。
ここにもまた矛盾がある。
Ruby 1.8にこれから加えるかもしれない最大の変更がこれだ。 現時点ではProcクラスにはcallメソッドと新たに追加されたyieldメソッドがある。
本人はこれで満足していたのだが、 David Alan Blackが「yieldって名前はおかしい」と指摘したので少々話がややこしくなった。 とはいえ、まだ名前に対する考えはそれぞれだし静観してればよいと思っていたのだ。 しかし、[ruby-talk:70220]で「BlockとProcを導入する」というアイディアを見て考え直した。
callとyieldの両方のメソッドを持つということは、 呼び出し側がある手続きオブジェクトを手続き的に呼びたいか、ブロック的に呼びたいかを決めることを意味する。 しかし、実際には手続き的に呼ばれるもの(lambdaで生成されたものとか)と、 ブロック的に呼ばれるもの(ブロック引数で得られるものとか)は、はっきり異なるのではないか、 別の言い方をすると、手続き的に呼びたいか、ブロック的に呼びたいかは、 呼び出され側が決めるべきことではないかと。 別の呼び出し方がしたい場合には明示的に変換すると。
考えれば考えるほどこっちの方が妥当のように思えてきたのだが(1.6からは上位互換だし)、 変更が相当大規模になるので尻込みしているのだった。
これも懸案のひとつ。instance_methodsなどと一貫性を持たせるため、 methodsもrecurseするかどうか指定できる引数を追加するという Dave Thomasの案をとりあえず採用したのだが、 この場合特異メソッドはどうなるのだろうか。
現状では
を返すと言う「実装の都合で支離滅裂」な挙動になっているから、 変えなくちゃいけないのは確かだが、問題はどう変えるのか、だ。
追記(2003-05-06): 結局、デフォルトと真のときにはすべてのメソッド、 偽の時には特異メソッドのリストを返すことにしてみました。
やっと晴れたので、岡山県の山の中にある某遊園地に。 高速を使えば玉造からでも1時間で着くのね。
マイナーなので、人はあまりいないかな、と期待していたのだが、 予想外に駐車場は一杯であった。これは「特捜戦隊デカレンジャー」ショーのせいか。
前に来た時にはほとんど並ぶことがなかったアトラクションにもかなり長い行列ができている。 行列は嫌いだ。まあ、ディズニーリゾートとかUSJに行けばこんなものでは済まないけれども。
14時から「特捜戦隊デカレンジャー」ショー。 息子は今年あたりから戦隊ものは気分的に卒業したはずだったが、 結構喜んで見ている。「がんばれーっ、デカレンジャーっ」。 見たこともない悪役であったが、それなりに工夫をしているようだ。 が、ストーリーはテレビの本編以上にツッコミどころ満載であった。
まあ、いいか。
3時も過ぎた頃から人が減りはじめる。あらゆるアトラクションが並ばずに遊べるようになる。 子供たちは走り回って、あちこち遊んでいる。大人はくたびれている。 結局、閉館の6時(早いなあ)ぎりぎりまで遊び回って、 満喫したようだ。小さい遊園地であるが、これくらいの方が時間を有意義に使えたような気がする。 ということで、この遊園地は午後から遊ぶのが吉かも。
しかし、くたびれた。
昼ごろやってきた弟夫婦と出雲いりすの丘へ。 本当に遊んでばかりだな、この連休は。 末娘と妻は留守番。赤ちゃんはそんなに外出してたら体力がもちません。
動物をたくさん眺める。犬(シェットランドシープドッグ)がかわいい。 羊も癒される。
なぜかやっていたマジレンジャーショー。 息子が喜ぶかと思いきや、わりと醒めた目をして見ていた。 最近の小学校二年生はそんなに幼くないんだね。 でも、こないだ録画しそこなった時にはかなり怒っていたように思うんだけど。
あ、マジレンジャーは好きでもドサ回りのショーに不満だったのか。 じゃあ、今度は「こうらくえんゆうえんち」に連れて行ってあげるべきなのか。 ちょっと遠いなあ。
いりすの丘で弟夫婦と別れる。ちょっとくたびれた。
珍しく中学生の部活もなく、 みんなで出掛ける。
堀川遊覧というのは、松江城のお堀になっている川を 船でめぐるというもの。かなり街中だし、堀川ってそんなにきれいな川じゃないし、 と思って、いままでずいぶん長く松江に居るのに乗ったことはなかったけど、 「今年のGWは少しは観光らしいことをしよう」との目標を達成すべく 挑戦してみた。
結果としては、予想外によかった。思ったよりも景色もよかったし、 愛想のない船頭さんも、それが逆によかったり。
また、歴史情緒のある町並みも車に乗って通り過ぎるのとはまた違う視点で感じられた。これはお薦め。1周約45分。
ところで、乗るときに認証されなかったけど、これってチケット買ったら、1日乗り放題なのかなあ。
せっかくのゴールデンウィークだし、ということで 米子(日吉津か?)にあるお菓子の壽城に出かける。
初めてなので、どんなところかと思ったが、
ほとんどただで楽しめたので悪いところではない。 が、頻繁に訪れるところでもなさそうだ。
そういえば名古屋にもお菓子の城という場所があったな。
分散バグトラッキング。 分散バージョン管理というのはあるが、バグトラッキングも分散してはどうか、という話。
中央リポジトリのない完全な分散バージョン管理システムが いまいち使いにくいような気がするのと同様、 完全な分散バグトラッキングシステムも使いにくいかもしれないな、という印象を持った。
とはいえ、たとえばLinuxでは分散バージョン管理が行われているわけだし、 運用の徹底と慣れでなんとかなるものなのかもしれない。
Tim O'ReillyがScalaに言及している。
Scalaは以前にも紹介したことが あるが、個人的にはマイナーなJVM言語だと思っていた。 しかし、いつの間にか私の気づかないところで着実に進歩していたようだ。
今回はActor的並列プログラミングが注目されているようだ。 Erlangとは違う形で(分かりやすい/扱いやすい)並列プログラミングを提供する言語になる、かも。
10進小数についてのFAQ。 浮動小数点数でなくても小数は難しい。
よく見ると、まとめているのはREXXの作者、 Mike Cowlishawであった。この人も多才な人だ。
なんとも見習いたいものだ。