UNIXの物をオブジェクトとして表現できないのはなぜですか?たとえば、ファイルは一種のオブジェクトですが、それらはすべて単なるファイルです。これは標準のインターフェースを提供するのに役立つと思いますが、本当にそうですか?ファイルを読んでもデバイスファイルのような有用なものが何も表示されない場合、何かがファイルであるという意味は何ですか?デバイスファイルは、ファイルではなく、ディレクトリ内のオブジェクトになりやすいと思います。次に、cgdisk
のようなコマンドを実行する代わりに、デバイスオブジェクトは、それ自体を変更する独自の方法を提供したり、/dev/sda.partition1.get_size()
などのそれ自体に関する情報を提供したりできます。これは、理論的には、1つのディレクトリ(/ usr/bin)でさまざまなことを実行し、オプションを渡す方法がすべて異なるコマンドの束よりも優れていると思います。そのアイデアに明らかに何か問題がある場合は申し訳ありませんが、その場合はオブジェクトとはあまり関係のない質問があります。コマンドを便利な名前のディレクトリに整理できないのはなぜですか?たとえば、/ usr/binにすべてのコマンドを含める代わりに、/CMDs/devices/list
または/CMDs/output/echo hello
のようなものを含めることができます。
Unixセマンティクスは30年以上前に設計され、「すべてがファイルである」に基づいています。これは少し失われましたが(たとえば、バークレーソケット)、それでもほとんど保持されます。
この結果は、「ここにリソースがあります。好きなように使用してください」です。オブジェクト指向の世界観よりもはるかに柔軟ですが、間違った場合は足で自分を撃つことができます!
したがって、ディスクはファイル(/ dev/sda)です。各パーティションはファイル(/ dev/sda1)です。
しかし、何isパーティションですか?これは単なるデータ構造です。なぜ「ディスクドライバ」がそれを強制するのでしょうか? Solaris SPARCディスクはMicrosoftDOSラベルを使用していません。パーティションは完全に異なります。
「すべてがファイルである」形式は、はるかに柔軟性があります。オペレーティングシステムの拘束衣なしで、好きなことを行うことができます。