言語雑談会2006

なぜか shinh さんにお誘いいただいて言語雑談会2006に行ってきました.っていうか行ってました.これ書くのに何日かかっているんだよ,俺,ってゆ〜.
NumerleNemerle 良いなぁ.あのレベルの metaprogramming 能力ふつーに欲しいよなぁ, metaprogramming であの強力なライブラリ資産が使えるのはうらやましい.あと,コンパイルが遅いのが (C++ 使っている人間としては) 重要.以降,「C++ コンパイル遅いよ」「何言ってるんですか, NumerleNemerle より断然速いですよ」という会話が成立します.ちなみにこれは「このビルド遅いよ」「何言ってるんですか, GHC のビルドより断然速いですよ」の系.
せっかくなので C++ のネタを用意しようと

  • template metaprogramming における参照透過性を破って,かつ template metaprogramming で C++ の型宣言をパースして,最終的にそれらを組み合わせて型を明示せずに自動変数の宣言をするよテクニック (ただし規格違反でした,というオチ付)
  • Move Semantics
  • C++0x での concept の紹介.みんな concept があるとコンパイルエラーが少なくて済むって認識で止まっているけれど,むしろそれはオードブルで,メインディッシュは concept maps だよ

あたりのネタ候補から,他の言語使っている人からも面白げでかつ実際に動くものが良いなぁっていうことで最終的に concept / concept maps の話を選んででっち上げたけれど,準備が完全に不備だっというか,ぶっちゃけ発表が大失敗 o...rz 死にたい.みなさんすいません.
しかし,他の言語をちゃんと知っている方々から見て concept maps がどういう位置づけになるのかの意見をお聞きすることができたのは貴重だった. classbox とかはちょっと真剣に調べましょうとか,次のステップの方向性が見えた.しかしやっぱり「これだっ!」とぴったり対応する (他言語での) 概念はどうもなさげな感じなのかなぁ?
nominal と structural というキーワードをみずしまさんに指摘していただいたけれど,これ確か C++0x での concept 提案の1つの争点だったはずなのに……色々聞いておく最高の機会だったのに何あわわわとかてんぱってんだよ俺 orz.
「std::sort がなんで RandomAccess を要求するのか?」っていう疑問にあわわわだったのにも大後悔.昔,確かこの問題提起をどっか (wlog だったよ〜な気がする) で見て,「あとでちゃんと考えるスタック」に積んどいたのは良かったけれど,後から後からそのスタックの上に他の事項が積まれていって底のほうに沈んだまま忘却の彼方でした orz.
ここで書いていることは monad じゃなくて monoid で良いよねっていう shelarcy さんの指摘はまったくごもっともっていうか,今後 monad とかは使用する文脈を決して間違えないように,ちょっと真剣に修行するまで封印.
move semantics については色々熱くっていうか篤く語った気がしますが,あまりに説明がへたくそで k.inaba さんとかに逐一フォロー入れていただいていた気がします orz.
あと,みんなが 01 な話で盛り上がっているのを見聞きして,自分も真剣に 01 な世界に足突っ込もうかな,あ,いや,やっぱりどうだろう,みたいな.少なくとも Ruby のコードが吐くばいにゃりが予測できるってささださんがゆってたし, C++ のコードが吐くばいにゃりくらいは予測できるようになりたいですねぇ,あ,いや,やっぱりどうだろう,みたいな.
あと, D は (少なくとも議論を追うだけなら) 面白そう,あ,いや,やっぱりどうだろう,みたいな.
あと,ささださんに言われたことは真剣に検討しましょう.「それ Google で」メソッドが発動する前に.>俺
もうないか?まだある?
そうそう,言語ドンパチ云々は自分の専門分野からのアプローチでなんか面白いものできるかも知れないにゃーとか思った.いろいろごにょごにょして「言語ドンパチっぽいドキュメント」だけフィルタするとか.対象ユーザ層は言語設計者,言語愛好者,あと shinh さん.
そんなこんなで全体的に極度に orz が多め.
っていうか shinh さん他みなさん本当にありがとうございました.