一切皆文件思想与面向接口编程
Posted zzfx
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一切皆文件思想与面向接口编程相关的知识,希望对你有一定的参考价值。
是面向接口编程的典范。
使用统一的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的目的是为了兼容性,而设备、盘符、文件这些是为了让普通用户更好理解。
所以“一切皆文件”好处是对开发者方便,但也请注意:不是所有计算机使用者都是一个开发人员以上是关于一切皆文件思想与面向接口编程的主要内容,如果未能解决你的问题,请参考以下文章