程序员的老生常谈之操作系统

今天早上和发小出去打球,意外扭伤了脚踝,回了家网络也不好,百无聊赖之际,就想写点东西。

上篇文章里,我大致谈了我对开发工具的一些看法,以及我比较喜欢的开发工具。本文主要谈谈我对操作系统的看法,其中不涉及任何有关内核、原理等方面的内容,单纯地从一个使用者的角度来谈。

Linux折腾历史

第一次接触Linux是在2010年夏天,那时学院里面组织一些同学去大连东软参加实训。期间,我们要开发一个Linux下的即时通讯软件,我们在虚拟机中安装了Red Hat Linux,使用vi写代码。当时是十分痛苦的,因为vi很难用。我当时采取的办法是在虚拟机外面用vs写代码,然后拖到虚拟机里面编译。现在想来真是幼稚、低端。

第二次接触Linux是2010年冬天到2011年夏天,当时我参加了Robocup 2D仿真组的比赛。其中,我们需要在Ubuntu10.04上面安装仿真平台、工具等,并调试球队。那个时候算正儿八经用Linux了,学习了基本的命令,在不清楚原理的情况下照猫画虎编写了第一段shell脚本。

之后一直在使用Linux,但是仅仅局限于尝试各种Linux发行版、开源软件。那个时候正值大三,上的课听不懂,下来也不好好学。除了打游戏,就是折腾系统了。当时把折腾的心得写成了一篇日志,现在觉得认识比较浅薄,当笑话看吧!

今年4月份,也不知为何心血来潮,就想玩玩archlinux,它和Gentoo都是比较好玩的。但是后者我没敢玩,那个需要长时间的编译等待,中间还有出错的可能。

算下来,我使用过的Linux发行版有那么七八种。现在我使用两种,笔记本上的Arch和台式机上的Ubuntu。

Linux发行版

其实,我们常说的Linux指的是Linux发行版,即Ubuntu,Fedora这些。Linux发行版的多达几百种(详情请看这里)。而Linux只是一个内核的名字而已。一个Linux发行版是由Linux内核和运行在其上的应用软件构成的。

首先,不同发行版的内核是不尽相同的。当然我并不是指,Linux内核的源代码有很多种。Linux源码只有一份,控制在他的创造者linus torvalds手中。但是,Linux内核在编译时有很多选项可以选择,如果用来做桌面||服务器系统,就多选择一些功能;如果做嵌入式系统,就精简一些。同时,也有很多参数可以设置,如网络参数,文件系统参数等等,老是说centos做服务器比较“稳定”,可能就在内核参数上做了一些调整(当然,应该远不止这些,应用软件也都应该是最稳定的版本)。

其次,不同的发行版使用不同的应用软件。其中比较重要的有:

    包管理器(PM, package manager)桌面环境(DE, desktop environment)窗口管理器(WM, windows manager)显示管理器(DM, display manager)系统和服务管理器(system and service manager)软件中心(software center)……

具体哪个发行版使用那些软件这里就不细说了。同一个发行版的不同的版本,采用的应用软件也不尽相同。当然,桌面环境的不同,人们一眼就看出来了,很多人误以为那就是不同的Linux,其实就是同一个操作系统里装了不同的桌面环境而已(甚至是同一个桌面环境,但只是把主题改了一下,加了些Dock之类的applet而已)。感兴趣的可以自行google,自己装一些玩玩。我自己玩Arch的时候尝试了大部分主流的桌面环境和窗口管理器,但后来还是因为没什么耐心去玩主题,换回了KDE。

使用感受

我不知道有多少人使用Linux是因为受到了王垠的这篇文章的影响(后来他又写了另一篇文章推翻了前者)。就我而言,我没有任何信仰。我只选择最合适的。

由于只是个人使用,没玩过服务器,没玩过高性能计算,Linux和Windows在性能和稳定性方面的差异,我没什么发言权。日常使用方面,如果不玩游戏不用网银(可惜,这是不可能的。:)),Linux可以代替Windows,这是没问题的。以下是我能想到的Linux的优点:

    免费。命令行十分强大,系统配置方便,对开发者友好。得益于虚拟文件系统(VFS),Linux可以直接读写NTFS文件系统,这是Linux的先进之处。而Windows要读写ext文件系统,则需要借助第三方软件。安全,不多说了。不过,对个人用户来讲没什么意义。用户要是一路sudo,那安全性有没有都一样。我Windows裸奔了几年都没出过事。定制性强,外围的应用软件想用什么用什么,包括桌面环境。支持UTF-8。关机比较快。:)

缺点:

    缺少一些重要软件的替代方案,或者替代方案不够好。如Adobe系列,QQ,迅雷等(别折腾wine,蛋疼死你!)。部分软件安装比较麻烦。由于发行版众多,包管理器不一,一些软件是以源码的形式提供的,得自己编译安装。而Windows一个.exe就全搞定了。

总的来说,Linux是先进的,但是先进的不一定是友好的,尤其是对普通用户来说。

我不会再去折腾Linux的各种发行版和软件了,那除了锻炼你的运维能力(耐心)之外,对你没有任何提高。理解Linux内核的原理是我下一步要做的事情。

Windows

Windows7用着真心不错,这是良心话。我不会天天用它,还不停地骂它。但我不会升级Win8,我认为Win8的战略完全是错的。统一内核是没有错的,但是妄图统一用户界面和交互方式实在是大错特错。在没有触屏的笔记本上,用鼠标点击和拖动来模拟触屏,是相当糟糕的用户体验。但是,我非常欣赏Win8在其他方面做的改进。

我觉得如果Windows能在以下方面有所改进,我会非常高兴:

    更好的命令行。Windows的cmd太糟糕了,虽然后来做了个powershell,能兼容部分Linux命令,但还是太挫了。环境变量的管理也非常差。拥抱UTF-8标准。Windows的默认标准是Ascii,如果你用VS,你会发现,有时候你写的中文||日文注释被解析成了别的什么东西,会导致一些蛋疼的问题。

更多的槽点,可以看看这篇文章,我觉得是说到了点子上。

当然了,对于一般用户来说,Windows完全够用了,也足够友好。但是对于开发者来说,还远远不够。我不清楚修改这些问题的难度,但是如果这些毛病来源于最初的设计问题,那么要改就要伤筋动骨,甚至推倒重来,那么必然会破坏兼容性,破坏了兼容性,Windows就完了。如何跟上Linux的先进性,又不破坏兼容性,是Windows要考虑的重要问题。不然,你搞100个metro界面出来也白搭,这些都是表面功夫,内在的差距一定会越拉越大。

OS X

苹果的OS X我是最不熟悉的。但曾玩过。12年暑假我借了我二姨的macbook pro可劲折腾了一段时间,二姨的mbp装的是xp,唯一的用途是上QQ,以及用PPS看电视,暴殄天物啊,我马上拿过来彻底玩弄了一番。本科毕业前折腾黑苹果未遂。

OS X兼具Linux和Windows的优点,它是对黑客和普通老百姓都非常友好的操作系统。说它是the most advanced OS一点都不为过。

首先,它脱胎于BSD系统,符合POSIX标准,拥有码农们趁手的命令行工具。

其次,大部分软件都有mac版,装软件比windows还简单。试想你一边在命令行里敲命令,一边聊macQQ,一边用迅雷for mac下片,那是多么幸福的事情?并且,部分mac独占的视频||音频处理软件成为了行业标准。苹果电脑成为了设计师标配。

第三,系统很华丽,机器很好看,应用程序很精美。

缺点也有,就是软件数量相对Windows来说要少一些,游戏少。

并且,搭载OS X的机器,售价都偏贵,“学生狗”和屌丝不太能买得起。于是“黑苹果”应运而生。不过我最终因为显卡驱动的问题没折腾成功,待日后挣钱了直接上白的。

总结

其实没什么好总结的,所以用非常没水平的一句话来说吧:各有各的用途。关键在于我们是什么用户,我们要做什么?

程序员的老生常谈之操作系统

相关文章:

你感兴趣的文章:

标签云: