非同期のコードはよく書くものの、その振舞いを把握できているか不安になることもありますよね。
そのようなとき、オートマトンや状態遷移系のような知識は役に立つのでしょうか?つまりそれ自体を使ってコードを書くことはないものの、基礎的な考え方になるようなものです。並行計算の分野ではCCS(Calculus of Communicating Systems)やpi-calculusのような理論が提唱されていました。このLTではCCSを中心に計算理論の例をみていきます。
CCSで記述することで、並行計算を状態遷移として捉えることができます。状態を数えることができれば、非同期に惑わされずに振舞いを把握できます。そこでは同期通信とインターリーブという抽象化された計算過程があります。何を抽象できるかのインスピレーションが得られるでしょう。
async/awaitなどの実際的な機能も重要ですが、ここらでちょっと理論面にも目を向けてみようかな?というきっかけになればと思っています。たった5分で、「それ聞いたことがある」状態になれることをサポートします。