最近興味あること

自分のメモも兼ねてプログラミング関連で最近興味のあること。

Reactive Programming

略してRP。次の解説が分かりやすい: やさしいFunctional reactive programming(概要編)ウィキペディア英語版にも記事がある: http://en.wikipedia.org/wiki/Reactive_programming

例えば次の擬似コード:

display seconds

と書くと、画面にエポック秒が表示されて、それが毎秒更新されていく。

display mouse.x

と書くと、画面にマウスのX軸上の位置が表示されて、それがマウスを動かす度に更新されていく。ここで

var x = seconds / 10 + mouse.x * 10
display x

みたいなこともできる。こうすると、マウスの動き(UI)と時間の変化によって、刻々とアウトプットが変化していくことになる。

もちろん、実用的にするためにはもっと複雑なコーディングが必要だが、ゲームとかが、より直感的にかけるのではないだろうか*1。うーん… イメージが伝わっているかな?

RPを実現する言語・環境・ライブラリにはいろいろあるみたいだけど、四つピックアップ:

とりあえず、FrTimeをちょっといじって見ようと思う。描画ライブラリが最初から統合されていて、それを使ったデモが提供されているのがうれしい。

プログラミング言語Qi

Lisp系の言語で、オプションで型チェックを付けられる。よく分かっていないけど、その型システムがとても強力かつ独特。{(x, y)|x ∈ N, y ∈ N, x < y}といった集合を型として容易に定義できるみたい。依存型も作れる。

ただ、型システムが強力すぎて、型推論はできない? まぁ、型推論をさせようとすると、容易に「推論が無限ループ」なことがおきそうだけど*2

*1:FrTimeのデモにはテトリスが含まれている。

*2:ただ、型推論が終わらない危険性はHaskellGHCの仕様では慎重に避けられているようだけど、専用開発環境でもって「あー、この辺の型推論で無限ループ中です」というヒントがプログラマに出せるなら、そう深刻でもないのでは?という気がする。