捐赠?

Harley Hahn
个人主页

给 Harley
发送留言


来自 Harley Hahn 的
个人寄语

Unix 之书
主页

搜索

章节列表

目录

插图列表

各章...
   1   2   3
   4   5   6
   7   8   9
  10  11  12
  13  14  15
  16  17  18
  19  20  21
  22  23  24
  25  26

术语表

各附录...
  A  B  C
  D  E  F
  G  H

命令
摘要...

• 按字母顺序
• 按类别

Unix-Linux
年表

互联网
资源

错误与
勘误

推荐语


教师
与学生
资料...

主页
与概述

练习
与答案

Unix 模范
课程与
课程大纲

教师用
PowerPoint 文件

第 5 章...

GUIs:图形用户界面(GUIs: Graphical User Interfaces)

与 Unix 交互的方式有两种:你可以使用基于文本 的界面,也可以使用图形界面。在第 4 章中,我 通过描述使用一台带文本界面的共享系统是怎样一 番感受,带大家入门了 Unix。在本章中,我要讲 解图形界面:它们是什么、是如何以及为何发展起 来的、如今常用的又有哪几种。在第 6 章中,我们 会把两类界面都谈一谈,我还会向大家展示管理工作 会话的具体细节。

在那之前,我想先教你关于图形界面的基本概念: 该如何看待它们,以及它们在 Unix 世界中所处的 位置。这一路上我还准备了几份小惊喜:几个你大概 能听懂的玩笑;一个你多半听不懂的玩笑;一份判断 题测验,看看你究竟是 KDE 的人还是 Gnome 的人 (到时候你就明白了);还有一些切实中肯的建议, 教你打造一台"祖母机"。

跳至页首

什么是 GUI?(What is a GUI?)

图形用户界面(GRAPHICAL USER INTERFACE)或 简称 GUI,是一种让你借助键盘、指点设备(鼠标、 轨迹球或触摸板)和显示器来与计算机交互的程序。 输入来自键盘和指点设备;输出显示在显示器上。 这种界面的设计不但使用字符,还使用窗口、图片 和图标(小图片),而所有这些你都可以加以操作。

说到显示信息,大体上数据有两种类型:文本(字符) 和图形(图像),"图形用户界面"这个名字正是由此 而来。Microsoft Windows 和 Macintosh 都使用 GUI,所以我相信你对这个概念一定不陌生。

— 提示 —

谈论 GUI 时,人们有两种读法:要么把三个字母 分开念成 "G-U-I",要么把它当作一个单词念成 "gooey"(黏糊糊)。

挑一种最合你性情、也最合听众口味的读法吧。 就我自己而言,我是念 "G-U-I" 的。

出于文化惯性,今天的大多数 GUI 都遵循同样的 基本设计。但与 Windows 和 Mac 相比,当你浏览 各种 Unix GUI 时,会发现一些重要的差别。也许 最根本的一条是:在 Unix 世界里,没有人相信 "一种尺寸人人合适"。作为 Unix 用户,你有着 极大的选择余地。

要用好 GUI,有几个基本概念你需要理解,也有 几项技能你需要掌握。首先,你要学会协同使用 两种输入设备:键盘和指点设备。

大多数人使用鼠标,但正如我上面提到的,你也 可能见到轨迹球、触摸板等等。在本书中,我假定 你使用的是鼠标,不过它们之间的差异很小。(顺便 说一句,我自己更喜欢轨迹球。)

通常,当你移动鼠标时,屏幕上的指针会跟着一起 动。这个指针是一张小图片,常常是一个箭头。在一 些 GUI 中,当你从屏幕的一个区域移到另一个区域 时,指针的样子会随之改变。

指点设备不仅能移动屏幕上的指针,上面还有供你 按下的按钮。Microsoft Windows 要求使用有两个 按钮的鼠标;Mac 只需要一个按钮。Unix GUI 更为 复杂。它们中的大多数基于一个名为 X Window 的 系统(下面会详细讲解)。X Window 使用三个鼠标 按钮,尽管只有两个按钮也照样能用。

按照惯例,三个按钮从左到右编号。1 号按钮在最 左边,2 号在中间,3 号在最右边。GUI 是这样设计 的:你使用最多的就是 1 号按钮,也就是左键。这 是因为,如果你是右撇子而且鼠标摆在你右侧,那么 左边的按钮是最容易按下的(用右手食指)。如果你 是左撇子,是可以改变按钮顺序的,这样你就能把鼠 标移到左边,用左手来操作。

GUI 把屏幕划分成若干有边界的区域,称为窗口 (WINDOWS)。就像真实的窗户一样,边界通常是 矩形,但并非总是如此。与真实的窗户不同,GUI 窗口可以在屏幕上彼此重叠,而且你可以随时改变 它们的大小和位置。(本章后面的 Figure 5-3 和 Figure 5-4 就展示了这一点。)

每个窗口都为不同的活动承载输出并接受输入。举例 来说,你可能同时在用五个不同的窗口,每个窗口里 装着不同的程序。工作过程中,你可以在窗口之间轻 松切换,这也就让你能够在程序之间来回转换。如果 你暂时不想看到某个窗口,可以把它缩小或隐藏起来; 等你用完之后,还可以把它彻底关闭。

在第 4 章中,我们谈过用基于文本的界面来 使用 Unix 是什么感受,那种界面模拟的是一种字符 终端。在那种情况下,你一次只能看到一个程序。而 有了 GUI,你可以同时看到多个程序,并且很容易在 它们之间切换。事实上,X Window — 以及窗口系统 整体 — 之所以被开发出来,最主要的动力之一就是 让人们可以同时使用多个程序,而且越轻松越好。

要想用熟 Unix GUI,还有一些重要的概念和技能是 你需要理解的,我们会在 第 6 章中讨论它们。 本章要谈的是与这类系统有关的最重要的那些概念。 我们先从 X Window 说起 — 几乎所有 Unix GUI 都 以它为基础。

跳至页首

X Window

X Window 是一个为处理图形数据的程序提供服务的 系统。在 Unix 世界里,X Window 的重要体现在三个 方面。第一,它是你将会见到的几乎所有 GUI 的基础。 第二,X Window 让你可以在远程计算机上运行程序, 同时把完整的图形输出显示在你自己的计算机上(见 第 6 章)。第三,X Window 使你能够使用种类繁多的 硬件。此外,你还可以同时使用多台显示器。

想象一下你坐在计算机前工作,面前开着五个窗口。 其中三个在你自己的计算机上运行程序;另外两个在 远程计算机上运行程序。然而它们全都显示着 GUI 带 来的各种图形元素:图标、滚动条、指针、图片等等。 让这一切成为可能的正是 X Window。它通过在幕后工 作来提供支撑结构,使得那些需要显示图形数据、需要 从鼠标或键盘接收输入的程序不必去操那份心。

为了方便,我们通常把 X Window 简称为 X。所以你 可能会问朋友:"你知道大多数 Unix GUI 都是基于 X 的吗?"(我知道 X 这个名字很怪,但只要你和恰当的 那类人混在一起,很快就会习惯的。)

X 的根源可以一直追溯到 20 世纪 80 年代中期的 MIT(麻省理工学院)。当时 MIT 想搭建一个图形工作 站网络(工作站是功能强大的单用户计算机),用于教 学。不幸的是,他们手头有的只是一大堆互不兼容的设 备和软件,来自形形色色的不同厂商。

1984 年,MIT 成立了 ATHENA 计划( PROJECT ATHENA),这是 MIT 研究人员与 IBM(国际商业机器公 司)和 DEC(数字设备公司)之间的一次合作。他们的 目标是创建第一个标准化、网络化、且不依赖特定硬件 的图形操作环境。然后要用这个环境来构建一张覆盖整 个校园的大型网络,名为 Athena。

为了建成 Athena,MIT 需要把大量彼此异构的计算机 硬件连成一个运转正常的网络,而且这一切都得以一种 适合学生使用的方式完成。这就要求 Athena 的开发者 们用一个设计良好的统一界面,取代那一大堆复杂混乱、 各家厂商自搞一套的图形界面:他们希望这个界面能最 终成为行业标准。

鉴于这项雄心勃勃的事业要求之高,他们决定用希腊智 慧女神 Athena 来为这个计划 — 以及网络本身 — 命名。(Athena 同时也是战略与战争女神,因此在 1984 年,对于那些想把不同厂商生产的计算设备互联 起来的人来说,她是一位重要的盟友。)

最终,Athena 计划在两个方面取得了成功。第一, Athena 的程序员们确实打造出了一个不偏向 任何厂商、对网络友好的图形界面,他们称之为 X Window。X Window 逐渐获得了广泛认可,而且 确实成为了行业标准(尽管并非唯一的行业标准)。 第二,程序员们成功建成了 Athena 网络并把它部署开 来,为 MIT 校园内的数百台计算机提供服务。

X Window 的第一个版本(称为 X1)发布于 1984 年 6 月。第二个版本(X6)发布于 1985 年 1 月,第三个 版本(X9)于同年 9 月发布。(我敢说这套编号规则 在某人看来一定是讲得通的。)第一个广受欢迎的 X Window 版本是 X10,发布于 1985 年年末。

到这时,X 已经开始引起 MIT 之外的关注。1986 年 2 月,Athena 计划把 X 发布给外部世界。这个版本叫 作 X10R3:即 X Window 第 10 版第 3 次发布 (version 10 release 3)。下一个重大版本是 X11, 于 1987 年 9 月问世。

我为什么要告诉你这些?是为了说明一个有趣的道理。 当一个复杂的软件产品还很新时,它尚未积累起大量用 户。这意味着开发者可以对产品做彻底的改动,而不必 得罪一大片人,也不必"搞坏"使用该产品的程序。一 旦产品拥有了庞大的既有用户群,一旦程序员们写下了 大量依赖该产品的软件,要做重大改动就变得困难得多 了。

一个产品越受欢迎,它的开发步伐就越慢。这完全合乎 情理:当越来越多的人 — 越来越多的程序 — 开始依 赖某款软件时,做重大改动就变得很不方便了。

于是事情就这样发生了:X Window 在头五年里经历了 五个主要版本(X1、X6、X9、X10 和 X11)。X10 是第一 个广受欢迎的版本,X11 聚集了更庞大的用户群。X11 成功之甚,极大地拖慢了 X 的开发步伐。事实上,二十 多年过去了,X 的当前版本依然还是 X11!

没错,X11 是被修订过的。毕竟在二十多年的时间里, 硬件标准会变,操作系统也在演进。这些修订版本被称 为 X11R2(X Window 第 11 版第 2 次发布)、X11R3、 X11R4、X11R5 和 X11R6,一直到 X11R7 达到顶峰,它 发布于 2005 年 12 月 21 日(顺便说一句,那是我的 生日)。然而,没有任何一次修订重要到足以被称作 X12。

自 2005 年以来,X11R7 一直是标准。同样地,期间也 有修订,但都相对次要:X11R7.0、X11R7.1、X11R7.2、 X11R7.3,如此等等。有人在谈论 X12,但它在可预见的 近期是不会出现的。

要把这一大堆名堂讲出个道理,可以引用我上面提到的 那条原则:庞大的用户群会阻碍未来的开发。这话确实 不假,而且值得铭记,因为它是软件设计中一条重要的 长期原则,而大多数人(和大多数公司)都未能领会。

不过,看待 X Window 的发展还有另一种方式。你可以 说,MIT 最初的那批程序员设计出了一个足够好的系统, 以至于将近二十年过去,其基本原理依然行之有效,而 不得不做的主要改动都落在细节层面:修 bug、支持新 硬件、以及适配新版本的 Unix。

X 的程序员们向我们证明了这一点:当你要开发一款重 要的产品并希望它长盛不衰时,一开始肯花时间慢慢打磨 是值得的。一个灵活、深思熟虑的设计能赋予产品极大 的生命力。这同样是一条许多人都未能领会的编程原则。

名称的由来

X Window, X


X Window 的根基,可以追溯到斯坦福大学开发的某 个特定的操作系统。这个名为 V 的系统,由斯坦福 大学分布式系统组于 1981 年至 1988 年间开发而成。

当人们为 V 开发出一套窗口界面时,它被称作 W。 过了一阵子,W 程序被交给了 MIT 的一位程序员, 他以此为基础做出了一个新的窗口系统,并把它称作 X。

从此这个名字就叫开了。原因也许有两个:第一, Unix 系统的名字常常以 "x" 或 "ix" 结尾,而 X Window 主要也是配合 Unix 使用的。第二,要是 他们接着改名字,再多两个字母就用到字母表尽头 了。

顺便请注意,这个系统的正式名称是 X Window, 而不是 X Windows。

跳至页首

谁在主管 X Window?(Who Is in Charge of X Window?)

到 1987 年,X 已经流行到让 MIT 想放手不再主持这 个局面。(毕竟他们是一所学校,不是一家公司。) 起初,一批希望 X 的开发保持中立的厂商劝说了 MIT 继续主持大局。然而最终 MIT 态度坚决,于是 X 的 主管之责被移交了出去:先交给一个组织(the MIT X Consortium),再交给另一个组织(the X Consortium), 然后又交给第三个(the Open Group)。

如今,X 由第四个组织维护,那是一个名为 X.Org 的 独立团体。(我打赌你猜得出他们的网址。)X.Org 成立于 2004 年 1 月,自 X11R6.5.1 起就一直督导着 X 的维护工作。

1992 年,三位程序员启动了一个项目,着手做一版面 向 PC 的 X。具体来说,他们针对的是使用 Intel 386 处理器的 PC,所以把自己的软件叫作 XFree86。(这 名字是个双关,因为 "XFree86" 听起来像 "X386"。)

由于 XFree86 支持 PC 显卡,它开始与 Linux 搭配使 用;而随着 Unix 日益流行,XFree86 也跟着流行了起 来。在 20 世纪 90 年代末和 21 世纪初,官方的 X 开发慢如蜗牛,是 XFree86 的开发者们补上了这段空 缺。的确,XFree86 变得如此普及,以致有一段时间, 只要你在 PC 上用 Unix 和 GUI,你用的很可能就是 XFree86。

然而在 2004 年,XFree86 组织的主席决定修改分发 许可证。他的想法是:只要分发该软件的某些部分, 就强制人们向 XFree86 开发团队署名致谢。

这听起来是个高尚的念头,而且 XFree86 依然是开源 软件,这一点从未改变。然而,新的许可证与标准的 GNU GPL 分发许可证互不兼容(见第 2 章)。这让许 多程序员以及大多数 Unix 公司深感头疼,因为它会 带来极其麻烦的协调问题。

最终的解决办法,是由 X.Org 接管 X 的开发,他们也 确实这么做了,起点是不受新许可证束缚的最后一个 XFree86 版本。结果,XFree86 项目失去了大部分志愿 程序员,其中许多人转投 X.Org。

我之所以讲这些,有两个原因。第一,你会时不时碰 上 XFree86 这个名字,我想让你知道它是怎么回事。 第二,我想让你体会到:当开源软件被分发时,许可 证的细节可能关乎这款软件的前途。软件越流行,它 的许可证与先前那些许可证保持相容就越重要。本章 后面讲到名为 KDE 的系统时,我们还会再看到这一点。

跳至页首

抽象的层次(Layers of Abstraction)

如我所解释的,X Window 是一个可移植、与硬件无关 的窗口系统,能与许多不同类型的计算设备配合工作。 此外,X 几乎可以在任意类型的 Unix 上运行,也能在 某些非 Unix 系统上运行(比如最初由 DEC 开发的 Open VMS)。

这怎么可能?一个图形窗口系统,怎么能与这么多操 作系统、这么多不同类型的计算机、显卡、显示器、 指点设备等等一起工作?

正如我们前面讨论过的,X 是作为 Athena 计划的一部 分开发出来的,其目标是提供一个图形操作环境,能在 多种不同类型的硬件上运行各种各样的软件。因此,从 一开始,X 就是奔着灵活而设计的。

为了达成这个目标,X 的设计者运用了计算机程序员所 谓的抽象层次(LAYERS OF ABSTRACTION)。其思路是: 把一个宏大的整体目标界定为若干层次,你可以把它们 想象成从下往上叠放,一层压着一层。每一层的设计都 是向上为上一层提供服务、向下向下一层请求服务。除 此之外别无其他交互。

我们先举一个简短的抽象例子,然后再谈具体的东西。 假设有这样一个计算系统,由五个层次组成:A、B、C、 D 和 E。E 层在最底下;D 层在 E 层之上;C 层在 D 层之上;依此类推。A 层在最上面。

运行在 A 层的程序调用 B 层(而且只调用 B 层)的程 序来完成各种服务;B 层的程序调用 C 层(而且只调用 C 层)的程序;依此类推。

如果这样一个系统设计得当,那就意味着,比如说,负 责 C 层的程序员不必了解其他所有层次以及它们的运作 方式。他只需要知道怎样向 D 层请求服务,以及怎样为 B 层提供服务。由于他只关心自己那一层的细节,所以 就算有人改动 A 层或 E 层的内部实现,他也用不着在意。

跳至页首

窗口管理器(The Window Manager)

为了把抽象层次这个概念钉牢,我们来看一个真实的 例子。

从一开始,X Window 就被设计成 GUI 与硬件之间的 一种标准化接口。X 本身并不提供图形界面,也没有 任何规范去描述用户界面应该是什么模样。提供实际 GUI 的,是另一个叫作窗口管理器(WINDOW MANAGER) 的程序。

窗口管理器控制窗口以及其他图形元素(按钮、滚动 条、图标等等)的外观和特性。X 所做的,是弥合窗口 管理器与实际硬件之间的鸿沟。

举例来说,假设窗口管理器想在显示器屏幕上画一个 窗口。它把请求连同相关规格(窗口的形状、窗口的 位置、边框的粗细、颜色等等)一起发给 X。X 让窗口 被绘制出来,并在任务完成后向窗口管理器回送一条 消息。

这样一来,窗口管理器就完全不必知道如何画一个窗口, 那是 X 的活儿。同样地,X 也不必知道如何打造一个 真正的 GUI,那是窗口管理器的活儿。

由此你可以看出抽象层次的重要性。在某一层次上工作 的程序员可以忽略其他所有层次的内部细节。在这个例 子中,窗口管理器位于 X Window 之上的一个层次。当 窗口管理器需要显示什么东西时,它就调用 X Window 来干活。

这意味着,从事窗口管理器开发的程序员用不着操心在 显示器上显示数据、从鼠标和键盘获取数据的细节(那 是 X 的事)。他可以专心致志地打造 GUI,别的一概不 管。如我之前所说,X 的设计中没有任何规定说用户使 用 GUI 时屏幕该是什么样子。那由设计窗口管理器的程 序员说了算。

从一开始,人们的设想就是:有多少人愿意做,就会有 多少种不同的窗口管理器。既然每个窗口管理器都有自 己的特点,人们也就能在 GUI 之间有所选择。

当 Athena 计划发布 X10 — X 的第一个广受欢迎 的版本 — 时,他们附带了一个名为 xwm (即 X Window Manager)的初级窗口管理器。到了 X10R3,他们附带了一个新的窗口管理器 uwm。 到了 X11 — X 的第一个极为成功的版本 — 又有了另一个新的窗口管理器 twm

(uwm 这个名字原本是 Ultrix Window Manager 的缩写,其中 Ultrix 是 DEC 的 Unix 版本。后来这个 名字被改为 Universal Window Manager。twm 则代表 Tom's Window Manager,因为它是由 Tom LaStrange 写的。后来这个名字被改为 Tab Window Manager。)

twm 窗口管理器变得非常流行。事实上,它至今 仍随 X11 一起提供,可以视作默认的窗口管理器;它肯 定也是影响最大的一个。多年来,twm 衍生出了 一批产品,都是程序员在它基础上加以修改、做出自己 的窗口管理器而成的。(记住,整个 X Window 都是开源 的,任何人都可以改动它的任何部分,做出自己想要的 任何东西的专属版本。)

我提到 xwmuwmtwm,是因为 它们出于历史原因而重要,所以你应该认得这些名字。 从那以后,人们又为 X 写了许多其他窗口管理器,每一 个都有自己的特色、优势和劣势。不过,在众多新问世 的窗口管理器中,我只打算提两个:Metacity 和 kwm

这两个是相当重要的窗口管理器。不过,在我能解释为 什么之前,得先谈一谈下一个抽象层次,也就是坐在窗口 管理器之上的那一层:桌面环境。

跳至页首

桌面环境(The Desktop Environment)

正如我们所讨论的,提供一个基础的图形接口是窗口管理 器的职责。正因如此,正是窗口管理器让你能够创建窗口、 移动窗口、改变窗口大小、点击图标、拨动滚动条等等。

然而,使用一台现代计算机系统,需要的远不止一个基本 的 GUI。你需要一个深思熟虑、前后一致的界面。 而且你还希望这个界面有吸引力、合情合理、灵活可变 (就像你生活中的那些人一样)。

GUI 的强大之处,在于它能提供一个工作环境,让你能以 合理且切合需要的方式操作各种元素。你的界面需要有一 套内在逻辑,让你能在工作中随时随地解决问题。

在 X 的早期,人们直接与窗口管理器交互。然而,窗口管 理器所提供的基本 GUI 只能走那么远。它做不到的,是帮 你应付使用现代计算机时所涉及的那些复杂的认知任务。 这是一套更精密的系统的职责,它被称为桌面环境 (DESKTOP ENVIRONMENT),有时也被称为桌面管理器 (DESKTOP MANAGER)。

这个名字的由来是:工作时,你可以把显示器的屏幕想象成 一张桌面,你把正在处理的各种对象摆在上面。这个比喻最 初选定于很久以前,那时图形界面还是新鲜事物,GUI 设计 师们觉得,把屏幕看作一张桌面,对未经训练的用户来说会 是直观自然的。就我个人而言,我觉得这个比喻既误导又让 人糊涂。我真希望它早就被丢弃掉了(*)。

* 脚注

不过在比喻这件事上,我比别人挑剔得多。想想美国幽默作 家 Will Rogers 吧,他常说:"I never met-a-phor I didn't like."(这里把 metaphor "比喻" 一词拆开,与 met a phor 谐音,整句意思相当于"我从没遇见过一个我 不喜欢的比喻"。)

桌面环境让你能够回答这样的问题:我怎样启动一个程序? 我不想看某个窗口时,怎样把它移开或藏起来?我记不清文 件放在哪儿了,怎样把它找出来?我怎样把一个图标从一处 挪到另一处?我怎样给文件和程序排出轻重缓急,让最重要 的那些最容易找到?

这里有一个具体的例子。窗口管理器也许会处理我们的鼠标 移动,并显示出图标和窗口;而桌面环境则会让我们用鼠标 拖住一个图标,把它丢到一个窗口上。在这个过程中,正是 桌面环境为"拖放"这个概念赋予了意义

— 提示 —

千万不要被迷惑,以为计算机界面就该"直观"到让 新手一上手就能用得起来。复杂的任务需要复杂的 工具,而复杂的工具需要时间去掌握。

在某些情况下,设计者确实可以把界面弱化到让毫无 经验的人也能立刻使用。然而,第一天用着省事的东 西,等你有了经验之后就不会想再用了。从长远看, 容易学的界面比那些需要花时间掌握的强大工具更让 人沮丧。

当我们使用那些把"易学"当作首要设计目标的工具 时,最终得到的系统是 计算机 说了算。当我 们使用设计精良、需要花时间去学的强大工具时,最 终得到的系统是 用户 说了算。

Unix 就属于后一种情况。

跳至页首

抽象的层次:再论(Layers of Abstraction: Revisited)

继续套用我们的抽象层次模型,可以说:窗口管理器坐 在 X Window 之上,而桌面环境又坐在窗口管理器之上。

你可以在 Figure 5-1 中看到这一点,它展示了支 撑一个典型 Unix GUI 的各个抽象层次。注意,其中有几 层是我还没提到的。在最底层,X Window 调用操作系统 的设备驱动程序,由它们完成与硬件的实际通信。在最顶 层,用户以及用户运行的程序根据需要调用桌面环境。

Figure 5-1: 抽象的层次

在 Unix 之中,一个图形工作环境可以被看作一个 由若干层次的程序和硬件组成的系统。最上一层是 我们的应用程序(包括实用工具),以及用户本人。 往下第一层是桌面环境。桌面环境下面是窗口管理 器,如此等等。最底下是实实在在的计算机。从哲 学上说,我们可以把整个系统看作一种弥合人脑硬 件与计算机硬件之间鸿沟的手段。

 

关于这个模型,有两个重要概念我要强调。第一,正如我 们讨论过的,任何一个特定层次上发生的事情,其细节与 其他任何层次完全无关。第二,唯一存在的通信发生在相邻 层次之间,并且使用定义明确的接口。

举例来说,窗口管理器只与下面的 X Window 和上面的桌 面环境通信。这就够了,因为窗口管理器用不着关心其他 层次上发生的任何事情的细节。它存在的意义只是响应上一 层(桌面环境)的请求,而作为回报,它调用下一层 (X Window)来满足自己的请求。

跳至页首

Unix 公司是如何搞砸的(How the Unix Companies Blew It)

X Window 最初开发出来时,只有窗口管理器,以今天的 标准来看,它们提供的 GUI 相当原始。"人们也许会想要 一个功能齐全的桌面环境"这个念头,是随着程序员对界面 设计与实现懂得越来越多而逐渐成形的。虽说找不到一个确 切的时刻标志窗口管理器被桌面环境所取代,但事情大致就 是这样发生的。

到 1990 年,Unix 世界四分五裂,因为存在着好几家不 同的 Unix 公司,每家都有自己的 Unix 版本。尽管彼此 许下过合作的诺言,但竞争中的冷枪暗箭实在太多,而且大 多数公司对称霸市场的兴趣远远大于携手共事。就像操场上 打架的小男孩要各自选边站队一样,Unix 公司们组成了两 个伞状组织,每个都自称正在开发唯一正宗的 Unix。

正如我们在第 2 章中讨论过的,到 20 世纪 80 年 代中期,大多数 Unix 版本要么基于 AT&T 的 UNIX,要么 基于伯克利的 BSD,要么两者兼有。1987 年 10 月, AT&T 与 Sun Microsystems 宣布打算携手合作,一劳永逸 地统一 UNIX 和 BSD。这让其他 Unix 厂商大为恼火,于 是 1988 年 5 月,其中八家组成了开放软件基金会(OPEN SOFTWARE FOUNDATION,简称 OSF),以开发自己的"标准" Unix。这八家厂商中包括三家最重要的 Unix 公司:DEC、 IBM 和 HP(Hewlett-Packard)。

OSF 的成立让 AT&T 和 Sun 心里发慌。他们决定,要是 想跟 OSF 竞争,自己也得有一个组织。于是在 1989 年 12 月,他们圈拢了几家规模较小的公司,组成了 UNIX INTERNATIONAL(简称 UI)。

就这样,到 20 世纪 90 年代初,有了两个相互对垒的组 织,各自都在努力创造自己寄予厚望的那个唯一正宗的 Unix。作为其工作的一部分,OSF 和 UI 都开发了自己的 窗口管理器。OSF 的叫 mwm(Motif window manager),UI 的叫 olwm(Open Look window manager)。这意味着 X Window 用户当时在窗口管理器上 有了三个流行的选择:mwmolwmtwm(我前面提到过的那个)。

然而,twm 只是个平平常常的窗口管理器,而 mwmolwm 都更复杂、更强大。事实上, 它们正是今天那些精巧的桌面环境的鼻祖。

那么,为什么 Motif 和 Open Look 没有成为今天最重要 的 GUI 呢?答案是,它们的东家 OSF 和 UI 花了太多时间 互相争斗,以致丢掉了在 Unix 世界的领导地位。其中的细 节无聊得令人发指,我就不展开讲了(*)。要紧的是,到 20 世纪 90 年代中期,Unix 世界出现了一个大空档,而 这个空档被 Microsoft Windows NT 和 Linux 填上了。随 着 Linux 一起来的还有两个新的 GUI — KDE 和 Gnome — 它们与 OSF 或 UI 都毫无关系。

* 脚注

如果你真想知道发生了什么,那就去一场 Unix 编程会议, 找一位上了年纪的人,请他喝一杯。等他坐定了,就请他给 你讲讲"Unix 战争"。

如果你拿不准该问谁,就在会场里转悠,直到看见一个扎马 尾辫、穿一件洗得发白的 Grateful Dead 乐队 T 恤的人。

跳至页首

KDE 与 Gnome(KDE and Gnome)

1996 年,在图宾根大学(University of Tübingen) 读书的德国学生 Matthias Ettrich,对当时 Unix GUI 的状 况感到不满。1996 年 10 月 14 日,他发出了一则 Usenet 帖子,提议通过启动一个名为 Kool Desktop Environment (KDE)的新项目来纠正这个问题。(见 Figure 5-2。)

Figure 5-2: Matthias Ettrich,KDE 项目的创始人

Matthias Ettrich 于 1996 年 10 月创立了 KDE 项目。 后来 KDE 成功到这样的地步:人们可以说 Ettrich 是 桌面环境之父。这张照片拍于该项目启动后的几个月。

Ettrich 主张,现有的窗口管理器是有缺陷的;他说:"一 个 GUI 应当提供一个完整的图形环境。它应当让用户在其中 完成日常事务,比如启动应用程序、阅读邮件、配置自己的 桌面、编辑一些文件、删除一些文件、查看一些图片等等。 所有部分必须彼此契合、协同工作。"

Ettrich 是在为他的女朋友配置一套 Linux 系统时注意到这 些缺陷的。他意识到,尽管自己精通此道,却怎么也没法拼 出一个既整合良好、又好让女朋友上手的 GUI。他号召人们 志愿参与 KDE 的工作,并承诺"主要目标之一,就是为所 有应用程序提供一种现代化的、共同的外观与感受。"(*)

* 脚注

可以想见,Ettrich 的女朋友并不像他那样热衷于技术,这 让他认识到:现行的 GUI 虽然程序员们勉强能用,对普通 人却并不好用。最终,这个由 Ettrich 的经历催生的 KDE 项目,做出了第一个真正整合的桌面环境,永远地改变了人 们看待 GUI 的方式。

人们只能暗自琢磨:假如 Ettrich 的女朋友再丑那么一点 点、再书呆子气那么一点点,一个真正的桌面环境还要多久 才会被开发出来?既然 KDE 后来对 Linux 在全世界被人接 受产生了深远影响,那么这难道不正是一条理由,说明社会 应该拿出更多资源来鼓励美女与程序员约会吗?

更具体地说,Ettrich 请求人们帮忙做一个控制面板(配上 "漂亮"的图标)、一个文件管理器、一个电子邮件客户端、 一个好用的文本编辑器、一个终端程序、一个图片查看器、 一套超文本帮助系统、系统工具、游戏、文档,以及"许许 多多的小工具"。各色程序员回应了 Ettrich 的邀请,KDE 项目就此成形。

Ettrich 的主要抱怨之一是,那些流行的 Unix 应用程序没 有一个用起来一样、看起来也一样。KDE 的程序员们奋力苦 干,到 1997 年初,他们已经开始发布一些大型而重要的应 用程序,它们在一个整合的桌面环境内协同工作。就这样, 他们做出了一个功能强大的新型 GUI,开始引起广泛的兴趣。

然而几个月之内,Linux 社区中的一些程序员就开始对 KDE 表达担忧。Ettrich 选择用一个名为 Qt 的编程工具箱来构 建这个新的桌面环境。Qt 是一家挪威公司 Trolltech 写的, 其授权条款规定个人使用免费,但商业使用不免。

对 KDE 的程序员来说,这没什么问题:从一开始他们就把 KDE 看作非商业产品。然而其他人觉得 Trolltech 的授权 安排还不够"自由"。特别是那些与 GNU 项目和自由软件基 金会有瓜葛的程序员,他们希望 KDE 换一个限制更少的许可 证,不然就要有一个按 GNU GPL 授权的 KDE 替代品。(参 见第 2 章中关于自由软件的讨论。)

1997 年 8 月,两位程序员 Miguel de Icaza 和 Federico Mena 启动了一个项目,正是要创造这样一个替代品,他们称 之为 GNOME。尽管 KDE 当时已经根基稳固,Gnome 项目仍然 吸引了大量关注,一年之内就有大约 200 位程序员在为 Gnome 工作。

(你也许还记得,本章前面我提过两个窗口管理器: Metacity 和 kwm。当时我说,在众多可用的窗口管 理器中,这两个重要到我希望你记住它们的名字。它们之所 以重要,是因为 Metacity 是 Gnome 的窗口管理器,而 kwm 是 KDE 的窗口管理器。)

名称的由来

KDE, Gnome


建造 KDE — 第一个基于 X 的桌面环境 — 的 项目,是由一名德国大学生 Matthias Ettrich 发起的。 Ettrich 提出这个项目时,建议取名 KDE,代表 Kool Desktop Environment。不过后来这被改成了 K Desktop Environment。

正如 X Window 被简称为 X,字母 K 也常被用来代表 KDE 桌面环境。例如,在 KDE 内部,自带的 Web 浏览器 叫 Konqueror;CD 音轨抽取器叫 KAudioCreator;计算器 程序叫 KCalc;如此等等。要说对字母 K 用得最离谱的 一处,KDE 的终端模拟器被命名为 Konsole 大概算得上。

在 Gnome — 以及更广义的 GNU 项目 — 里, 你会看到字母 G 的同样用法。例如,那个类似 Photoshop 的程序叫 Gimp(GNU Image Manipulation Program,GNU 图像处理程序);即时通讯程序叫 Gaim;计算器程序叫 Gcalctool;如此等等。

Gnome 这个名字代表 GNU Network Object Model Environment(GNU 网络对象模型环境)。"Gnome" 有两种 读法:要么读作 "Guh-nome",要么读作 "Nome"。依我的 经验,编程极客们把 GNU 读成带硬 G 的("Guh-new"), 把 Gnome 读成带软 G 的("Nome")。

跳至页首

CDE 与总拥有成本(CDE and Total Cost of Ownership)

到 1999 年,已经有两个流行且设计精良的桌面环境: KDE 和 Gnome。这两个 GUI 在 Linux 社区中都享有广泛 的支持(而且直到今天,它们仍在全世界被广泛使用)。

与此同时,商业 Unix 公司们仍在经营,而到了这时,它们 认识到了桌面环境的重要性。我早先提到的 The Open Group 组织已经接手了 Motif 窗口管理器的开发。在 20 世纪 90 年代初,它们开始着手做一个基于 Motif 的新的专有桌面环 境 — CDE(Common Desktop Environment) —。经过一次多家公司参与的大规模努力,CDE 于 1995 年推出。到 2000 年,CDE 已成为商业 Unix 系统的 首选 GUI,比如 IBM 的 AIX、HP 的 HP/UX、Novell 的 Unix 以及 Sun 的 Solaris。

你也许会想,为什么需要 CDE?既然 KDE 和 Gnome 都免费 可得,为什么还有那么多计算机公司花钱去开发一个专有的 产品?往大里说,为什么干脆还需要商业 Unix 呢?毕竟 Linux 可以免费拿到,授权条款也很宽松。为什么各家公司 不干脆转用 Linux,然后要么用 KDE 要么用 Gnome?

答案与商业市场和消费市场之间的一个根本差别有关,而且 这条原则重要到我要专门花点时间来解释它。

作为消费者,你我对自己的软件只想要两样东西。第一,它 应当便宜(能免费最好);第二,它应当能干活。我们心里 明白,一旦出了问题,我们只能靠自己。我们可以读文档, 可以在互联网上找帮助,也可以问别人。如果我们急得没办 法了,可以花钱请人来帮,但在大多数情况下并没有那么迫 切。如果不得不等一个解决方案,那是麻烦,但谈不上灾难。

在公司里,尤其是在大公司里,情况就不一样了。即便一个 很简单的软件问题,也可能影响成百上千人。等待解决方案 可能代价高昂,对公司和对客户都是如此。因为大公司承受 不起严重的问题,它们就雇用全职的计算机人员来维护网络、 服务器和个人计算机。正因如此,当公司评估一个产品 — 无论是软件还是硬件 — 时,它们并不盯着 初始成本。它们看的是所谓的总拥有成本(TOTAL COST OF OWNERSHIP),简称 TCO。

要计算总拥有成本,公司必须回答这个问题:如果我们决定 使用这个产品,从长远看它要花我们多少钱?

要为桌面环境这么复杂、这么根本的东西计算 TCO 并不简 单。对你我而言,初始花费就是全部花费。如果我们能免费 拿到 KDE 或 Gnome,那我们只关心这一点。软件问题可能 烦人,但正如我所说的,那更多是麻烦,而不是钱的问题。

大公司则用不同的眼光看待。它们固然会评估最初的购买成 本或授权费用,但也会做更复杂的长期分析。这类计算细节 超出了本书的范围,但其中的思想值得一懂,所以我给你一 个简要的概括。

在公司采用一套重要的硬件或软件系统之前,它们的财务分 析师会考察所谓直接成本和间接成本。直接成本涵盖硬件和 软件两方面:最初的购买或租赁开销、运营、技术支持和管 理。间接成本则与生产力的损失有关。它们包括员工花在学习 如何使用该系统上的时间;包括某些员工因为帮助其他员工而 损失的时间(这种事在哪儿都会发生);以及因故障和计划内 维护造成的停机成本。

一旦这些成本都被估算出来,它们会被折算成年度支出,这一 计算包含了折旧和升级的费用。然后年度支出被并入公司整体 预算,并与公司长期增长的规划相对照协调。

在大多数情况下,当软件或硬件的总拥有成本被算出来时,我 们发现的结果有悖直觉:初始成本其实没那么要紧。从长远看, 真正重要的是持续不断的开销和间接成本。

因此,当一家公司考虑采用新软件时,它们问的不是买这个产 品或取得授权要多少钱。它们问的是:这款软件能多好地融入 我们现有的环境?它如何契合我们的长期规划?它能为我们的 客户提供多好的服务?长期维护要花多少钱?

一旦这些问题有了答案,情况就很清楚了:对于 企业用 途 而言,最好的软件通常不是那些为个人或教学用途设 计的自由软件。商业软件必须具备适合商业的特性。必须有 一大整套维护良好的编程工具;必须有一个定义明确的、面向 企业而非个人需求的长期开发规划;最重要的是,必须有出色 的文档和高质量的技术支持。这就是为什么大多数大企业更愿 意坚守商业软件。这也是为什么在企业世界里,Linux 并没有 取代 Microsoft Windows,而且很可能永远不会。

这并非说大公司从不用自由软件。当这样做讲得通时,它们会 用。例如,IBM 不仅提供自己的 Unix 版本(AIX),也提供 Linux。然而,当 IBM 这样的公司提供一款开源("自由") 软件产品时,它们会为这个产品投入 大量 金钱,给 予支持和增强。例如,IBM 在 Linux 的开发和支持上已经花 了数百万美元。事实是,对一家大公司来说,没有什么是真正 免费的。

回到桌面这个话题,你可以看出,在 20 世纪 90 年代,企业 界拥有自己的桌面环境为何如此重要。尽管 KDE 和 Gnome 表 现都不错,但它们并不具备企业所需要的那一类特性和支持。

这正是 The Open Group 成立的原因,也是它们开发 CDE 的 原因。而这也正是为什么,在 20 世纪 90 年代末,企业用户 选用的桌面环境是 CDE — 而不是 KDE 或 Gnome。

进入 21 世纪,随着自由软件变得越来越重要,Unix 公司开 始在推出自有专有 Unix 的同时,也推出自己的 Linux 版本。 例如,IBM 同时提供 AIX 和 Linux;Sun 同时提供 Solaris 和 Linux;HP 同时提供 HP-UX 和 Linux;如此等等。

不出所料,这也意味着 Unix 公司同样提供 KDE 和 Gnome。例如,IBM 为它们的 AIX 用户提供 CDE、KDE 和 Gnome 三种选择;Sun 同时提供 CDE 和 Gnome;HP 也同时 提供 CDE 和 Gnome。

当然,这些版本的 Linux、KDE 和 Gnome,与你我从网上免 费下载、毫无支持的那些发行版并不相同。它们是商业品质 的产品,附带商业品质的技术支持(要花钱的)。

跳至页首

选择桌面环境(Choosing a Desktop Environment)

当你使用 Unix 时,你会强烈地感觉到桌面环境与真正的操 作系统是分开的。Windows 或 Mac OS 就不是这样,因为 Microsoft 和 Apple 都在竭力让人们相信:计算机附带的每 一个重要程序(包括浏览器、文件管理器和媒体播放器)都 是操作系统的一部分。

事实并非如此:那只不过是包装成了那样而已。因为你是 Unix 用户,你能把操作系统和其他一切区分开来,这就让 你可以自由地问自己:"在 我的 桌面上,我想要些 什么?"

许多公司和学校把计算机工具统一化。如果你在其中一家公 司工作,或者在其中一所学校念书,你就必须使用它们指定 你用的那个桌面环境。然而,如果你在自己的计算机上运行 Linux — 或者你的组织让你有得选 — 你就能自 己决定用哪个 GUI。

那么,哪个桌面环境最适合你?

如果你用 Linux,那有很多免费的桌面环境,所以你有极大 的选择余地。(想体会我的意思,只要在互联网上搜索 "desktop environment" 就够了。)不过,几乎所有 Linux 发行版都自带 KDE 或 Gnome,或者两者皆有;我的建议是 — 除非你有理由另作选择 — 你先从这两个 GUI 中挑一个开始。(见 Figure 5-3 和 Figure 5-4。看这两张 图时,请把注意力放在 GUI 的外观与组织上 — 窗口、 图标、工具条等等 — 而不是窗口里面的内容。)

Figure 5-3: KDE 桌面环境

创建 KDE — 第一个真正的桌面环境 — 的项 目由 Matthias Ettrich 于 1996 年发起。他的目标是 创造一个"完整的图形环境",其中"所有部分彼此契 合、协同工作"。

Figure 5-4: Gnome 桌面环境

Gnome 项目由 Miguel de Icaza 和 Federico Mena 于 1997 年发起,目的是做出一个 KDE 的替代品,并以授 权条款更宽松的方式分发。

那我们就把问题收窄一点:就 KDE 和 Gnome 而言,哪一个 适合你这样的人?

首先,看看下面五句话。针对你的个人偏好,把每句话标记 为"对"或"错"。然后我们根据你的答案作出判断,挑出最 适合你的桌面环境。

1. 我宁愿开手动挡的车,也不愿开自动挡的车。

2. 比起一间装饰讲究、乱得惬意的屋子,简洁而有条理的 屋子更让我自在。

3. 当我和男/女朋友或丈夫/妻子私下讨论问题时,我很在意 我们要花时间去弄清楚谁对谁错。

4. 我买回 DVD 播放机之后,至少读了说明书的一部分。

5. 当我使用 Microsoft Windows 或 Macintosh 时,我一般 让东西保持原样,不去乱动颜色、背景等等。

在解读你的答案之前,我想让你明白:所有桌面环境都不过 是使用同一套底层计算环境的某种方式而已。所以无论你选 哪个桌面环境,都挺好。话虽如此,用一个契合你性格的桌 面环境,你会用得更舒心,那我们就接着往下分析。

不论你的技术水准如何、对计算机兴趣多大,如果你勾了 3、4 或 5 个"对",就用 Gnome;如果你勾了 0、1 或 2 个 "对",就用 KDE。

请注意,我说过你的选择不该取决于你懂多少计算机。有些 很懂技术的人偏爱 KDE,也有人偏爱 Gnome。同样,许多不 懂技术的人选 KDE,也有人喜欢 Gnome。

这种分野更多关乎你如何看待世界,而不是你懂得多少。 Gnome 派在简洁与秩序中如鱼得水。他们希望事情合乎逻辑。 如果有必要,他们愿意下足够的功夫,让某样东西以对他们 而言讲得通的方式运转。

Gnome 派会认同"形式永远追随功能"(form ever follows function)这句格言,这是美国建筑师 Louis Sullivan 在 1896 年提出的思想。Sullivan 观察到,自然物体的外观受 其功能的左右。Gnome 派希望世界以理性的方式运作,他们 喜欢外观能直接反映用途的工具。

如果说 Gnome 派喜欢控制事情"如何运作",那么 KDE 派喜 欢控制事情"看起来怎么样"。这是因为他们不那么在 乎"对不对",更在乎以一种让自己情感上舒服的方式生活。

KDE 派把世界看作一个充满色彩、变化、有时还一片混乱的 地方。他们倾向于接受生活的本然面目,而不是费大力气去 修好细枝末节。当他们有兴致花时间去定制自己的工作环境 时,他们往往会让东西看起来漂亮、用起来也漂亮。

现在,再回头看一遍你在这几道判断题里给出的答案。你是 KDE 派还是 Gnome 派?

有个问题随之浮现。我们有两种不同的桌面环境,每一种都 是由各自的一群人、来自世界各地协同创造出来的。怎么会 有某些性格特征,能把 KDE 派和 Gnome 派区分开来呢?

答案在于这两个团体各自的起源。正如我们前面讨论过的, KDE 团体由一群对现状不满的人发起。他们想创造一个完整 的工作环境,它比当时的窗口管理器既更好用、又更好看。

Gnome 团体则由一群对 KDE 不满的人发起,起因是一个与授 权条款有关的抽象的法律问题;而这种缺陷 — 说实在 的 — 大多数人根本就会置之不理(所有 KDE 的人正是 这么做的)。然而,对一个 Gnome 派 — 或者更准确地 说,对一个自由软件基金会那种类型的人 — 来说,对 的就是对的,不对的就是不对的,如此而已。(参见 第 2 章中对 Richard Stallman 的讨论。)

那么,每个团体各自创造出一个适合自己这类人的桌面环境, 难道不是顺理成章吗?也许,设计消费品(包括软件)的人, 真该更留意一下 KDE/Gnome 的这种分野。

跳至页首

祖母机(The Grandmother Machine)

既然我们已经讨论过最重要的那些 GUI 和最重要的那几类 Linux(第 2 章),我想用回答一个我常听到的问题来 结束本章:

"我正在用自由软件为一个不太懂计算机的人攒一套系统。 我该用什么软件?"

我把这样的计算机称为祖母机,因为它就是一台你可能为你 祖母搭建的系统。

当你设置一台祖母机时,你必须明白,你将担负起一份永久 性的责任,因为每当你的祖母遇到麻烦,她就会打电话给你。 所以你应该使用可靠、容易安装、容易更新的软件。你还希 望有一套系统,能配置成让新手轻松地上网、查邮件,并且 (在某些情况下)使用文字处理、电子表格、演示文稿等等。

以下是我的建议。阅读时请记住,情况会随时间变化。新的 软件不断涌现,老的软件则日益臃肿而不可用。所以要领会 我这些选择背后的一般原则,而不只是那些具体的选项。

要打造一台祖母机,请使用下列软件:

• Ubuntu Linux:它基于 Debian Linux,安装和维护都 很容易。

• Gnome:Gnome 桌面环境用起来简单,却又足够稳健, 新手不会把它弄糟。

如果那位祖母是个很 KDE 的人,你可以给她 KDE。不过,请 务必就在 Gnome 或 KDE 里二选一。不论你个人偏好如何, 都别去折腾那些不太常见的桌面环境。

设置 GUI 时,一定要花点工夫,让你的祖母启动她喜爱的应 用程序时尽可能省力。最好的办法是在控制面板上创建几个 图标。(同时,你可以把她永远用不到的那些图标去掉。)

• Firefox:Firefox 浏览器既好用又强大。至于电子邮 件,给她注册一个基于 Web 的账户(比如 Google 的 Gmail),让她用浏览器来通信。

Firefox 非常棒,但请务必打算花点时间教你的祖母如何使 用它。此外,在她习惯使用 Web 之前,你还要打算在电话里 回答她的问题。(避免无谓提问的最好办法,是创建一个指 向 Google 的链接,并教会你的祖母怎么用。做这件事时,记 得花点时间讲讲如何从搜索结果里看出个所以然。)

• Open Office:一套自由的生产力软件(文字处理程序、 电子表格程序等等),与 Microsoft Office 兼容。

最后一条建议:我在帮人挑选计算机系统方面经验不少,而 且我注意到一条很少被人提及的普遍原则。

当你替别人挑计算机时,如果把我的所谓"硬件需求"当作建 议的根据,效果并不好。最管用的做法,是根据对方的心理 需求来选一套系统。这个想法太重要了,我要把它写成一条 提示。

— 提示 —

Harley Hahn 帮人挑选计算机的法则

1. 当你替某人挑选一台供他个人使用的计算机时,选一套能 满足他心理和情感需求的系统。

在大多数情况下,对方自己说不清他们的需求,所以你必须 自己去琢磨出来。在这个过程中,别让自己被带偏,陷进关 于硬件规格或其他琐事的冗长讨论。

2. 当你为一位在公司里工作的人挑选计算机时,选一套与那 位将要批准这笔开销的人的心理相契合的系统。

在公司环境里,人来人往,所以不要根据某个特定用户的需 求来选系统。要选一套适合 公司 的系统。

最好的办法,是去找一台能满足开支票的那位的心理和情感 需求的计算机,而不是满足即将使用这台机器的人的需求。 当你和一家小企业打交道时,尤其如此。

跳至页首



练习(Exercises)

复习问题 #1:

说到显示信息,大体上数据有两种类型。它们分别是 什么?

复习问题 #2:

支撑大多数 Unix 图形用户界面(GUI)的那个系统叫 什么名字?它最初是在何处、于何时开发出来的?说出 它提供的三项重要服务。

复习问题 #3:

什么是抽象的层次?说出一个典型 Unix GUI 环境中的 六个层次。

复习问题 #4:

什么是"总拥有成本"?

谁在使用这个概念?为什么?

当一套计算系统的总拥有成本被算出来时,初始成本有 多重要?

复习问题 #5:

什么是桌面环境?

在 Linux 世界里,最受欢迎的两个桌面环境是哪两个?

进一步思考 #1:

一般而言,使用 GUI 时窗口都是矩形的。这是为什么?

在什么情况下,用一个圆形的窗口才讲得通?

进一步思考 #2:

你在一家使用运行 Windows 的 PC 的大公司工作。这家 公司已经统一采用 Microsoft Office 产品(Word、 Excel、PowerPoint 等等)。你正在参加一个会议,会上 一个刚毕业的年轻程序员建议公司把 Office 换成自由的 替代方案 Open Office。为什么这是个馊主意?

建议公司继续坚守 Microsoft 产品,这件事让你心里不 安吗?如果是,为什么?

跳至页首