相比较Windows,Linux系统的优点体现在哪里?
抛开Android不谈,Linux是一个以开发者为中心的操作系统,Windows是以消费者为中心的操作系统。这是最根本的区别,也是Linux相对于Windows的优势/劣势所在。必须承认,尽管有很多人、很多公司在努力让Linux变得更加"User Friendly",但Unix/Linux的用户群体从来不是普通用户而是计算机的工业界和学术界。它的优先级,也是搞定工作而非娱乐。Linux的很多生态上的特点,都可以用这件事来解释。另外一个很重要的特点,是Linux是由业余爱好者们拼凑而成的。它不像Windows/Mac一样有一个明确的『开发目标』,甚至不像BSD一样有一个『Base System』,Linux不过是一个内核,和一堆从不同地方搞来/开发,试图满足不同开发者自身需要的应用程序。只不过碰巧发现,这些工具组合组合,能够满足大多数人的大多数需要而已。了解这两个特点之后,Linux的很多优点/缺点,也变得很容易理解。应用的倾向最显著的特点是,所有与开发有关的任务,都有非常完善的工具支持。——从底层编译器,到make/cmake,到shell script/script languages,到git,到vim/emacs再到方便的依赖管理和软件装卸工具。而其他的工具,相对来说要有限一些。而且这些工具几乎默认可用。你能想象Windows/Mac出厂的时候就带着VS和一大堆开发工具吗?可是Linux几乎所有distro下,从shell到git到sed到g++/make,都是『预装好的』。这是因为,这些工具对于绝大多数的Linux用户来说,是一种必须。『效率』和『易学』的抉择不是说Windows/Mac下就会没有『效率』,而是Windows/Mac的设计相对来说没有那么倾向『效率』那一端。拿图形接口举例子,Linux的绝大多数工具都是『先有命令行/库接口』,然后将X11接口作为一种『Afterthought』和『额外的选项』,而Windows/Mac恰巧相反——默认的接口是『图形化』的,自动化的工具作为一种『额外的选项』。开放源码和高度可定制开放源码的初衷,不是为了『*』而是为了『定制』。AT&T UNIX从来就是有版权的,但是源代码仍然可用,这是为了让用户能够根据需要,去『修改』它。Linux社区所赞赏的软件和系统,多半遵循同样的规则——它应该能够适应不同用户的不同环境,能够轻易的改变自己的行为,能够轻松的与不同环境整合。与其假设别人和你的需求一致,不如给予它们定制系统的*。『用户友好』与『减少包装』Linux的大多数软件,都是以个人兴趣作为开端的——我想写一个程序自己用,顺便分享给社区。事实上,绝大多数Linux的软件,也仍然是这样的状态——你可以拿过来用,但如果它有什么问题或者有什么不满足你要求的地方,需要你自己去研究一下。所以Linux下的软件,往往愿意将自己『更彻底』的暴露给用户。方便用户更好的了解它的内部机制,进行hack。去中心化分散的软件开发,也注定了系统的接口和形式不统一——因为大家都喜欢发明*(?),而每个人的*或多或少更适合『自己』和『社区』而非所有人,而在Linux的环境下又没有人能强迫所有人用自己的*(除了Kernel开发者,但其实很多distro对kernel也有patch),所以与其制定一种实践,Linux更多的让用户去选择『生活的方式』。你会看到Linux生态环境中有大量的distro,不同的distro有不同的init方式,不同的软件包管理器和安装策略;每个人习惯使用不同的VCS,不同的shell,不同的编辑器,都就是『更多的选择』的哲学的体现。所以,如果你发现你自己更多的是『开发者』而非『消费者』,或者你所做的任务碰巧是人们一般用Linux完成的,那么你自然会发现Linux的优点。就我个人来说,即便有VS,我还是经常会觉得windows下项目的配置太繁琐;即便有homebrew,我也常常会觉得OS X下的软件管理比较奇怪。而在Linux下,我可以轻易的使用到最新版本的几乎所有开发工具。而其他的时候,用Linux或者Windows/Mac就是个习惯而已嘛——又不是说Python和Ruby一定要分个高下,所有人只能用一种系统。