是面向接口编程的典范。
使用统一的open,read,write,close等操作
链接:https://www.zhihu.com/question/25696682/answer/31595790
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
“一切皆文件”的好处更多的表现在开发者上,好处就是大部分操作可以统一接口,甚至只用open/read/write/ioctl/close就可以完成大部分(甚至全部)操作。
所以,从本质上说“一切皆文件”对于开发者来说更有益,代码的移植也更为方便。想想看如果一切设备的操作都能统一,那么对于码农,甚至一些设备维护人员来说是多么美好的事情。
好处说完了就开始说缺点:
对于用户来说,缺点就是这个概念太难以理解了。
对于大多数普通用户来说,键盘是键盘,鼠标是鼠标,这些设备跟文件的概念相差太远了,对于普通用户来说,“我的电脑”、“键盘”、“鼠标”这些概念更直接,如果非要说鼠标是文件“/dev/input/mouse0”,那么普通用户恐怕很难理解。
对开发者友好和对于普通用户友好其实是两码事,要知道这个世界上大部分计算机设备的使用者都不是开发人员。
说点政治不正确的话:不能因为自己是程序员,就认为世界上所有的人都应该是程序员。(利益相关:我自己也是一个程序)
所以一个友好的界面是必要的,对于普通用户来说封闭一部分操作系统的内部实现也是必要的。大多数安卓用户不会关心/dev下面有什么,而只是关心手机怎么用,怎么好用。
说完Linux再说Windows:
Windows的内部实现也近似于“一切皆文件”的思想,当然,这一切都只在内核里才有,下载一个WinObj这软件就可以看到,Windows上各种设备、分区、虚拟对象都是挂载到根“\”下的,通过这个树可以访问各种设备、驱动、文件系统等等。
Windows与Linux不同的就是把这些对象又重新封装了一层WindowsAPI,对外以设备、盘符、文件等等表现出来,重新封装WindowsAPI的目的是为了兼容性,而设备、盘符、文件这些是为了让普通用户更好理解。
所以“一切皆文件”好处是对开发者方便,但也请注意:不是所有计算机使用者都是一个开发人员