LL Future のきままなレポート (1)
8月30日、中野で LL Future という名のイベントが開催された。 これを見てきたので気侭にレポートしたい。
LL というのは Lightweight Language のことで、 具体的には Perl とか、PHP とか、Rubyとか、その他いろいろソレ系の言語をひっくるめた感じである。 開催前のスクリーンに今までの LL イベントの歴史を紹介する動画が流れていた。 このイベントは今年で6年目、最初は150人から始まったのだが、 今回は1000人程度まで成長したそうである。 この種のイベントに大勢集まるというのは異様なことで、例えばアメリカではこんなに集まらないらしい。 不思議な現象だ。
関係ないが、 壇上には Mac が乗っかっていた。なぜMac なのか知らないのだが、 何となく Windows よりも Mac がカッコいい感じがする。
最初に Larry Wall 氏による基調講演があった。 海外から講師を招待するのは初めてらしい。 このイベントは毎年何か新しいことをするシキタリがあるらしいのだが、 今年は海外から招待するというのが新しい、というような何となくこじつけっぽい言い訳をしていたが、 とにかく Larry Wall氏である。 いわずと知れた Perl の開発者だ。
内容は Perl6 に関する思想的なことがメインだった。 言語を作っていて、もはや何もすることがなくなったら、何をすればいいか。 哲学的だ。 この答えは2つあるという。「何もしない」か「全部やる」かどちらかだそうだ。 答えも哲学的だ。 Perl は哲学になったのか。 ということで、Perl6 のテーマは、より単純に、そして柔軟に、ということらしい。 そして Perl6 は cultureである。文化であるというのだ。
分からん。
Regex は String ではない、という話に結構力が入る。 この思想は確か Ruby でもそうだったが、 そして language の話。 language って何なのさ。 Perl 5 では Language だったものが、Perl6 は language の集合体という位置付けになっているという。 言語といえばもちろんパーサーが重要な処理となってくる。 Perl6 の perser とは何なのかというと、language を継承してアレをコレするのだ。 ごめんよく分からない。 ここで、実際に parser のコードとか見せてくれた。 成程、そうなっているのか(なにが)。 parser が「|」をパラレルに処理して、「||」は逐次処理する、というような話とか、 複数の候補があるときに、一体どこでマッチさせるのかという問題、これもややこしい話だが、 とにかくこのあたりを柔軟に制御したいということがよく分かった。 ような気がする。
要するにPerl6の文化は言語を拡張できるようにする、ということだ。 そのために、Perl の中で language を定義できる、 というような構造に設計したというのである。 何か LISP っぽい。 Perl6 自体、LL というよりも、かなり heavy な感じがしないでもない。
さらに、 演算子をどうやって定義するとか、 空白の処理 (Whitespace dependency) をどうするんだというような話が続く。 例えば foo (1+2)+3 と foo(1+2) + 3 だと、後者は関数呼び出しのように見えるが、というような話である。 例は分かりやすいのだが、 実際にどうやっているのか。
質問コーナー。 「Perl6 で Perl5 のコードは動きますか?」 キター、というかやはり実際にPerlを使ったコードでサイトとか運用している人にとっては、 これ最重要課題だ。 ザックリ言うと、保証はできないらしい。でも基本的には動く、ていうか実際動いているそうだ。
バージョンアップで大規模な仕様変更がある場合、 やはり互換性はどうするのだ、というのが大問題になる。 それを確保しようとする場合、 やり方は2つあって、1つはemulateするという方法。 機能的に変わってしまうような処理は、 古いバージョンの機能も用意しておいて、必要に応じて切り替えるのである。 もう1つは変換して動かす。 つまり、Perl5のコードをPerl6用のコードに translate するような処理を用意してやる。 ただし、Perl6の場合は前者の emulation の方向で考えている、というような話だった。