ブックマーク / keens.github.io (5)

  • async/awaitと合成可能性 | κeenのHappy Hacκing Blog

    κeenです。async/awaitって実装の都合と利便性の良い所取ってるよなーと常々思ってるのを言語化してインターネットに放流します。 何度か似たようなことを言ってるのですがスライドであることが多くてあまり情報量を詰め込めなかったのでブログにまとめます。 非同期処理と継続 非同期処理は時間のかかる処理を待ち合わせずに別の処理をし、時間のかかる処理が終わってから元の処理を継続する仕組みです。 let url = "http://example.com" let html = fetch url (* この結果を待たずに別の計算をする *) (* fetch urlが終わったあとでここに戻ってきて後続の処理をする *) print html 「継続」や「後続」などのキーワードが出てきているとおり、継続の影がチラチラ見えます。 継続とはいってもスレッドのようなタスク単位で分割したいのでフルの継

    async/awaitと合成可能性 | κeenのHappy Hacκing Blog
    soy-curd
    soy-curd 2019/02/11
    ここらへんの知識を体系的に学べる本があったら知りたい
  • オブジェクト指向言語と関数型言語 | κeenのHappy Hacκing Blog

    === # 手続き的(自然言語) ------------------------- 入力: `array` - 配列, `n` - 配列の長さ 出力: `array`の要素の合計 1. `sum = 0`, `i=0` とする 2. もし`i` が`n`未満なら4へ飛ぶ 3. 7へ飛ぶ 4. `sum`に`array`の`i`番目を足したものを`sum`に代入 5. `i`をインクリメント 6. 2へ飛ぶ 7. `sum`を返す === # 手続き的(C言語) ---------------- ``` c int procedual_sum(const int array[], size_t n) { int sum = 0; for(size_t i = 0; i < n; i++) { sum += array[i]; } return sum; } ``` === # OOP的発想

    soy-curd
    soy-curd 2018/06/13
    OOPとFPの概観。わかりやすい
  • 非同期とノンブロッキングとあと何か | κeenのHappy Hacκing Blog

    κeenです。最近同期/非同期、ブロッキング/ノンブロッキング、直接形式/継続渡し形式あたりが混乱してきたので個人的に整理します。 あくまで私個人の理解を纏めただけなので誤謬などに注意して下さい。 追記: @tanaka_akrさんから指摘されたのですが、用語の説明が間違っていそうだったので書き直しました。 diffはこちら 非同期とノンブロッキングはよく混同されます。また、非同期処理の記述形式として直接形式や継続渡し形式などがあります。 私自身違う言葉だなとは思いつつも混同したり違いを忘れたりしています。 非同期もノンブロッキングもナイーブなIOに比べると速い方式だな程度の理解でいてそんなに困らないと思ってますし混同や誤用に目くじらを立てるつもりもありません。 しかしながら3者を区別しないと意味を成さない文脈で3者を混同している技術を何度か見掛けたので(自分の中で)整理しようと思ったのが

    非同期とノンブロッキングとあと何か | κeenのHappy Hacκing Blog
    soy-curd
    soy-curd 2018/06/13
    “直接形式は(限定)継続がプログラムには陽には現れず、コンパイラが頑張るかコルーチンなどの言語機能、async/await、do、forなどの構文を用いて実現されます。 継続渡し形式(CPS)はプログラマが陽に(限定)継続を渡す
  • オーディナルの話とカーディナルの話 | κeenのHappy Hacκing Blog

    soy-curd
    soy-curd 2017/04/05
  • 関数型プログラマからみたRust | κeenのHappy Hacκing Blog

    C++からRustに入った人あたりから「関数型言語から来た人のRustの感想を知りたい」とたまに言われるのでいつかブログ書こうか。 — κeen (@blackenedgold) 2017年4月3日 イントロ 私はRustをやる前にはCommon LispやSMLを主に使っていましたが、仕事ではScalaを使っていましたし他にもOCamlやSchemeやClojureやATS2やHaskellなどを書くこともありました。 私を含めた多くの関数型言語経験者人が一度は Rust for functional programmers を読んだことがあるかと思います。 このように関数型言語と比較して書かれるといかにも似た言語に見えるので私は興味を持ちました。そこで私は実際にRustに触れ始めたのです。 構文 let があるのでおよそOCamlなどに似ているという印象を受けました。 デフォルトでイミ

    関数型プログラマからみたRust | κeenのHappy Hacκing Blog
    soy-curd
    soy-curd 2017/04/05
    関数型プログラムで永遠のテーマだった分割コンパイルをするとインライン化が妨げられるが全プログラムコンパイルをするとコンパイル時間が掛かりすぎるという問題
  • 1