PEG party

なんかよくわからんけどタイミングが良かったので PEG 意見交換会とかいうのに場違いながら混ぜていただきました。タイミングが良かったというのは ECMAScript => YARV とかでコンパイラ書いたらどんな感じかなぁとか思って PEG とかたまに聞くから調べてみようと思ったら調べてみようと思ってたらなんか会があるとかなんとか。

で行ってみたらみなさん大変素晴らしくてつまり賢いなぁとか。ただ PEG に未来があるのかは正直わからんかった。構文解析としては yacc じゃこれができねえぜ!っていうファンシーでバズワードな何かが流行る必要があって、正規表現の代替としても再帰が絶対必要なシーン (html の innerHTML 相当を正規表現で取ってこれると嬉しいとか)の羅列と id:ku-ma-me さんがおっしゃってるようにファンシーなリテラルが無いとだめかなぁ的な。

あとまぁ個人的にはパーサとかそんなに興味無いんだなぁとか理解したとかいう。正規表現は最強でムダの無い表現力を持つ言語の一つだと思ってるだけにその代替とかは結構気になるんだけど。

あと ECMA=>YARV はこう、

 f = function() {}
 g = function() {}
 (hoge ? f : g) ();

みたいなのは f と g をクロージャにして

 send :hoge
 branchunless :b
 send :f
 jump :e
:b
 send :g
:e
 send :call

とかいう感じに Proc#call 呼ぶしか無いのかなぁとか思ってもういいかと思った。気持ち的には

 send :hoge
 branchunless :b
 putobject :f
 jump :e
:b
 putobject :g
:e
 sendstacktop

とかになるといいんだけどなーという。 Ruby 的には全然欲しくない命令なんだろうけど。なんというか VM の設計って当たり前だけど案外言語に依存するよなーとか。

そんなことはまぁたぶんどうでもよくて id:amachang さんが割と本気でこの世のアプリケーションがどんどんサーバ+ブラウザになって、 JS が天下になったような時代が 1. 来るか 2. 来たとしてどうなるか 3. 来ないならその理由は などについて、そういう時代を好意的に捉えて話しておられたのが大変印象的でした。

私個人としては JS 天下になるとかは CPU がそれなりに連続的に速くなれば正味ありえない話ではないのかなぁ…とか思いはするのですが、まぁ先のこととかよくわからんです。でもこう、激しくそんな世界にはなって欲しくないとは確実に思うのですが、「Web アプリしか無い時代」の何がイヤか、という点についてはあまり明確な理由は無くてウヒョーな感じでした。

とりあえず JS 速度遅いというのが今も w3m 使い続ける理由なのですが、 CPU がすんごく速くなったらその限りではないし、キーカスタマイズとかあんままともにできないとかも Greasemonkey みたいなんがもっと洗練されて速くなれば問題無い気もする。あと「プライベートな情報サーバに置くなんて!」みたいな話はそもそも私は個人的にあんまりそういうの気にしないしなぁ的な。

結局イヤなのは電子の妖精さん作ったマシンの上でメモリ読んで opcode バラしてどうとかほうとか、っていう話が他の人とできんくなるのがイヤとかそういう感じなのかなぁという。

全然パーサ関係ないですね。ごめんなさい。そういえばバイナリパーサが欲しいとずっと思ってるのでした。 TODO: 1年前くらいとかにほげってたほげを置く。

追記:

私は別にどうでもいいやー、と切り捨てたんですがセキュリティの話も herumiさん の話が大変面白かったのでした。サーバになんでもデータ置く時代になるなら、通信路だけじゃなくてサーバに置かれたデータも暗号化しないといかんよねー、でもサーバに置かれたデータが完全に暗号化されちゃってたらピンポイントの検索とかできんくなるよね、っていう話で、理想は暗号化されたクエリ投げて暗号化されたデータの欲しいとこだけ返すっていう世界だけど、暗号化+ダミーがくっついたクエリ投げて暗号化されたゴミ入りデータが返されて、それをクライアントサイドで大事な部分だけフィルタするできるといいとか、そういう研究があるとかなんとか。

なんでもクライアントが x 持っててサーバが a と b 持ってて、双方その数値を教えずに e^(ax+b) が求められるプロトコルがあるとかなんとか。

あとわざわざ筑波から主催?のみずしまさんや会場貸してくださったサイボウズラボさんありがとうございましたという。

なにかあれば下記メールアドレスへ。
shinichiro.hamaji _at_ gmail.com
shinichiro.h