linux发行版与windows桌面版的差别?
的有关信息介绍如下:
针对最近两位朋友的留言,这里对答案进行完善:
针对普通个人计算机用户:
linux是纯手动相机;windows是傻瓜相机。
傻瓜相机按下快门就能拍照片,纯手动相机需要自己根据不同的情况做出不同的调配后才能按快门。
举个例子:
如果你在windows下搜索个文件,比如叫abc.txt,你会发现很容易,只要设定一下搜索范围然后用鼠标点两下就开始搜索了。同样的事情,要在linux上做,你需要用指令,find、locate等等都能做到,你还要清楚这些指令的区别和这些指令有哪些参数这些参数是干什么用的。因此在这里看,觉得windows好用。就像一个不会玩手动相机的人肯定觉得傻瓜相机好用一样。但是如果换一个复杂一点的搜索任务:
在某目录下搜索这样的文件:文件名里不包含数字的、文件名长度不超过10的、文件大小不超过10MB的、文件内容是以a开头、以x结尾、文件第三行的第六个字符是2的文件,将所有符合上述条件的文件名按照文件名的长度从小到大排列出来,然后把最终结果显示到一个叫res的文件里。
这个事情,让你用windows做你打算怎么做?你有办法吗?如果你会linux,完成上述任务需要的指令行不超过两行。
windows最初针对的,就是“不懂计算机技术”的用户。由于世界上不懂计算机技术的用户绝对占到了全人类的99%以上,所以windows成功了。但对于搞技术的人而言,不懂linux是很难有所发展的。专业的摄影人员绝对不会用傻瓜相机的。
针对从事和系统相关的工作用户:
在这里最大的不同就是开源与闭源。
linux是开源的,因此可以精准地控制系统的每个细节;如果系统出现了问题,也很容易找出问题和解决问题。系统维护人员可以对linux最细小而精准的“手术”。
windows是闭源的,很多时候,我们无法得知系统的各种细节,因此如果系统出了问题,我们通常很难给系统做一个精准的“手术”,我们能做的就是“重装系统”。
针对程序开发人员:
linux是一种unix-like系统。linux的所有实现完全遵守POSIX标准。而windows有自己的标准。例如对于c/c++,linux的编译器严格遵守c/c++的最新标准,而windows的MSVC有一套自己的标准,这套标准除了喜欢使用旧版本的c/c++标准外,还有一些特别的、甚至违背c/c++标准的标准。比如:
上面这段代码在windows下可以通过编译,但在linux下不行 ---- 因为MSVC做了一些c++标准以外的事情。
在这里不得不说,windows是一个另类。从纯理论上来说,系统的任务是帮助各种不同的用户去操作硬件,系统不应该有只属于自己的而且是对用户不可见的行为。而windows往往都会“好心地帮助”用户多做一些事情。但这种“好心”对专业人员来说往往是噩梦......
另外,unix-like系统和网络的结合性是与生俱来的(和网络的历史有关),这一点windows无法比拟。
因此,绝大多数情况下,我们都不使用windows来搭建服务器或者工作站。
补充说明:
诚然,windows也有针对专业用户的接口,例如下面两位朋友所说的Powershell。但这些接口和linux的shell并不只是“不同系统下的不同接口”的区别这么简单。首先windows的标准是独一无二的,linux有很多版本,但它们的shell是可移植的,redhat的shell放到debian下一样用甚至放在unix、mac下也一样用,因为它们都是unix-like系统,但windows的只能在windows下用。其次,从程序开发的角度看,linux的shell和windows的Powershell似乎仅仅是语法层面的不同,而对于系统维护人员来说,这种差别就很大了。在linux下我可以用shell到达任何地方,而windows由于其闭源特性,就不能了。
linux给了用户最大限度的自由度,而windows以牺牲自由的代价,换来大多数用户的“舒服”。
linux允许你自杀,而windows不允许。



