非同期メッセージング

すべてはメッセージというのは、オブジェクト指向の原始時代からあった発想だけど、 Io を使って、すっかり気に入ってしまったのは、メッセージの処理を、並行して、非同期に、実行する仕組み。

@@メッセージ

とやってやると、そのメッセージは、キューに突っ込まれて、非同期に処理される。
@@メッセージの結果を参照する時には、同期する。つまり、結果を待つ。

この仕組みを、フューチャーというらしい。

この仕組みは、

コルーチン(マルチスレッドの仕組み。制御を切替タイミングを、自分でコントロールできる。 yield )
アクタ (スレッドをかなり高いレベルで抽象化したもの。なんというか、マルチスレッドでやっている感覚が持てないくらい、抽象化されている)

の上に、実現されている。

並行処理と非同期メッセージングの抽象化(記述の単純化)は、最近の言語では、あたりまえの機能らしいので、Io の独自性とか、良さがどこにあるかは、今はわかっていない。

7つの言語 7つの世界 にでてくる、 ErlangScala のそこらへんの仕組みも試してみるのが、ちょっと楽しみになってきた。

プロセス間通信、マルチスレッド、非同期メッセージングとかは、ちゃんと理解して使いこなすには、かなりハードルが高かった世界。

「ちゃんと理解して」というのは、たぶん、今でもハードルが高いけど、これらの仕組みを実際に「使ってみる」というハードルは、これらの言語では、めちゃくちゃ、低くなっている。

非同期メッセージングとその並行処理を、ふつうのソフトウェア開発で、それと意識せずに使う時代が、そこまで来ているんだろうなあ。