[関数型]プロミスとコールバックの比較記事


藪下@2課の言語オタです。

 一週間以上投稿がないのも何なのでちょっと会社業務となかなか関係ないお話ですがポストします。
 Twitterを眺めていたら面白い話が流れてたのでご紹介を。

命令型のコールバック、関数型のプロミス: Node が逸した最大の機会
https://gist.github.com/okapies/5354929

 Node.jsの設計を元にコールバック型のAPI設定とプロミス型のAPI設計について論じてます。
 コールバック型のAPI設計は非同期プログラミングの文脈で難しく非宣言的であり、関数型言語が備えているプロミスと言う仕組みは宣言的なプログラミングを可能にしてその難しさを解決してくれると言うのが要旨なのかな。

 藪下はあまり関数型言語に詳しくないのでプロミスについて語れるほどの何かを持っていませんが、このプログラミングスタイル自体はWindows向けの世界でも触れる事があります。
 例えばWinRTによくあるAsyncがついたメソッド群はIAsyncActionを返す物を除いて返り値を表すのに非同期で値が設定されるオブジェクトを返します。直ちに値が必要な場合はawaitしたりしますが、そうでない場合返ってきたオブジェクトを必要とするところまで伝播しますね。
 ここらへんが参考になるでしょうか。

PPL を使用した C++ での非同期プログラミング
http://msdn.microsoft.com/ja-jp/magazine/hh781020.aspx

 こういった遅延評価とか継続的な発想は割りと古い概念なんですが現実のプログラミングに現れるようになって来てちょっとワクワクします。

 弊社は組み込み系の業務が多い会社なので割りとプログラミングのパラダイムは古い事が多いですが、組み込み系はマルチチップで非同期に計算が行われる世界を扱うことも多いのでこういった理論は抑えておくとどこかで役立つかもですね。
 とまあ記事の紹介だけですが新しい方法論に触れてワクワクしてみるのもいいんじゃないでしょうか。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <img localsrc="" alt="">