この一連のツイートについて話をした。
https://notgull.net/why-not-threads/
— Hideyuki Tanaka (@tanakh) March 28, 2024
スレッドはasync/awaitよりも単純だし、async/awaitでできることはスレッドでもできるのに、なんでわざわざ複雑なものを選ぶ必要があるのか?というRustコニュニティーでもよく見かける質問に対するわかりやすい解説記事
スレッドとasync/awaitについては何となく違うものがあるなぁというくらいにしか認識していなかったけど、明確に違うもの。async/awaitについては、C10K問題を解決したものとして認識されているが、その意義はモジュールとして部品として扱えることにあって、semanticな観点から論じるべきだとのこと。
この話で、IaCに取り組んでいる、チェシャ猫さんの発表資料を連想した。ここの資料ではIaCの技術群を、Mutable/Immutable、Local/Globalの2軸で整理していて、ここの違いがいまいち分からんという話になった。Mutableは変更が蓄積されて、Globalは全体に影響する。Mutable&Localなansibleでは同じ操作を複数のサーバに対して行う。
この発表資料では予測可能性を掘り下げているのが面白くて、予測可能性を3つの要素に分けている。
- 再現性
- 純粋性
- モジュール性
で、この純粋性は冪等性と違って、実行前の状態によらず結果が一定ということ。
その後で、テック企業に勤めている人の転職のアドバイスとして、async/awaitについて理解すべきだと言われたとのこと。イベントループを理解すべきだとのこと。それで紹介されたのがこの本。
Amazon | Cracking the Coding Interview, 6th Edition: 189 Programming Questions and Solutions | McDowell, Gayle Laakmann | Software Development
こういうWebシステムの話は面白そう。
あとは、検索システムというのも気になる。全文検索もそうだけどベクター検索というのも話題に上った。
振り返り
Cracking the Coding Interviewという本は後からAmazon見てたら『世界で闘うプログラミング力を鍛える本 コーディング面接189問とその解法』というタイトルで邦訳出てるのを知った。
この種類で以前Twitterで見かけたのが、この本。
システム設計の面接試験 | アレックス・シュウ | 工学 | Kindleストア | Amazon
この本にチャットアプリの設計について書かれていて、そういえば引き合いでそういう話が出たことがあるので、
この本を紹介してた人は英語ができる人は本元のByteByteGoのサイトが良いかもと言っている。
英語読めるなら同じ著者が運営するシステムデザイン面接対策専用のサービスのByteByteGoの方がオススメです。日本語ではないので英語に自信ある翻訳して頑張りたい方はこちらへ。専用Discordにレジュメレビューや面接体験も投稿されていて良い #pr https://t.co/vxoTrVs7hF
— サカモト@エンジニアキャリア論 (@sakamoto_582) December 7, 2023
Javascriptのasync/awaitについてググったらこのZennのサイトが出てきた。ざっと見ただけだけど面白い。
jsが非同期処理をシングルスレッドで実現する仕組み〜Web API、イベントループ、MicrotaskとしてのPromise〜 (zenn.dev)
あと、どこから見つけたか忘れたけどこういうサイトがひっかかった。
system-design-primer/README-ja.md at master · donnemartin/system-design-primer (github.com)
もっとシンプルにスタートするならこれを一緒に読むのでもいいかもしれない。
Web Architecture 101