”命令型のコールバック、関数型のプロミス”への反応(とその後)
@okapies プロミスにいいところがあるのはわかりますが、トレードオフを取り上げることなく「命令型より関数型」というだけで「コールバックを選んだのは最大のミス」なんて釣り的なこと書いちゃった原著者は悪い意味でナイーブなのか本物の釣り師なのか。。。 という感じで印象悪いです。
2013-04-13 03:09:42@koichik 英語圏の関数型コミュには、何事にもそういう感じのモヒカンな一党がいるようですねー。プラクティカルな立場の人達としょっちゅう軋轢を起こしていて、私もあまり好きではないです。まぁ、少なくともあの記事は実務的な理由を丁寧に説いてて良いなー、と思った次第。
2013-04-13 11:35:58訳者の意見
プロミスの記事をレビューしてくれたJS使いの友人曰く、Nodeの作者さんが日本で講演した時に、質疑応答で「コールバック地獄を何とかする予定は?」と問われて曰く、「コールバック使えばいいじゃん(笑)」という反応だったらしい。 #nodejs_jp
2013-04-12 00:08:46で、「コールバックの学習コストの安さは魅力的」「それが本来支払うべきコストを先延ばしているだけだとしても、大抵のユーザにとって問題ではないのだろう」とかいう話をした。 #nodejs_jp
2013-04-12 00:16:11静的型 vs 動的型の時も出てた話だけど、コストの支払いを猶予できる仕組みは、初学者に易しいだけでなくプロトタイピング等でも有用な性質なのだ、というのはよく分かる。 #nodejs_jp
2013-04-12 00:20:10ただ、さっきの友人曰く「そもそも、非同期プログラミングってかなり難しい代物ではなかったか?」と。あるサービスを作った時に、コールバックにはかなり苦労したとか。猶予されたコストの支払期限がわりとすぐ来るのだとすると、メリットがコストに見合わない場合もありそう。 #nodejs_jp
2013-04-12 00:26:18個人的には、一旦は問題に対するコストの割り当てを先延ばしつつ、追加作業無しで「猶予されている負債」の管理と可視化が自動的に行われるような仕組みが欲しい。言語やフレームワークレベルでもそうだし、それ以外の仕事でも。
2013-04-12 00:36:52そして、新たな火種が…
プロミスを圏論でもっとモジュラーかつ正しくしようよ〜というHaskeller氏(Royの作者)がJSerとバトッてる。 面白いけど長い! https://t.co/a3w4lhf3tQ
2013-04-12 11:50:22経緯
- 元記事を受けて、Brian McKenna (@puffnfresh) 氏が自身のブログで Promises/A+ の現在の仕様を批判し、API をモナドに適合させるべきだと主張。
- Brian 氏の記事を受けて、Promises/A+ プロジェクトの Issue において、”Promise を作る関数 (point) の導入” と ”then(f) からエラー系を取り除いて onRejected(f) へ移す”という2つの仕様変更が提案される。
- プロジェクト関係者の @domenic 氏から、”型付き言語のファンタジーの国(typed-language fantasy land)のもので現実を無視してる” とか ”一部の人の美的嗜好を満足させるために厄介で有用でないAPIは適用できない” とか散々なコメントがついて即行でリジェクトされる。
- Brian 氏本人が降臨。大炎上。
- 喧々諤々の議論の末、Brian 氏が仕様をフォークした "Fantasy Land" を建設。
Introducing "Fantasy Land" for JavaScript: https://t.co/Hjm8SJsgUI
2013-04-12 12:13:20例の Fantasy Land のやつは、一次的には「モナド」という単語を一切出さずにメリットを説明できないと厳しいんでないかなーと。まー、色んな意味で試金石になりそうな感じがするので成り行きに注目。
2013-04-13 11:47:05ぶっちゃけ、目的がはっきりしてるならこっちのが分かりやすいな・・・w http://t.co/HZ4jV2RJal #javascript
2013-04-13 12:59:42