« 2008年07月 | メイン | 2009年05月 »

2008年09月 アーカイブ

2008年09月01日

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 の方向で考えている、というような話だった。

LL Future のきままなレポート (2)

LL Future の 2つ目のセッション。 「LLで未来を発明する」というパネルディスカッションを適当に紹介したい。 出演者は基調講演に続いての出演である、Perl の大御所 Larry Wall氏、 Ruby の作者として有名なまつもとゆきひろ氏、 東北大学の住井英二郎氏、 リトルウィングの藤田善勝氏、 サイボウズ・ラボのひげぽん氏、 そして司会は今泉貴史氏である。

百年後というと壮大な、というか生きていないような気もするのだが、 Question は3つあって、 「1.百年後の言語はどうなっていると思いますか?」 「2. 1のために,あなたは今まで何をしてきましたか?」 「3. 1のために,あなたはこれから何をしますか?」 というのだが、パネラーがこんなの無視してどんどん横道から未知の世界へ飛び出していくから訳が分からない。 もっとも、全然外れているかというとそうでもないのだが、

確か藤田氏のご意見だが、 プログラミング言語には人間の労力を省くという方向性がある、という説。 これは「人間は楽をする」という基本原理を視点にしたもので、そういう点で説得力がある。 つまり今後どんどん人間が楽するような方向にシフトしていくのではないか。 具体的にはメモリの確保と解放、並列処理におけるデバッグ支援など、 プログラマーは今のように意識しなくてもプログラムが書けるようになっていく、 という話だ。 実際、多くのスクリプト言語がこの種のことを実現している訳で、 ということは100年なんて待たなくてもそういう時代は意外と早く来そうな気もするのだが、

100年後のハードウェアとして一体何を想定しているのか、 という話もあったが、これはちょっと難しいというか、 皆さんのイメージは、かなり今のハードウェアに呪われているような感じがしたが、 まあフォンノイマン型コンピュータは不滅です、みたいな?

Larry Wall氏の説だが、100年後(だっけ?)にはこうなるだろうという項目を十数項目列挙して、 それぞれ簡単に説明されていたのだが、 その中に teachable というのがあったのがちょっと面白いかなと思った。 self-defined というのは Perl6 の方向性からも想像できるのだが、 個人的には、 どうせなら self-versionupable みたいな所まで行けば後は楽できそうな気がしないでもない。

じゃあそのために何したか、 という質問が面白かった。 もちろん、Larry氏曰く「Perl作った」 当たり前の質問するなよ、と。 こう書いたらそっけない感じもするけど、 その場ではバカウケだった。 実は Larry氏、意外と面白いのだ。 この日最後の紹介の時には、何かよく分からないけど壇上で体操してたし。 凄い人は何をさせてもスゴイという現実を垣間見た気がする。

まつもと氏。「Ruby作った」 確かに。 しかしそれでは芸がないということで、ちゃんと説明してくれたのが、 「多様性と切磋琢磨」。 新しいものへの関心を持つ人をどんどん出せるような言語にしたいのだとか、 プログラミング言語は楽しいよ、というアピールをしたい、という話。 これは前回の Ruby会議でも力説していたと思う。 確かに Ruby の場合「Ruby でキメると気持ちいい」というスローガンもある位だし、 仰るとおりなのである。 まつもと氏はディスカッションの最後の方で、未来の言語に関して、 抽象度が上がっても下がっても同じように見える言語、 という予想を語ってくれたが、 他の人とはちょっと視点が違っているのが面白い。 もっとも、この点に関してだけ言えば、Perl6 の思想がちょっと似た感じがしないでもないが。

住井氏はプログラミング言語理論の基礎研究、という恐ろしく難しげなテーマに挑戦されている方なのだが、 一言でいえばプログラミングは「抽象化」が本質なのだ、 とそれ一言で済んでしまったら困りそうだが、 深いです、確かに。

その後はもうよく流れが分からないのだが、 関数型言語はどこがいいのか、とか、 エラーメッセージが規格に含まれていないのはおかしいのでは、とか、 そういった話題で盛り上がったのだが、 一つ興味を引いたのが、 プログラミング言語開発者の心構えとして 「ユーザーの時間を奪ってはいけない」という言葉が出てきたことだ。 ここを手を抜くと何千、何万、という人が困る、というのが頭に思い浮かぶというのだ。 もちろん、フレームワークやアプリケーションの開発者も、 これは頭に叩き込んでおくべき心構えだと思う。

もう一つ細かいところで気になったのは、 バグレポートを見て、直して、コミットしようとしたらもう直っていた、という話。 直るのが早いよ、というのは笑い話なのだが、 手順としては無駄があるのでは。 つまり、バグレポートを見て直しの作業に入る前に、 これから直すぞ、というような宣言が出来れば、 他の人は「じゃあ私はこっちに手を入れるか」というような判断ができそうな気もするのだが。 まあでも私も経験あるけど、 オープンなソースに手を入れてコミットするというのは、 それだけでも結構面倒なんですよね。

開発製品

jirologos.gif

About 2008年09月

2008年09月にブログ「三田ブログ」に投稿されたすべてのエントリです。新しい順に並んでいます。

前のアーカイブは2008年07月です。

次のアーカイブは2009年05月です。

他にも多くのエントリがあります。メインページアーカイブページも見てください。

Powered by
Movable Type