Humanity

Edit the world by your favorite way

リアクティブプログラミング

やばい。
関数型もリアクティブプログラミングもこれまでプログラマが書かなきゃいけないとこをコンパイラがやってくれるみたいな、
それがもともと目的なのか副次的効果かはわかりませんがとにかくそういう効果があって、
プログラマが書かなきゃいけないとこを副作用なしで書くことで最適化が可能になるとか
型推論とか、あと、なんかまぁ、いろいろ...(目そらし


なぜリアクティブプログラミングは重要か。 - Conceptual Contexture


pokarimさんの記事、ちょっと前にブクマしてふーんみたいな感じだったのですが、
読み返してみてかなりヤバイことに気付きました。
何がヤバイって俺の日本語がヤバイ。再構成する気力がない。
twitterみたいに適当に言いたいことだけちょろちょろ言ってく。
twitterよりかはブログに書いておきたい。


リアクティブプログラミングで人類がポインタに打ち勝ったと言ってもいい。
どうも俺の中でそういうことになってるらしい。
自分が上の記事を最初見た時はオブジェクトのプロパティ変化させていって
オブジェクト経由で(ゲッターで)取得するのとどう違うのかよく分からなかったのですが
普通に考えてオブジェクト用意してゲッター追加してってめんどいだろうと。


もうゲッターセッターとか作るのめんどいのでScalaみたく関数と変数の区別なく
「値を取得する」みたいなのを書けないかなーと考えていて、
同じ両方を同じ記法で書ければ関数にしてもうちょっとアレコレしてから値返すよ、みたいにしたい。
いやそれはまぁゲッター書けばいいしゲッターはJavaだったらeclipseに自動生成させればいいじゃんっていう話もあるみたいですが自分には余計に見えちゃうんですよね。
何もしないんだったらゲッターとか自動生成してほしい。まぁLLだったらそういうのはできますが、もっとこう、なんかプロパティ追加したら自動的に、なノリで。
JavaだったらBeans向にゲッターセッター自動生成するアノテーションライブラリあった気がするな。うーん


めんどいめんどいしか言ってないのでなぜ自分がpokarimさんの記事に心惹かれたのかと言うと、
もともとキー入力、マウスクリック、etc.などのイベント駆動で動くエディタを考えていて、イベント駆動までいかなくともキー入力、マウスクリックなどを一緒くたにして扱いたいという野望があったのでした。
あと「時間が刻一刻と変わるパラメータである」と時間のことについても触れており、このブログでもtwitterでも自分が時間というものに興味を持ってることを知ってる人…はいないでしょうが、まぁ非常に興味がありました。
これはもしかしてpokarimさんのエントリを見て言葉が心に引っかかっていたからなのかもしれません。いつから心に引っかかっていたかは分かりませんが。
まぁ、そんな感じでタイムリーだったというのが主な理由でしょうか(えー


もともとコールバックというものに強く心惹かれていた時期があり、なぜかと言えば「必要な時に呼び出してくれる」というlazyなところに惹かれてたり。(これをlazyと言うのは関数型の方たちから怒られるかもしれませんが)
あと関数を自分で呼び出さずに登録しておく、みたいなのが面白かったのもあるかも。
なんで全部コールバックありきなプログラミング言語を!!とか考えてたけど
Node.jsでコールバックスパゲティどうの言われて厨二病も影をひそめました。まぁ確かに多用すれば見づらいですよね。


リアクティブキャッシュ、みたいなライブラリ作りたいなぁ。vimスクリプトで。え?
なんか他の言語でもリアクティブプログラミングフレームワークみたいなのあるみたいだし。
キャッシュをどうにかして複雑さを排除しながら書くか考えてましたが、
こう書けばよかったのですね、と新たな信仰を得た感じ。
既存の言語でパラダイムをサポートするのが難しいためにフレームワーク的なアレ作るかってノリになるんでしょうが、関数型いいかげんきちっとやりたい。
SchemeとかCommon Lisp(本買ってあまりやってない)ちょろっとやってなんか得た感じはあるものの結局他の関数型言語には手を出してない。
はすけりたいって何年前から言ってるんだろう。


まぁ興奮してつい頭悪そうなエントリ書いてみました、と。
最近新しい言語に手を出さず停滞してるのでHaskellやりたい。
自分自身をfork(2)して平行して学習とアウトプットを続けたいとかよく思います。最近。