いっせいの!!細かなつぶやき

細かなことをぽつぽつと呟いてます

思いつき(非同期処理言語)

非同期処理の記述言語を作るとしたら、って思いつき。

例えば(広い意味の)オブジェクト指向言語だと、関数とかメソッドとか演算子とかが呼び出されるときに、暗黙の第1引数としてself擬似変数やthis擬似変数(の参照)が渡される。
これらの擬似変数やそこから辿られるsuper擬似変数を通じてクラスやらインスタンスの機能が実装されてるわけだ。

非同期処理メインの言語においては、これに加えて暗黙の引数としてpromiseを渡すと分かりやすいのでわ?
もちろん、returnやyieldでメソッド/関数/演算子等を抜けるときにも暗黙の第1戻り値としてpromiseを返す。本来の戻り値は第2戻り値以降とする。
事実上、タプルを返す形になる。

で、右辺式の中でメソッド等が呼ばれたら、返り値は暗黙のawaitで待ち受けるわけだww
つまりメソッド/関数/演算子等は全て暗黙のasyncが宣言されてることになる。
コンテキスト・スイッチングの負荷を考えれば、現行のスタックマシンのモデルで実装するには非効率に過ぎるが、これはこれで興味があるな。
バグ取りがめっちゃ難しそうなのも難点ではあるが……

非同期処理言語としては、関数型言語とはまた違うメッセージ・ドリブン型の言語モデルとしてアリなんじゃなかろうか。
いつかもっと深く考えてみたいなw

とりま、名前だけ付けとくかな。
TEAP-ARCE (The Environment of Asynchronous Processing According to Relation of Chained Elements) *1 (仮)
読み方はティープ・アースでw

*1:「関連する要素の連鎖に従った非同期処理環境」くらいの意味で