Linux应用环境实战系列阶段性总结

发表于:2016-2-04 09:07

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:京山游侠    来源:51Testing软件测试网采编

分享:
  其实和透明性相关的还有一个硬货,那就是源代码。Linux 可以说是开源软件的代表,内核及其系统下的软件都是开源的,源代码可以随意获得和阅读。但是能随意阅读源代码就说明透明性一定好吗?那不见得,因为源代码太复杂了,就算让你随便读也不一定读得懂。所以我碰到问题后,首先考虑的是读文档,而不是读代码。Linux 内核的源码目录我也是经常逛,但是主要还是以读文档居多,基本没读代码,最多也就是看了那基本经典的专著之后进代码瞅一眼,验证验证而已。有时候源代码也可以提供一些参考,比如 OpenGL 编程,不知道它和 X Window 如何交互的话,看一看 freeglut 的代码还是很有收获的。在《玩转Linux系统的方法论》这一篇中,我有介绍获取源码包的方法。
  我这一个系列的随笔可以说是用最好的方式展现了 Linux 的透明性。掌握了我这一系列博客中提到的方法,在 Linux 系统中碰到任何困难,都可以找到解决方法。换一种说法,其实 Linux 系统本来对用户就是非常透明的,一点都没有遮遮掩掩,如果你用不好 Linux,那是因为你水平还不够,而我的这一系列随笔就是教大家怎样去看穿它。
  说完透明性再来说说可用性。通过前面的阐释可以看出 Linux 系统是非常透明的,所有困难都可以克服。另外一个问题就是 Linux 真的可以满足我们日常工作、娱乐的所有要求吗?也就是说,Linux 真的具有可用性吗?我觉得我的这一系列随笔就是对这个问题最好的回答。在这一系列随笔中,我展示了在 Linux 桌面环境中,我的日常工作是没有问题的,不管是编程、画图还是做数学工作,很多软件都非常优秀,功能强大、运行稳定且界面美观。在我没有展示的领域,如写论文、做幻灯也是没有问题的,LibreOffice 很强大,和 MS Office 一样好用,上淘宝、登网银也没有问题,因为它们的插件都支持 Linux 系统下的 Firefox 浏览器。如果不要图形界面,其在服务器领域占有的市场比例更是遥遥领先,这个可用性就不需要我来废话了,大家心知肚明。
  在我的这一系列随笔中,有几篇还展示了 Linux 中某些软件前后端分离的策略以及其带来的优势。使用 Linux 系统有两种方式,那就是 CLI 和 GUI。你即可以选择字符界面,也可以选择图形界面,它们各有优势。字符界面通过输入命令来执行程序,通过脚本和管道让许多工具配合工作,如果用得好,可以获得非常高的效率。而且字符界面的程序非常适合进行脚本化和自动化,如开机启动某任务、定时启动某任务等等。图形界面的优势呢?就是使用起来非常方便,有丰富的菜单提示,用鼠标点点画画就可以完成工作,但是要完成批量任务或定时任务就不是那么方便了。也不是没有解决办法,MS Office 提供的宏就是一种解决办法,Photoshop 也可以录制动作生成 Action 然后回放。这说明不管是在 Linux 环境还是在非 Linux 环境,用户对自动化的需求都是一样的。
  有些工作非使用图形界面不可,比如画图和在虚拟机中运行具有图形界面的客户机;有另外一些工作则把图形界面当成累赘,比如在没有图形界面的服务器中使用虚拟机,并且要有开机自动启动、定时启动、远程管理、批量化管理这些功能。要解决这个冲突,Linux 中广泛采用的是前后端分离的策略。在《数值计算和符号计算》中,我介绍的 Octave、Maxima 等软件,就都有在其命令行的版本上,加上了一个 GUI 封装的图形化版本。还有《虚拟机体验之VirtualBox篇——性能强大的经典架构》中介绍的 VirtualBox 虚拟机,就是一个经典的前后端分离架构,VirtualBox 的图形界面就是对其命令行工具的 GUI 封装。
  Linux之得和Linux之失
  Linux 还有一个很讨厌的哲学,那就是提供机制而不提供策略,而且这个策略还被很多人追捧,对于这一点,我是持反对意见的。提供机制而不提供策略的几个典型例子,一是系统启动时的初始化,Linux 只决定内核初始化完成后将控制权交给/init程序,至于/init程序怎么启动其它的服务、怎么进入系统,就看各个发行版各显神通了。二是 X Window 图形界面的实现,只提供机制,不提供策略,在不同的发行版中,可以使用不同的窗口管理器,编程也可以使用不同的图形工具包。
  那么这是优点还是缺点呢?不好说。支持者认为这是优点,因为可以随时更换策略,所以这些机制的生命期特别的长。就拿 X Window 来说,已经有 30 多年的历史了,但是依然没有被淘汰,每次只要换个窗口管理器,又可以生龙活虎好多年。支持者的另外一个观点就是只提供机制而不提供策略,可以给用户提供更加丰富的定制空间,正如 X Window,可供用户选择的桌面环境就有 Gnome、KDE、XFace、Enlightment 等等一大堆,还有 Ubuntu,硬是在 Gnome 的基础上再次开发,写出了一个 Unity 桌面。
  我认为,它的缺点也很明显。其中一个缺点就是这个策略明显地造成了 Linux 发行版的分化。现在的 Linux 发行版太多了,每一个都搞一套自己的启动机制,每一个都搞一个自己的软件包管理机制,每一个都说自己的策略怎么好怎么好,最终,想选择 Linux 的用户被逼成了选择障碍综合征,不知道怎么选,只好抛弃 Linux。即使是同一个厂家或同一个社区的发行版,也分成不同的桌面定制版,而且有时候,有些软件专为某种桌面定制,在其它的桌面环境中运行效果就很差或者很不稳定,这造成了 Linux 用户的分裂,同时也造成了 Linux 新手学习上的困难,因为技能树的分支太多了,不知道怎么攀。
  版本分化还不是 Linux 占领市场最大的问题。最大的问题还是出在提供机制而不是提供策略上,因为当 Linux 允许用户自己指定策略的时候,往往也意味着用户必须得自己指定策略。Linux 系统的发行者没有为大家提供一个可以让大部分人都满意的预先定制好的策略,相反,而是只提供基本可用的系统。几个比较明显的例子,我装完系统后,首先要做的事就是重新配置字体、选择系统主题,对于常用的工具如 Vim 之类的,还要自己修改它的配置文件。最终的结果,就是刚接触 Linux 的用户,如果不是专家或者特别有耐心,很快就知难而退,放弃了。
  曾经有一段时间,字体的配置方法也是很分化的,使用不同的图形界面包(如QT、GTK)编写的软件,使用的字体配置方法都不一样,所以要改系统的字体,得改好几个地方的配置文件。这个问题也导致如果一个为 KDE 编写的程序如果运行在 Gnome 桌面上,界面往往会比较丑陋,反之亦然。幸好,正如我在某一篇随笔里说的,字体配置方法被 FontConfig 统一了,这为我们最终用户省了很多事。也证明,Linux 中的提供机制而不是策略的哲学带来的 Linux 的分化还是很有弊端的。还是合而为一比较方便,而且最终也是分久必合,如 init 系统即将被 systemd 统一。
  总结
  这一篇随笔只是对我这一年中所写的 Linux 应用环境实战系列随笔的一个总结,顺便阐释了一下从我的随笔中能够看出来的 Linux 的透明性、可用性。这一系列随笔没有多少编程方面的东西,主要展示的是方法论和工具论。最后,如果你早就被 Linux 深深吸引住了,但是又无法说出吸引你的究竟是什么,那么我推荐你读一下《Unix 编程艺术》,这本书虽然很老了,但是读完之后确实是会有巨大的收获。
22/2<12
精选软件测试好文,快来阅读吧~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号