昨日発生していたサイトログインできない不具合は修正されております(詳細はこちら)

冬至のLINQ、Rx談義

LINQ星人たちがLINQとRx(Reactive Extensions)について語る
3
尾上 雅則 @ugaya40

@okazuki 先輩の方ですね!。僕は働いて負けてるのを受け入れがちです

2010-12-22 12:10:47
neuecc @neuecc

@okazuki @ugaya40 例えばTimerのElapsedイベントにSelectを挟んで変換したのと、通知系のArrivedイベント(最初から所望の形になっている)が、同じに見えるわけですね。前処理でポーリングが隠蔽出来ちゃう。

2010-12-22 12:11:52
かずき(Kazuki Ota) | Cloud Solution Architect at MS @okazuki

@ugaya40 LINQとRXに未来を感じたなら関数型言語とかやるといいかも?

2010-12-22 12:12:58
尾上 雅則 @ugaya40

@okazuki 予定にF#が組み込んであります!

2010-12-22 12:13:31
尾上 雅則 @ugaya40

@neuecc そこら辺の話を詳しく聞くイベントは当然発生します。

2010-12-22 12:14:34
neuecc @neuecc

ちなみに、時間の話は記事が追いついてないだけで!Blogで時間系のメソッドの解説ほとんど出してないもの……。あと、時間軸をしっかり出すことの大事さに気づいたのが近頃という話でもあり。Notion of Timeについては年明け早々にでもしっかりまとめたいところ。

2010-12-22 12:15:10
かずき(Kazuki Ota) | Cloud Solution Architect at MS @okazuki

@ugaya40 Haskellアツいですよ!!純粋な関数型言語。モナドで挫けました

2010-12-22 12:18:24
尾上 雅則 @ugaya40

@neuecc このコードがこうなる!よりもこの問題領域への解決策はこんな感じって資料が個人的には欲しいです。昨日の概念スライドは解りやすかった。実装の方はあまり理解していません。前提知識不足。

2010-12-22 12:19:18
尾上 雅則 @ugaya40

@okazuki 僕にはそちらを選択する理由がありませんw

2010-12-22 12:20:04
neuecc @neuecc

@ugaya40 すみません、どこが疑問なのかよくわからないです。あー、ネットワークを介する場合はポーリングはタイマーで待った後、更に非同期でデータ取りますが、それがRxならSelectManyで平らなシーケンスに変換出来るから通常のイベント通知と同列になる、とか?

2010-12-22 12:20:22
尾上 雅則 @ugaya40

僕にとってプログラミングは最終的に仕事の領域を出ないから、Haskellとかに手を出す気配はないなぁ

2010-12-22 12:20:39
かずき(Kazuki Ota) | Cloud Solution Architect at MS @okazuki

@ugaya40 関数型に染まるにはいいのにー。F#の文法はなれてないせいか、気持ち悪く感じちゃいますー

2010-12-22 12:23:37
尾上 雅則 @ugaya40

@neuecc いや個々の実装は多分きちんと学べばわかるんですが、今まではLINQはなんとなく使えればいいやだったのに、昨日僕が興奮したのはLINQの中に入っていく動機ができたからで。LINQ的なものの領域がコレクション操作だけじゃないという所の概念を詳しく知りたいんです。

2010-12-22 12:24:17
尾上 雅則 @ugaya40

@neuecc たとえばRxがなんでLINQ的な構文なのか理解していなくて、それは昨日聞いたような思想が裏にあると考えれば理解できたので。

2010-12-22 12:25:26
かずき(Kazuki Ota) | Cloud Solution Architect at MS @okazuki

@ugaya40 結局LINQって集合に対する操作でしかないと思う。なにを集合として捉えるかによって色々なものが出来ると思います

2010-12-22 12:27:21
尾上 雅則 @ugaya40

@neuecc ちなみにそこら辺、実装については勉強不足で何言っているか全然分かってないです。今僕はLINQというかRxの動機。しいてはプロジェクト採用時の説明の仕方で悩んでいる感じです。そこの糸口が昨日見えた気がする

2010-12-22 12:28:06
尾上 雅則 @ugaya40

@neuecc LINQはコレクション操作の領域から、そんなに成長しうる思想をはらんでたというのを知らなかったのが今まで意識を向けなかった理由です。RxがLINQっぽいのは偶然だろうと。

2010-12-22 12:29:50
neuecc @neuecc

@ugaya40 個人的にはコレクション操作だと思っているんですよ。一昨日ぐらいのJSの記事では、「無限リスト」であることを強調しましたが、なのでSelectManyといったらRx固有じゃなく、Linq to ObjectsのSelectManyと同じだ、と。

2010-12-22 12:30:56
neuecc @neuecc

@ugaya40 Rxがやっているのはコレクションの定義をイベントや非同期に拡大したことだと思っていて。拡大したから何ができるの、何がメリットなの、という疑念は最もだと思うし、それを上手く説明する手段というのは小さな具体例を重ねるしかないのでは、と。

2010-12-22 12:32:15
かずき(Kazuki Ota) | Cloud Solution Architect at MS @okazuki

個人的にRXのメリットは、ユーザーを待たせないアプリ作るときに必要な非同期処理を少ないコード量で直感的に書けることだと思う。Silverlightのアプリ作るときの課題の一つだったと思う

2010-12-22 12:31:40
尾上 雅則 @ugaya40

@neuecc コレクションとして捉えるなら、それはなにもかも全部コレクションとして捉えられると思うんですよ。しかしコレクションとして捉える事で、解決が容易になる問題領域があるわけで。んじゃ何をコレクションとして捉えれば何が解決するのかが最大の関心事です。

2010-12-22 12:32:20
尾上 雅則 @ugaya40

@neuecc 昨日の@neueccさんの発言「軸が増えた」っていう説明は具体例より訴求力があります。人に説明しやすかった。それにわかりやすいし、考え方の基礎になりますよね。

2010-12-22 12:33:23
neuecc @neuecc

@okazuki 技術の形体は違うんですが、結果的に同じ感じですよねえ。小さな住み分けはあるのですが、大きな意味では相当競合しますよねえ。その辺の差とかっていうのはしっかり追求しないとダメだと思っています。

2010-12-22 12:34:03
++C++; // 管理人: 岩永 @ufcpp

LINQ=データストリーム処理(全般)で、EnumerableとObservableの違いはストリームの作り方。前者は蓄積済みのデータをストリーム的にpull取得、後者は非同期/実時間でpush通知でストリーム受け取る。

2010-12-22 12:36:16