FLTV で、 『レトリカルプログラミング』(副題: 真・自然言語プログラミング)と題して発表してきました: 発表スライド。
未来の言語…と言われて、いつもしているような言語機能妄想をバラバラと語ればよいのかなー と思って途中まで発表ネタを組んでたのですが、 やっぱり一本スジが通ってる方が面白いだろうということで、一つ軸を通しました。 テーマは「日本語や英語をプログラミング言語と見なしてみると、 実はヤツらはとてもパワフルで凄いので未来の言語は是非パクるべき」。
スライドでは私の思う具体例を3つほど挙げてるんですが、 まあそれはあくまで例でして、伝えたかったのは 「ちょっとみなさん自然言語からプログラミング的な『機能』を探すという考え方をしてみると面白いかもですよ?」 という軸そのものの方です。きっとあの3つの他にも色々あるはず。 ネタ元は、 今年のPOPLの招待講演 "Wild Control Operators" での質疑応答 (1) (2) (3) (4) (5) でした。この質疑応答は目から鱗だったので、自分なりの形でブロードキャストしたくなった、という感じです。
ranhaさんの発表を聞いてまっさきに連想したのが tomekの解き方 : "1. 問題を数式で形式化" でした。世界で5本の指に入るTopCoderが思考の構造化手段として使うのは、数式。 ただ ranha さんはそんな"できる"人のことは聞いてないよーということだと思うので、 どうすればいいんですかね。 /// hogelog さんのは"GC屋さんの生息地の変化"がなんかすごい個人的に受けた。 /// takano32 さんの言語間透過性という構想は必要だろうなーというのはとても共感する。 ただそこで、コードとコードの相互変換という方向はうまくいかないような気がして、 実際発表や議論もそっちの方向にやや進んでいたような気が勝手にしているんですが、 埋め込み asm や unbabel や…の形でデータとデータの相互変換を実現することになるのかも的な感想が。 /// 道化師さんの発表は、「厳密性との決別」のところで、これも今年のPOPLなんですけど、 Martin Rinard の言ってた "現代のソフトはバグが少なすぎる" という逆説をちょっと連想しました。 全域にバグゼロを求めるスタイルは大変すぎてそのうち破綻する。 具体的な機能提案の方は、あらゆるフェーズでの可視化はこれも欲しいなーというのは共感。 問題は実装…。型修飾に関する機能面は、なにか Ada や Eiffel のような言語にヒントがありそうな気がする (注: よく知らないで言っている)。 /// niha さんのは、template はそれはそれとして generics っぽいのも要るんですよ!!! というのは同感なので同感です。
かなり後半から参加したので最初の方の発表は聞けてません。残念無念。
は、すみません、なんかひたすら ゴルフ してました。約数の和を求めるコードを最短バイト数で書け、という問題なんですが、 「素因数分解して ΠΣ(p^i) で求めるプログラムを書く」 → 「かなりの時間必死に縮めてようやくパー到達」 → 「この問題レベル高すぎwww」 → 「って、せいぜい5桁の数しかこないなら普通にi=1~n全部の数を約数かどうか試せばいいじゃん」 → 「whileとforとrefを使ったまったくOCamlらしからぬコードで105B」 → 「タイムアウトする…。"約数ならiを、そうでなければ0を足す"を約数ならiを足す、 だけになるように変えたら通った。109B」 →→→全然縮まないで当日→→→ 「let recつかってrefもないOCaml的なコードに変えてみる」 → 「意外と縮んで109Bの壁を突破!」 → 「今度はタイムアウトはi=1~n/2まで足して最後にnを別に足す方式で回避」 → 「kskさんのゴルフ講座を聞いて1B縮んだ」 →→→全然縮まないで締め切り30分前→→→ → 「オプショナル引数というものを使ってみるとどうだろうか」 → 「縮みまくった!すげえ!」 という感じで終了直前にトップタイに滑り込み。 これに50時間早くたどりつくトップの m.ukai さんは凄すぎる…。
『ブログを書いている人が FriendFeed を始めるべき7つの理由』
の 1 番がなるほどなーと思ったので、始めてみました。
→ http://friendfeed.com/kinaba
実は何するためのサービスなのかよくわかってないので、とにかくフィードまとめ用ということで。
ついでなので、一応本気で別名義で活動しようと思って始めたはずなのに開始3日くらいでバレてどうも gdgd
な感じになったりならなかったりしてた
id:hzkr さんと
id:cafelier さんも、
この際なので正式に束ねておいてあります。
OCaml Meeting のコンペ用問題 と Code Golf 1年間新問題が出なかったよ記念問題 の両方に苦戦してます。 OCaml の方は 109B で並んでいる面々の Statistics が同じなので多分同じコードで、 そこから上はガラリと違うので、なにか発想の転換がいるんですよね。 なんだろう…。締め切りまでにここの壁は越えたい。 Code Golf の方は要するに gunzip をライブラリ使わずに最短バイト数で実装せよ、という面倒くさい問題。 昔とった杵柄で gzip のアルゴリズムは把握しているので、わけもわからずどこかのサンプルコードを書き写して縮めた SHA256実装問題 とは違って自分としては楽なのですが、 しかしトップの shinh さんに100バイトという大差が…。どうすればいいのこれ。
明日はその OCaml Meeting Tokyo 2009 から Future Language TV にハシゴする予定です。 ちょうど自宅とOCaml会場の中間辺りに投票所があるらしいので、選挙も行けそう。 FLTV の方では発表もするらしいので頑張ろう。
先週は セキュリティ&プログラミングキャンプ 2009 というものに講師として行ってました。 Ruby処理系をハックする組のお手伝いです。 パーサを変えて便利な演算子や予約語を増やす人、 コンパイラを変えてifの分岐に応じてピーポー音が鳴るRubyを作る人、 オプション追加してmake時に決まる内部定数を起動時にカスタマイズできるようにする人、 ミニ言語ゼロから作って全容把握を目指す人、 GCのメモリ管理に手を加えて効率改善を目指す人、 ベンチマークのプロファイルとって実際にRubyのボトルネックを改善しちゃう人、 どれも見てて楽しかったです。
期間中何度も、最後の挨拶のときにも口走ってたのですけど、講師とかいいながら、その実、 参加者の方々に勉強させてもらいました。BoFの間の議論にしても、 課題をやってる間の会話にしても、最後の発表にしても。何度もなるほどなあ、と思わされてしまった。 本当すごいので今後も頑張って下さい。私も負けないように頑張ります、という気分になりました。
あとは…言語組リーダーの 笹田さん に、 なんかRuby関係なく面白い話しろと振られたので、時間いただいて好き勝手しゃべってきました。 資料 → [pptx] [pdf]。 中身(とタイトル)に関しては、専門家の皆様からは100も1000も突っ込みたいところがあると思いますので、 突っ込みエントリあげまくっていただけるとありがたいです。 余談で話した Session Type や Resource Usage や Regular Expression Type のようなわかりやすくファンキーな型の話の方がウケてた気がするので、 そういうの紹介メインの方が面白かったのかなーとか思いつつ。