linux的系统API太糟糕。
瞧瞧windows的API有几千个吧,上面有一大批的在各类程序之间形成互动的函数,能让程序自由实现各类功能的可能。
再瞧瞧linux的API,虽然不到1000个,所以linux的桌面软件功能薄弱,许多功能是linux系统做不到的实现不了的。这儿所说的实现不了,指的是,多个开发组织生产的独立的软件相互交互的能力,软件须要在不编撰驱动没有root权限的前提下,雷人到操作系统作者根本难以预测到的程度)。用户级软件是不可能跑去剪裁内核,安装驱动,瞎改文件的linux删除命令,这么这个用户级软件在Linux下功能就相当受限。
Linux的强悍,仅在,整个系统是为了一套目的而开机的,整个服务器的工作目标都在同一个组织的开发者控制之下,程序要么独立于其他程序,要么在笔记本管理员的净心研究控制之下协同而且调配参数配置。只有系统管理员能够剪裁内核,能够安装依赖,就能更改配置文件,能够获得root权限。
Windows并不这么,各类windows上的软件常常和来自几十个公司的不同软件同时工作,即须要互不干扰,也要能相互配合,用户软件的各类雷人行为都被windows考虑到(起码远远比linux考虑的多)并提供了API:首先就是游戏外挂及各类辅助工具(键盘精灵、金山快译、CheatEngine、屏幕放大镜、360给IE、Chrome加上防垂钓网站的功能)。
Windows的跨进程生效的函数,提供了各类各样的功能,它除了能跨进程更改显存,能够远程启动线程,很便捷的跨进程地做线程同步,不同的进程能共同操作同一个内核对象,对象也不会发生泄露(相对于linux中的进程的waitpid和显存映射)。所以我觉得Windows的进程间协同能力完爆Linux程序。
Windows的注册表机制,尽管广招非议,但实际上是很有用的东西,他准许并发更改,一个程序更改一个选项的同时,另一个程序可以更改另一个选项。Linux的配置文件通常只能让管理员自动更改,程序通常是不更改的,但是一个程序更改某个选项时,很难想像另一个程序也想更改同一个配置文件的另一个选项会发生哪些冲突。
Windows有COM有.Net,交互可以是二补码的,可以一定程度上实现版本兼容,但是官方的插口总是提供历时十几年的兼容。2008年前后,大量的windows程序,都可以轻松地包含WebBrowser就获得内嵌的网页窗口,WebBrowser就是一种COM组件。
Linux有哪些?莫非要用基于正则的命令行字符串处理来搞有UI软件的协同?不同发行版本的系统命令,例如查看cpu信息,都会返回不同格式的字符串linux系统桌面,这让开发者怎样做字符串处理?有一次我希望获取cpu的频度,之后发觉我必须打开/sys/devices/system/cpu之类的虚拟文件之后从一坨字符串中截取代表频度的那种数值,但是关键是不同发行版返回的单位格式都不一样。当cpu频度随着电源功率变化的时侯,程序岂不是要随时随地打开文件并做字符串查找/正则剖析?还得为各类短发版和版本号的系统做适配,简直回到了dos时代游戏对主板声卡做适配一样荒谬。
Linux的种种局限性linux系统桌面,致使它只能在开发者的控制下去完成一组目标,在特定机器、特定依赖、特定库的环境下,他可以发挥挺好的性能和稳定性;反过来linux嵌入式开发,在千变万化的用户系统环境下,软件会严重的遭到Linux系统功能的局限。所以这大约是Linux桌面很容易崩溃,功能薄弱的诱因把。
Windows现今有PowerShell,终端界面也在进步,再过几年假如有意思,谷歌完全可以让Windows在控制台全按键环境下(包括远程控制),便利性超过Linux。
反过来Linux的图形桌面的稳定性、进程间交互的功能,要赶上Windows至少还要十几年。
文章评论