以下のソースコードがE言語のHello, World!です。
println("Hello, world!")
Hello World!では伝わりづらいですが、E言語は独特の計算モデルを持っています。
E言語にはプロセスに類似したvatという仕組みがあります。
そして、全ての値はオブジェクトであり、このvatに所属し、vat間のメッセージパッシングによって、計算が実行されています。
各vatにはスレッド、スタックフレーム、イベントキューが備わっており、リモートオブジェクトに対してメッセージパッシングをすることで分散コンピューティングを実現しています。
ここまで書くと、ErlangやExlixirなどが採用しているActor modelのようだと感じる方も多いかと思いますが、実際にE言語はJoule言語に影響を受けており、Joule言語はActor modelに影響を受けているため、E言語のvatもActor modelに影響を受けているようです。
EイベントループとPromiseによってデッドロックが絶対に発生しないことが保証されているなどの、特徴も持ちます。
参照: