先日の話の続きだが、世界は実はライブラリでできているのかもしれないな、と思った(Matrixじゃないけど)。
全部のプログラムをライブラリとして実装して、ライブラリのローダだけでできているOSというのもアリだ。シンボルの衝突は適当なnamespaceの機構を用意してあげて、シェルがスタティック/シェアードライブラリをロード/実行できる。で、シェル自体もシェアードライブラリとして実装されていて…。
でもこれってプロセスでも同じだよなぁ。だから実はプロセスってのはロードされたライブラリでもあるわけで、しかしプロセスにすると呼び出しのインタフェースが非常に貧弱になる。貧弱というのはつまり「コマンドライン引数」vs.「関数の引数」で闘えば「関数の引数」側が確実に勝つ、ということだ。
これを解決するにはプロセスなんて珍奇な概念を引っ張り出して真実を隠すのをやめて、実は全てがライブラリであったということを白状したほうがよい。正直になれ、OS開発者よ。
…なんてことをちょっと考えたのね。
ライブラリOS、誰か作ってくれないかなぁ。使ってみたいこと、この上ないよ。
だってプログラムがmain()からしか呼べないなんていう制限は理不尽だ。publicな関数や変数をたくさん用意してあげりゃいいだけじゃん。その中にmain()があっても文句は言わないけど。