Matz Roundtable

  • Posted by Nick Sieger

http://blog.nicksieger.com/articles/2006/10/21/rubyconf-matz-roundtable


Speaker: Speaker: Yukihiro Matsumoto


RubyConfの毎年の恒例がラウンドテーブルです。観客は誰でも前に出てMatzに質問できます。
(以下の)記録には部分的な言いかえがあります。


Q.Rubyは邪悪な特徴を組み込まれた?これからそうなる?
A.いいえ。


Q.Symbolが"frozen"Stringなら、なぜSymbolが必要なの?
A.その質問に対する完璧な回答はない。伝統にしたがっています。


Q.Rubyの実行されたアーキテクチャのなかでもっとも変わったものは?
A.思いつかないけど...JRubyかな? 誰かがNECSスーパーコンピュータ上でコンパイルしたRubyを走らせていたよ。(観客から)Symbianもあるよ。


Q.Rubyが受け入れられるにつれ、変化への抵抗が大きくなっている。勢いを得る一方でどのようにアジャイルさを保つのか?
A.1.8を分岐した。安定版が必要なら永久にRuby1.8を使ってください。


Q.arrayのパッチは1.8を永久に使い続けたいひとたちにバックポートされる可能性はある?
A.かもしれない。でも今のパッチは1.9ではバグをもっている。

Q.なぜYARVは1.9の唯一のVMでないの?[レジスタベースのVMに関するコメント]
A.私にはスタックベースのVMレジスタベースのVM、どちらがいいのか分からない...[それはささださんに]


Q.強力なメタプログラミングの便利さに基づいた勢いがあるようです。1.9でにはよりユーザーフレンドリーな特徴があります。コードは最終的にデータになりますか?さもなくば、さらに激しく利用されるツール上で技術を継ぎ合わせだけですか?
A.メタプログラミングする極端な方法はLispを使うことです。しかし現実的にはどこかで始めなければなりません。S表現が進むべき道だとは思っていません。マクロは持たないでしょう。1.9でもつものは似たものにとどまります。
Q.コードを直列化する力はとても強力です。それは可能ですか?
A.内部の状態を明らかにするのはトリッキーです。それは変化しますから。それはプラットフォーム特化な特徴になりそうですね。


Q.最近、1.9に対してオブジェクトヘッダ内であるべきArrayとStringに対してパッチがあった。これはプロファイルされたのか?信じられないような性能問題を引き起こすようにみえる。
A.mollocとGCの遅さはプロファイル済みだよ。あるケースでは遅くなるけど、5%くらい速くなるベンチマークが出た。徹底的にテストされるべきだろうね。


Q.Ruby2.0はグリーンスレッドや継続を持たない、これは正しい?その決定には特別な理由はあるの?
A.YARVでグリーンスレッドを実装するのは難しいのです。


Q.開発の動きをもっと素早くしりたいけど、コードに貢献できないかもしれない。貢献したいプログラマーへの提案はあるか?
A.リストに対するパッチを送ってよ。一緒にやるのになにか障害ってある?テストを送ってくれてもいいし、ドキュメントでもいいよ。あるいはRubyCentralに寄付する?(Chad Fowlerをみる)


Q.CSVライブラリはとても有用だが遅い。FasterCSVを標準ライブラリにいれることはできる?
A.CSVライブラリをFasterCSVライブラリに置き換えるのはOKだよ。互換性の問題が解決されているかぎりはね。


Q.あなたに感謝したい。Rubyを毎日書くのが好きなので。最初はPythonを試してみた。最近、関係ないアップグレードが私のPythonアプリを壊してしまった。複数のバージョンの異なるRubyを管理することはできる?
A.2つのバージョンをもつことになるだろう。1.8と未来のやつだ。


Q.あなたの成功をもたらした人格上の特徴のなかでもっとも重要だと思うものはなにか?
A.忍耐?
Q.もっと詳しく話すことはできる?
A.言語を設計するのは簡単だけど、それらの多くは1,2年のうちに消えてしまう。私はRubyで13年間仕事をしている。


Q.IRBのなかでクラスがどのように実行されているかを見たいんだけど?
観客の一人(Eric Hodel?)がParseTreeに言及した。


Q.Rubyがなかったら何でプログラミングしてますか?
A.Rubyではない私自身のつくったある言語で。


Q.まだRCRchiveをみてる?
A.はい。キーノートのなかでそれについて話すよ。


Q.実際に分岐するよりもそれ自身を分岐させる特徴的な抽象性がRubyに欲しい。これをコアに追加することはできる?
A.まず、その特徴の振る舞いを定義しなければならない。で、よいメソッド名を考える。それができればコアに追加するのに何の問題もないだろう。


Q.同じオリジナルのモジュールのなかのオブジェクトにメソッドをバインドする必要があるのはなぜ?
A.StringクラスのメソッドをArrayクラスにバインドするなら、それは失敗するだろう。それは防ぐ必要がある。


Q.Ruby.NETについてどう思う?
A.新しい実装は歓迎だよ。
Q.ほかのプロジェクトがそれに従うような標準的な言語仕様はあるべきか?
A.Charlsが1.8の仕様でそれをはじめたよ。時間があれば彼を助けたいと思う。