2009年度言語雑談会

なんか例年あるよくわからない雑談会を id:kmizushima さんが主催してくれました。最初は6人とかだったけど今年は15人とかいたらしい。

私は最近うなされがちなメモリがどうこうという話をしてみました。言語機能の紹介とかじゃなくて俺の欲しい機能を喋るだけでかつ要求は自分でもきちんと言語化できてない感じなのでアレなのですが。

http://shinh.skr.jp/dat_dir/memori/000.html

id:ytqwerty さんによるとそれほとんど Ada でできるよとのこと。私の理解が正しければ、初期化時に特殊な方法で渡した実行時パラメータを使って構造体のレイアウトを自由にいじれる感じなんだと思う。私の要求のうち初期化以降にメモリをいじらない系はだいたいいけそう。 Ada はあの文法さえなければいい子そうだよなぁと思ったのは何度目だろうか。

あとまぁ一つ一つはあの言語ならこれはできるーとかあるのはたぶんそうで、私が知ってる言語だと特に D は割とかなりなんでもできちゃうと思う。ただメモリ読み書きを全部フックしたいってのは色んな用途で結構色々あると思うので、まぁそもそもそのへん統一的な枠組のサポートが言語側からあってもいいんじゃないかなぁとかそういう妄想でした。

最後の __user とか NUMA とかはまぁどうでもよくて、むしろそういう部分はプログラムを書く時に意識を置くべきところな気がするので、完全に隠蔽しちゃうのはスジが悪いような気がしたので、元々適当に書いたスライドとはいえひどいので 12 ページ目は撤回ということで。

そういえば __attribute__((address_space(0))) は別に GCC の attribute じゃないみたいだ。 sparse というのを使うらしい。 GCC にあってもいいんじゃないか。

http://blog.kmckk.com/archives/2163662.html

会自体は雑談タイムが多い感じで、よかったと思う。もうちょっと発表あってもよかったかなーとは思ったけど。こういうのは、あまり重い発表があるより細かい発表が散発的にある感じが良さそうだなぁ。全体的に並列がどうこう雑談してる時間が多かったように思う。ささださんが言ってたタスクキューってどう実装するの? って話は深く考えたことなかったけどたしかに面白そうだなぁと思った。今度なんか読もうと思う。

あとはえーと kinaba さんの D 発表はそうなってるんだーというのが結構あって全然追ってないことがわかった。同じく kinaba さんの Prolog で SAT 解くやつがすごかった。

そういえばこう Amazon EC2 みたいなそういうクラスタ貸し出し業ってまぁあるわけだけど、 SAT は並列性普通に高いとのことなんで、 SAT を解くだけのサービス業とかあってもいいのかなーとか少し思った。

あとなんか前も思ったかもしれないけど、もう言語とかどうでもいいとか言ってるけど以外とまだどうでも良くないのかもなぁとかも思った。

最近自分の主張を忘れることが多くて困るなぁと思った。それについてはちょっと前に考えたんだけどその時の俺結論はなんだっけ…みたいなことを思うことが多い。結論だけは覚えてるんだけどなんでそう思ったかを忘れてる的なこともある。

でまぁ今日思い出した俺主張のいくつかをメモっておこう。別に詳しくもないものばっかりなのでウソ書いたらすいません。

プログラム言語による並列化へのサポートとして嬉しいものは何か: チャンネルとタスクキュー。難しいスレッドプログラムって同じプログラムがたくさん動く時じゃなくて、全然性質が違うものがあれこれ動いてる時なので、 race の機会を圧倒的に減らしてくれるチャンネルは本当に偉いと思う。よく知らないけど、並列データ構造とかは割とどうでもいいんじゃないかな。あってもいいと思うけど、タスクキューあれば誰でも書けるんじゃないかな。そのへん考えてる暇があればデバッグ手法について考えて欲しい。とりあえず全ての thread API は thread 名を引数に取るべき。

GPGPU: 知らんけど用途なさすぎね?

STM: race 起きてたら遅くなるって落ちるよりタチ悪くね? まぁ十分に富豪的であるという前提があるならいいけど。あと、コード書く時の意識として、そもそも race 起きそうなコードってのはなるべく書いちゃいけないって話がある。 race 避けてりゃ自然とモジュールの依存関係が疎になって見通しのいいコードになる(かつ並列化してるんならたぶん速くなる)と思うので、 race を勝手にもみ消しちゃうってのはちょっとどうなのかなーとかいう。

sed が好き: なんで好きかっていうとやれることができるギリギリっていうのもあるけど、正規表現が好きで好きでしょうがないというのが一番の理由だったと思いだした。

ゴルフで問題を部品に分解して組んでいくことができない: ゴルフ以外というか普通にプログラム解く時は当然できるということを言い忘れた。一般的に optimization ってのは global にやればやるほど圧倒的に大変になるけど、しかし成果物は少し良くなるって意識が強いんだよなぁ。

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