RubyKaigi 2008 筆記

這一次抱著嘗試新鮮的態度到來參加 RubyKaigi。身為聽眾而非講者,見識到了 Ruby 社群許多不同於 Perl 社群的一面。

深入研究者多

在議程方面,有不少關於 Ruby VM 的發表。第一天一開始就有兩場,除了 Ruby 1.9 的 YARV 的主持人「笹田」之外,還有 Rubinus 以及 jruby,第二天則有 MacRuby。

笹田把 Ruby VM 當成學術研究計畫,並且在東大中爭取到了研究室,目前正在招生:東京大学大学院 情報理工学系研究科 創造情報学専攻 笹田研究室 (非常長的全名)。

Rubini.us 是來自 Engine Yard 的員工 Evan Phoenix 的計畫,它也是實做 Ruby VM,但著重於將許多 VM 本身才能得知的資訊,以 first class object 的形式提供出來,像是 Method (讓函式可以取得自身的資料)、SendSite (method caller / callee) 等等。Evan 的全職工作就是做此 VM 的研究。實在是非常令人羨慕的工作。

MacRuby 是 Apple 員工 Laurent Sansonetti 的做品,基本上的概念是把 Ruby 1.9 放在 Objective C Runtime 上面執行。或者也可以說,Objective C 的 Runtime environment 就是 Ruby VM。這樣一來便可以直接利用其能力,主要重點還是在於 GC。

由於 CRuby (官方釋出的 ruby) 的 GC 使用的 Main Thread ,只要 GC 一開始進行,程式的所有部份都必需要暫停,因此每個 VM 實做都有強調如何改善 GC。若像 jruby 本身是 java vm,或 macruby 是 objc runtime,都是已經有長久深遠實做的 vm,多半沒有這個問題。

第二天有位講者在台上問:「這裡有讀過 gc.c 原始碼的請舉個手」,台下有百來位聽眾竟有二十幾位舉手。可見這個社群中深入了解 ruby 計畫的人不少。

商業支持層面廣泛而深入

前述所說的幾種 Ruby VM 全都是屬於企業的研究,jruby 現在也是 sun 的計畫,MacRuby 則是 Apple 的計畫,Rubinus 則屬於 Engine Yard。這些研究計畫的研究者也都全職付出在計畫上。

而這些都是 Ruby VM 而以,還沒談到關於 Ruby on Rails、或是 Ruby IDE 等等其他「週邊」產品。由於 jruby,基於 Eclipse 或 Netbeans 的 IDE 編輯器也相當的完整,會場上另有發表一套 Code Gear。不過台上在示範開發 Rails Demo App 時,跑 db migrate 竟然導致 IDE Crash,引得大家一陣笑。Never live demo。

與 Perl 社群重疊

與會者當中有許多曾在 YAPC::Asia 看到的熟面孔。再加上我本身也是 Perl 社群的人,Ruby 會會長高橋征義本身也在閉幕的致詞中強調會多多向 YAPC::Asia 學習。我想在日本這個軟體開發資源充沛的環境當中,會同時使用 Perl、Ruby 或更多語言的程式設計師想必不在少數。

最後我以我這兩天玩的 Ruby Golf 做個結尾

Japanese numeral

U='個十百千'
D='零一二三四五六七八九'
$<.each{|l|v=-2;l.scan(/([#{D}])?([#{U}]|$)/u){|m|v+=D.index($1||"一")/3*10**(U.index($2)/3)};p v}

Compound interest

$/=":";a,b,c=$<.to_a;1.upto(a.to_i){puts b=b.to_i;b*=1+c.to_f/100}

同一題的 Perl 版

($a,$b,$c)=split":",<>;print$b,$/and$b+=0|$b*$c/100for1..$a;

學著玩 Ruby Golf,自已的知識又增加了不少,大家也不妨試試。


About this entry