为什么unix不能面向对象或至少是有组织的

为什么unix不能面向对象或至少是有组织的

为什么unix中的事物不能被表示为对象?例如,文件是一种对象,但它们都只是文件。我意识到这对于提供标准接口很有用,但真的吗?如果读取文件没有显示任何有用的信息(如设备文件),那么作为文件的意义何在?我认为设备文件很容易成为目录中的对象,而不是文件。然后cgdisk,设备对象可以提供自己的方式来更改自身或提供有关自身的信息,而不必运行诸如 之类的命令/dev/sda.partition1.get_size()。我认为这在理论上比在一个目录(/usr/bin)中使用一堆命令执行不同的操作要好,并且所有命令都有不同的方式向它们传递选项。如果这个想法有明显的错误,我很抱歉,但我有一个与这种情况下的对象关系不大的问题。为什么不能将命令组织在有用的命名目录中?例如,您可以使用类似/CMDs/devices/list或 的命令,而不是将每个命令都放在 /usr/bin 中/CMDs/output/echo hello

答案1

Unix 语义是 30 多年前设计的,基于“一切都是文件”。这有点迷失了(例如伯克利套接字),但它仍然大部分有效。

这样做的后果是“这是一个资源,你想怎么用就怎么用”。还有很多灵活的与面向对象的世界观不同..但如果你做错了,你会搬起石头砸自己的脚!

所以你的磁盘是一个文件(/dev/sda)。每个分区都是一个文件(/dev/sda1)。

但什么一个分区?它只是一个数据结构。为什么“磁盘驱动程序”要强制执行它? Solaris SPARC 磁盘不使用 Microsoft DOS 标签;它的分区完全不同。

“一切都是文件”格式更加灵活。无需操作系统的束缚,您可以做任何您想做的事。

相关内容