
あなたが見ている計算機の上には,本来幾つかの数値が存在するのみです。 そこに後から意味づけした結果を,あなたは見ています。
計算機の上に存在する意味というのは,大勢の手によって局所的に発展してきた存在です。 でも,そろそろ全く新たな地図を書いてみてもいい頃だと思うのです。
私が作りたいものは,見通しの効く世界です。
私が今までにこの手の話題に触れたのは,主に以下の三点です。
—— 「手元で流れている情報を見通し,制御したい」という願いロガーがI/Oを雑に発生させすぎ問題についてなのですが、私が欲しいのは、以下のような感じのOS or コンテナシステムなのです。
— ゆかたゆ (@yukata_yu) November 25, 2023
・プログラムは発生させうるエフェクト(≒システムコール)を型として持つ。(種類は雑に増やせる)
・OSの機能により、どのエフェクトをどのシステムコール or…
いずれも,見通しと可視化が願いの主軸です。
これらに関連した存在として,コンテナ技術があります。
私が普段コンテナに対して問題を感じているのは,以下のような点です。
これらは結局,既存のシステムを再利用するために詰め込んでいるからこそ発生している問題に見えます。
環境に依存するプログラムというものは,不透明な存在です。 その不透明な存在と環境を一つの箱に入れ,さらに巨大な不透明な存在にしてしまっているのが現代のコンテナ技術です。
ただの文字列よりも具体的な情報をやり取りし,そこに外界との契約が生じれば,システムの全体は見通せるようになります。 個々の不透明な存在による影響力を抑え込めば,システム全体は晴れ上がります。
ですが,このような考え方は,既に数十年前から言われていたはずの事です。 ただシステムを大きく作り直したくなかったがために,このような結果になってしまいました。 人類の開発力は有限なので仕方のない事とは言え,少し寂しい事ですね。
これらを前提として,「今欲しい物は Algebraic Effects ベースの OS ですか?」と問われると,悩んでしまいます。 少し欲張ってみて,ここまでに挙げた4つ(2記事+1ツイート+コンテナ)に共通の芯が通っていないかと考えてみましょう。
まずは,書き出してみます。
これらは基本的には「各プログラムの外側でも副作用を状態の一種として扱いたい」という願いです。 しかし,最後の「状態とイベントをグラフ上で並列に扱いたい」という願いは,開いたシステムに対してどの程度現実的か,今の時点では私にも想像が付いていません。
この部分が解決するまでは,過去記事で書いた「裏返された図書館」と「同期に特化した言語」と「進化したコンテナ」のうち,図書館だけは切り離された存在となります。
私が作りたい物は,以下の二つである気がしてきました。
この二つは,きっといつか「初めから一つの存在の具体例であったもの」になると信じてはいます。 けれども,私がより良い抽象化を得るまでの間は別々に考える必要がありそうですね。
それまでは,それぞれの散歩道から見える景色を楽しむことにします。