YAPC::Asia::2008 結束了,又結束了一次世界最大的 YAPC,今年到場的人 數竟然有 529 人,請給 Shibuya.pm 鼓鼓掌。啪啪啪啪啪啪啪。兩天下來 我也重新複習了這句話的日文:拍手しでください。

我這兩天內給了兩場演講,投影片已經先張貼出來了,各 20 分鐘,而接下 來的兩天都是黑客鬆活動,地點在「Hotel Dan」。這並不是一間旅館,而 是小飼弾先生的家。他家上過電影, 是 2006 年的這部片:Babel。 是在月島的大樓上,第32層,可以俯瞰整個東京市。

我打算向 nothinmuch 請益,改進 一下self.pm,現在的寫法是在 self 函式裡利用 @DB::args 取得上一層的 $_[0] 的值,但這種做法的效 率很差,Shibuya.pm 的 Yappo 曾經比較過數種方 法,我跟 audrey 的做法類似,效率是約是直接使用 $_[0] 變數的十分之一左右。audrey 成 功地利用 tie,可使用 $self, @args, %args 等「變數」,但由於 tie 有 一些額外的負擔,所以還更慢一些。

那麼,如何改進呢?大致上的做法是,利用新的工具 Perl6::Declare,在 compile 時期直接在原碼的 op tree 上注入 "my $self = $_[0]" 這列敘 述(也是以 op tree 的形式),或是,直接樹裡面出現的 $self 改成 $_[0]。這樣一來,便等於有類似 Source filter 的效果,效率卻會更好一 點,因為注入的程式碼已經是解析好的形式。

Perl6::Declare 所提供的能力,是能在 compile 時期便能執行一段自訂的 程式碼。如果我記得沒錯的話,今年 Larry Wall 在開場的 keynote 所說 的一句話:"Parsing is is just dispatching at compile time"。也就是說,如果 能在 compile time 改變 dispatcher 而能執行一段自定程式碼,便能提供 程式語言最大的能力,使寫作者能夠改變其使用的語言本身。

Perl 6 計畫進行了這許久,除了提供大家很大的期待之外,在這兩年實做 的過程之中,也讓 Perl 人有許多挑戰計算機科學界限的地方。領悟到在 compile time 要能執行程式碼的這一著,絕對不簡單。Michael Schwarn 今天在結尾的 Keynote 說,Perl 社群是 Folk Programming 開始的。的確, 我們不像 Haskell 社群,有許多博士與博士論文去完備地推導程式語言的 各種定性。但現在 Perl 社群的核心正確實地在挑戰其他語言未曾到達的領 域。

Perl 正活著很痛快呢

Labels: perl, perl6, yapcasia2008