Rubyの実装が増えている
- スピーカー
- arton - 日本Rubyの会
- プロフィール
- 職業プログラマ ネットワークやインターフェイスが好き Ruby関連の著作に『Rubyを256倍使うための本 邪道編』『かんたんRuby on RailsでWebアプリケーション開発』、その他に『Seasar2で学ぶ DIとAOP アスペクト指向によるJava開発』など
- 講演時間
- 15:10〜15:40
- 講演者による資料
- http://artonx.org/data/RubyKaigi2007/
「つぎの講演はartonさんによる…」 司会の紹介を遮って講演を始めるartonさん(拍手)
選択肢が増えることは善。(ひいきはあるけどね。)
ここで取り上げるのは、
- なぜMatzRuby - オリジナルのRuby - ではないのか?
- 求められたから
- なぜ?
処理系
JRuby
Java VM上にある
- もう普通に使えるよ 1.0だし
- っていうか午前のセッション
Common Language Runtime
マイクロソフトのCLR上で動く。Garden Point Ruby.NET Compiler
http://plas.fit.qut.edu.au/ruby.net/
- Visual Studio 2005とSDKを入れてWindows installerを実行すれば良い
デモ「後ろからは見えないと思います。見えない人は想像してください」 インストールするとメニューに加えられる。
例
require 'mscorlib.dll' # CLRのコア require 'system.Windows.Forms.dll' # Windowsのライブラリ : System::Windows::Fomrs::Application.Run(r.form)
これを実行…あれ?ちょっとわかんないや。
さっきまでは元気に動いていたそうです。スタックフレームがオブジェクトになっている。 メソッドがクラスとして定義されて、動的な実行に対応している。
GAC(Global Assembly Cache)マジック - 他の言語から利用する場合には、あるライブラリを指定する必要がある。
IronRuby
Ruby.NETの字句解析器と構文解析器を利用している。ただし生成される構文木はDLRを利用するので実装は異なる。7月にMs-PLでリリースされる予定。そういうわけで、マクロソフトからのサポートはなく趣味の人が使うだけ、ということになるだろう。
DLRで動的言語のいろいろなパターンを扱えるかどうか実験しているようにも見える。
論点
なぜこれまでのC Rubyじゃだめなのか?
- 速度? → YARV!
- ぎゃっ!? バグfixとは関係なく動作が変わる → mputさんとknuさんのおかげで「仕事で使えるRuby」に。
- 言語仕様がない → 処理系作る人には大問題だがビジネスプログラマーは仕様書を読みません
- ネイティブスレッドがない
- どれだけの人がネイティブスレッドを正しく扱えるの?
- それだけの技術があるなら、ネイティブスレッドがなくてもほとんど必要ない
- 一部の限定された領域を除く
- なら、言ってみてるだけ?
- 例:IIS
- カーネルモードでプロトコルハンドラが実行されている。マルチプロセスでhttpを動かしている
- あるプロセスの死亡が他のプロセスに影響をあたえない
- 多数のプロセスがポート80を見らるようにしないとけない
- これで堅牢性が増した→ならひとつのプロセスで複数のスレッドを動かすのはダメじゃないのか。
- 以前はシングルスレッドアパートメント。1つのプロセスの複数のスレッドのうちのひとつがリクエストを処理する。スレッド間で共有している情報はない。
- 例:IIS
- 多重IO
- ディスクに書いてデータを読むのを「待つ」など
- マルチプレクサを書いて部分読みして返事を待って…これまでは大変だったが、IO待ちの時はRubyが自動的に別のスレッドを回してくれている。ネイティブなスレッドは1個しか使ってないが
- …
artonさんの夢のruby
- マルチVM+グリーンスレッド
- プロセス間通信、セマフォがある
考察
なぜMatz Rubyじゃないのか
- MatzRubyで動かないから
- ビジネス → 「JavaからRubyへ」
- ポータビリティ → MatzRubyだって。
- 明らかな利点 → ライブラリがある
まとめ
- MatzRubyは好きだなあ
- 愛を語っているまつもとさん
- プログラマに優しいRuby
- プログラマを信じるRuby
おまけの預言 .Netが来て…
- 4桁インデント!
- ハードタブ!
- 空白混在!
自分で司会をするartonさん。
Keyword(s):
References:[RubyKaigi2007速報ログ]