理念的缺失:Windows 7任务栏 VS OS X Dock

Windows 7带来了全新的任务栏,同时也带来了微软模仿Apple的言论。这一次,虽然微软被指责模仿OS X的Dock,但我们的深入调查发现这两个功能的差异要比相似性更大,虽然没有压倒性的胜利者,但这两种方式都在互相学习。

开启复印机?

Windows 7中全新的任务栏和Mac OS X的Dock有很多相似之处,而相似性中的很多没什么建设性,并不会让Windows变得和Mac过于相像。就算在Mac用户中,这种新的任务栏也不是人人都能接受,很多人甚至觉得这种Dock非常难用

表面上看,这两个功能的相似之处很明显:Dock和任务栏都由很大的图标组成,这些图标可用于启动或切换应用程序。然而更仔细查看会发现,在很长时间内,任何人都不需要担心微软盲目模仿Apple。Windows的UI并没有变成Mac OS X的UI,至少目前还没有。

UI理念

为了清楚了解任务栏和Dock的不同之处,首先我们需要了解Windows和OS X构建时的一些基础规范。本节的大部分信息都只是对很多读者抱有的误区进行纠正,但依然值得一读,因为这些信息是本文其他内容的基础。

OS X和Windows之间最基本的区别在于,一般来说,Mac OS X上的“窗口”代表的是不同文档,而Windows上的“窗口”代表的是不同应用程序这个概念上的差别是这两个操作系统中很多UI功能的诱因,而理解这个不同也是理解这两个操作系统不同之处的关键。

实际上,这种差别最明显的表现在于,在Mac OS X中,关闭某应用程序的最后一个窗口并不会让该程序退出。毕竟每个窗口对应的实际上只是不同文档,而没有打开任何文档,并不意味着该应用程序就必须被关闭,也许用户的下一步操作正是闯进啊新文档,或打开其他现有文档。然而在Windows中,关闭最后一个窗口通常会完全关闭该应用程序。因为应用程序就是窗口,关闭窗口自然会同时关闭对应的应用程序。

因此,举例来说,在下图中,我们看到的是运行中的TextEdit,以及一个打开的文档窗口。关闭该文档并不会关闭TextEdit,该程序依然在运行,只不过没有打开任何窗口(也就是文档)而已。

TextEdit with one document
TextEdit

TextEdit with no documents
TextEdit没有显示任何窗口,但依然在运行。

作为对比,在Windows中,关闭最后一个文档会直接关闭对应的应用程序:

Notepad with one document
记事本

Notepad with no documents
因为完全没打开窗口,记事本无处运行,因此会被关闭,同时在任务栏上也不再显示对应的图标。

Mac所用的这种“每文档一个窗口”的模式自然会使得所有Mac软件都能同时加载并显示多个文档;要使用多个文档,只需要创建多个窗口即可。

TextEdit with several document
毋庸置疑,多个文档就等同于多个窗口

但在Windows下这种情况就不是很明了了。因为每个窗口都代表一个完整的应用程序,如果用户希望同时打开两个文档,应用程序会怎么办?这个问题并没有标准答案,这也就意味着不同的Windows应用程序可能有不同的做法。这个问题最简单的例子就是记事本,记事本无法打开多个文档,因此如果需要使用多个文档,就需要运行多个该程序的副本。

Notepad with several documents
多个记事本文档意味着多个记事本应用程序

虽然对于小型,轻量级的应用程序,例如记事本,这种做法非常合理,但对于大型应用程序,则结果有些差强人意,也正是因此,我们会在Windows程序中看到很多不同的处理方式。

MDI和其他候选方案

让Windows应用程序打开多个文档最常用的方法也许是多文档界面(MDI,Multiple Document Interface)。虽然这种方式目前的应用不像以往那么流行,不过对这种方式,最基本的做法就是由一个主应用程序窗口包含多个子窗口,每个子窗口对应不同文档。

TextPad with several documents
TextPad可提供最“传统”的MDI视图。

MDI应用程序提供了不同的方式,可供在应用程序的窗口内使用多个子窗口,这就形成了一种类似“双重窗口”的管理系统,应用程序的窗口可以直接在桌面上进行整理,同时文档的窗口可在应用程序的窗口内部进行整理。但正是后者导致传统的MDI方式最终失败,因为文档窗口被限制在应用程序窗口内部,这样用户就不能在不同窗口中使用文档,也不能让在不同应用程序中打开的不同文档互相重叠。MDI还使得在窗口见进行切换的工作更难实现,每个MDI应用程序都带有在不同窗口间切换的菜单项,但这种方式很不方便,尤其是在打开多个文档的情况下。为解决这一问题,最后出现了“标签(Tab)”方式的窗口,但其他 MDI方式的问题,例如文档被限制在窗口内部所导致的“两级管理”模式,在使用标签方式的程序中依然存在。

因此,为了取代这种混合架构,很多Windows应用程序开始放弃MDI模式。第一个这样做的重量级程序是微软自己的Office软件。所有这些候选方案的主要目标是提供一种单一窗口管理系统,这样使用任务栏就可以切换不同窗口,同时可在桌面上随意放置不同窗口,这样不同窗口就可以放置在多个显示器上,并能和其他应用程序的窗口互相重叠等。然而,所有这些系统都存在一定的约束,在Windows中,依然是由窗口代表不同的应用程序。

Word 2007也许是其中进展最快的。Word中的多个文档会生成多个功能完整的窗口(有自己的标题栏、菜单、Ribbon工具栏等),并且所有内容都显示在桌面上。每个窗口在任务栏上还显示有一个按钮,这样就可以更容易在多个显示器上进行切换和定位。

Word with several documents
多个Word文档,每个都有一个独立的窗口。

然而很明显,Windows UI的本质依然是基于应用程序的。在Word 2007中关闭文档窗口并不会关闭Word本身,除非被关闭的是最后一个
开文档所对应的窗口。只要最后一个文档被关闭了,Word就会关闭。因此单击每个窗口右上角的X按钮会导致两种可能结果:可以只关闭对应的文档,或关闭整个Word。虽然也可以通过其他方法关闭所有文档,但不关闭Word,但这也显示出Windows UI“以应用程序为中心”的本质。

Word with no documents
不打开任何文档,只能看见一个简陋的应用程序窗口。

Windows中的每个应用程序都需要一个窗口,而这种需求并不会因为没有打开文档而消失。因此,Word可供选择的余地很少,只能显示丑陋的应用程序窗口。如果没有窗口,则应用程序根本没有可存在的场所,因为窗口就是应用程序。

其实Word的这种情况并不是最糟糕的,Excel面对的问题才麻烦。Excel需要创建傀儡窗口,而这种窗口的唯一用途就是供在不同窗口中进行类似“任务栏”方式的窗口切换。但这就是该程序的实现方式:Excel依然是MDI应用程序,多个文档那个依然会被限制在应用程序窗口内部。

Excel with multiple documents
虽然在任务栏上有傀儡按钮,但Excel依然是MDI程序。

Excel的这种问题令人非常头疼,因为任务栏上的傀儡按钮身子和无法显示缩略图。这种问题还出现在alt-tab切换操作中,Excel对每个文档都会显示一个(无缩略图)的按钮,同时还会显示一个额外的(有缩略图)按钮,代表实际的Excel窗口。

Excel's alt-tab entries
傀儡按钮还会显示在alt-tab切换操作中。

这些解决方法在Windows的基本设计中不仅作用有限,而且有时候也会削弱MDI提供的便利之处。通过使用MDI,要关闭某一应用程序以及打开的所有文档,或者同时显示或隐藏所有文档,只需要一个很简单的操作。而Word和Excel所用的混合方法并不能用同样快速或简单的方式实现此类操作。

另一种因为Windows的设计而显得不便的应用程序是大部分时间在后台运行,但需要定期显示通知或消息的程序,即时通讯软件通常就属于这种类型。大部分时候,此类IM软件虽然在运行,但我们不需要看到该程序的任何窗口,同时我们也不希望因为关闭窗口而关闭了该程序,我们能需要在关闭窗口后,程序可以在后台运行。在Windows中,对于这种功能缺乏有效的实现方法。如果某个应用程序不显示窗口,通常就意味着该程序完全没有运行。对于这种问题,常见的解决方法是使用通知区域(通常被错误地叫做“系统托盘”)对运行中,但不显示窗口的应用程序提供访问准备。

任务栏的演变

结合上文,Windows 95最初的设计就显得非常合理了。每个任务栏按钮都对应一个运行中的程序,而且任务栏对运行中的应用程序提供了非常便利的切换方法。有时候,某一应用程序可能包含多个文档,但有时可能只包含一个文档,不过在任何情况下,按钮本身的含义都是完全相同的,按钮对应的就是应用程序,而任务栏是用于切换应用程序的。作为一种完全不同的机制,开始菜单则是用于启动应用程序的。

就算在Windows 95中,这种设计的缺陷也是显而易见的,因为自从Windows 95时代,通知区域就开始被后台运行的应用程序滥用,随后的软件开发趋势则使得这一缺陷更加明显。大量使用MDI方式导致的问题在于,这种方式破坏了任务栏按钮和运行中的应用程序之间的“单相关”性,使得用户在使用过程中遇到越来越多奇怪和互相冲突的结果。正因为如此,IE4中新的外壳使得工具栏可以停靠在任务栏上,但同时依然保留应用程序切换(有时也用于文档切换)按钮,但同时可以提供各种附加的功能,例如地址栏(随后还逐渐出现了输入法选项、 Windows Media Player控件,以及搜索功能),以及更重要的变动:添加快捷方式。

An MDI app in Windows 98
Windows 98中的Word 97。

额外增加的快速启动工具栏意味着,任务栏已经可以包含运行中的应用程序之外的其他内容,同时还可以包含没有运行的应用程序。同时,这种变化也促成了三个概念:代表没有运行的程序的图标,代表运行中的应用程序的图标,以及代表文档的图标。最初任务栏单一的用途正在被改变,不再只能用于切换应用程序,任务栏已经开始包含“应用程序启动”以及“窗口切换”这两种功能。但任务栏也并非唯一承担这种变动的地方,alt-tab切换操作也可以在原本的应用程序切换功能之外增加了窗口切换的功能。Windows已经不再提供任何单纯的应用程序切换功能了。

随着概念的变化,这种演变还揭示出任务栏的一些不足之处。在严格的MDI应用中,每个应用程序窗口都包含所有文档窗口,而任务栏按钮的数量依然是非常易于管理的。就算在Word或Excel中同时打开多个文档,任务栏对每个程序也只显示一个按钮。这样就算同时运行多个应用程序,任务栏上的按钮也不会变得过于拥挤或难以辨识。但逐渐的,应用程序开始为每个打开的文档创建一个任务栏按钮,同时任务栏上也出现了越来越多的工具栏,这些方式的使用使得任务栏空间成了人人争抢的香饽饽。每个新的Word或Excel文档都会增加一个按钮,这样很快,任务栏上的按钮文字就无法看清了。

为了缓解这种问题,XP中提供了任务栏分组功能,如果任务栏空间变得拥挤,那么来自同一个程序的多个窗口可以被合并成一个按钮。如果完全合并,则每个按钮又开始对应每个应用程序,随后需要使用按钮的弹出菜单代表该程序中打开的每个文档。这种做法有助于保持任务栏以往的秩序,但依然无法提供MDI的所有优势。另外,默认的设置只有在必要时才合并按钮,因此只有在任务栏被填满后,系统才会更改切换行为。可能这个时候按钮可切换窗口,但突然又变成可同时切换不同的应用程序和文档。最糟糕的情况下,可能有些程序的按钮被合并了,但有些程序依然未被合并。

以往的做法意味着目前的任务栏是由互相冲突的目标和概念混合而成,虽然这并不是说这种方法就完全没用,但作为一种折衷的方法,这种设计依然有可取之处。不过这种设计还有很多可供改善的余地。

A Windows Vista Taskbar
如何保持一致性

Apple的做法

在篱笆的另一头,还有Mac OS X。自始至终,Mac的做法是用窗口代表不同文档,因此Mac从来没有使用过类似Windows方式的MDI界面。应用程序完全没有自己的窗口,任何窗口(通常)都代表特定文档,并且窗口可在桌面上随意放置。这意味着Mac OS X的应用程序永远不会违反系统的设计原则,例如为每个文档创建一个Dock图标。但也有少量应用程序不遵守
一规则,尤其是不需要面向“文档”的程序,例如System Preferences就不是针对文档的,当这个程序的窗口被关闭后,该程序就会自动被关闭。不过一般来说,Windows上看到的多种不同方式并存的局面并没有出现在OS X中。

The Dock

Dock的底层概念和传统的Windows任务栏有很大不同。Dock的左侧用于放置应用程序,对于这一点,有一个很有趣的情况,在Dock中,并不会区分对待切换运行中的应用程序,以及在没有运行的应用程序之间切换这两种做法。不过在视觉上,这两种情况也有所区别(在图标下方会显示一个小蓝点,例如上图所示Adium的鸭子图标),但区别也仅限于此。这种做法的理由在于,无论某个应用程序是否已经运行,都没有太大区别,Dock可以让我们在应用程序之间进行切换,而在切换到的时候,如果目标应用程序还没有运行,Dock直接把该程序运行起来即可。

Dock的右侧位置则有些麻烦,这里充满了各种乱七八糟的功能。在上图所示的Dock中,这里包含了三个文件夹,四个最小化的窗口,还有一个垃圾桶。任何文件夹都可以放到Dock上,单击文件夹即可显示其中的内容。最小化的窗口和垃圾桶的用途非常明显,不过垃圾桶和停靠在这里的文件夹也可以算作同一种内容:虽然垃圾桶有些特殊,但在本质上也是一种“容器”。

最小化的窗口则是另一种完全不同的概念。在Dock上,除此之外没有其他内容可代表窗口,Dock可以代表应用程序文件夹,但直到,并且除非将窗口最小化,否则Dock上就不会有代表窗口的内容。而且最小化后窗口在Dock上的安置也很麻烦,被挤在最末尾,和垃圾桶放在一起,这其实并不合理。虽然Dock中右侧这部分位置也可以看作是大杂烩,不过Dock也被应用了一些强制规则,应用程序无法被放到右侧部分,非应用程序也不能放到左侧部分。

除了在Dock上代表不同窗口,每个运行中的应用程序还可以用上下文菜单的形式列出每个打开的窗口。

A Dock item's context menu
221 diamond briefcases out of 221, oh yeah【这句不知道是啥意思,和Far Cry有关吗?我不玩游戏,不清楚】

抛开窗口列表不说,Dock 可以算是是第一个,也是唯一只用于切换应用程序,而不是用于切换窗口的工具。如果要切换窗口,使用Exposé、“-`”命令,或单击需要的窗口,都是更简单的方法。至于Dock,就是切换应用程序用的,不是用于切换窗口的。

Windows 7任务栏

在了解了每种操作系统如何对待窗口,以及任务栏的演变历史后,很明显可以看出,Windows 7任务栏完全可以算作是老版本Windows中任务栏的继任者,而非对Dock的模仿。

The Windows 7 Taskbar

Vista,以及更老版本Windows中任务栏最大的问题在于,逐渐会变得越来越拥挤。大量需要打开多个窗口的应用程序逐渐破坏了自从 Windows 95时代沿用至今的,很方便的“每应用程序一个按钮”的模式。为了解决这一问题,Windows 7的任务栏包含两项改进:首先,默认就会隐藏所有文字标签,并且会直接将同一程序的多个窗口合并成一个按钮。但在Windows Vista中,使用的依然是混合的模式:有些应用程序被合并,有些依然显示了多个按钮。新的任务栏默认就会一直合并所有程序的按钮。同时,任务栏的行为相比Windows 95时代的设计也更一致,每个按钮都对应一个应用程序。

对于类似记事本以及Word的应用程序,对每个文档需要使用一个窗口,在Windows 7中还增加了一种有效的两级协商机制。任务栏按钮会显示在应用程序中打开的窗口,而按钮对应的缩略图会显示程序内的所有窗口。

然而这种文档切换界面也并不是完全一致的,MDI应用程序会破坏这种一致性。MDI应用程序的子窗口无法通过任务栏访问,也无法为每个子窗口创建缩略图,而且通过任务栏甚至完全无法得知子窗口的存在。不过对于这种功能,还是有望实现的。新的任务栏使得应用程序可以为自己的每个子窗口创建缩略图,并且并不需要借助类似Excel 2007中那种不够方便的方法,就可以直接切换子窗口。IE 8是个已经实现此类功能的程序,IE8的任务栏缩略图中可显示每个标签的内容,这样就可以通过任务栏直接访问浏览器内不同标签的内容。这种技术还可轻易扩展到不同MDI应用程序中,这样Windows就可以用一致的方式对待MDI和非MDI应用程序。

IE8 tab thumbnails
这些缩略图都属于同一个窗口

这种新的任务栏还至少能为无窗口的应用程序提供一种不需要借助通知区域即可运行的方式。该功能最好的例子是Windows Live Messenger,关闭所有聊天窗口并不会删除该程序的任务栏图标,只要不明确退出该程序,图标就会一直显示在任务栏上。WLM已经不再需要单纯为了避免最后一个窗口关闭后被退出,而将自己放在通知区域中。同时,以往通过通知区域图标打开的弹出菜单可借助名为跳跃列表的功能在任务栏图标上直接实现。这样软件就比不“染指”通知区域,但依然能提供包含各种选项的任务栏按钮。

Windows Live Messenger's menu in Vista
从托盘图标…

Windows Live Messenger's menu in Windows 7
… 到跳跃列表

任务栏最后一个变化是,运行中和没有运行中的应用程序可以更好的组合在一起。我们可以将程序“钉”到任务栏上,这意味着哪怕将程序退出,该程序的图标依然会显示在任务栏上。通过这种方式,新的任务栏可以削弱快速启动工具栏在启动和切换应用程序方面的差异,这样,启动和切换成了相同的操作,只要点击对应的图标即可。

正是这最后一个功能,以及删除文字标签,以及增大图标体积,这些改变配合在一起组成了全新的,并且和Dock类似的任务栏。但并非所有人都同意启动和切换应用程序是类似的操作,同时也并非所有人都赞许这种用很细小的视觉差异区分不同程序,不过至少在目前,对于这个问题,貌似微软和Apple已经获得了共识。

然而除此之外,不同之处还是存在的。任务栏依然像是窗口切换工具,而非应用程序切换工具。虽然这些操作在Windows上曾经是相似的,但现在已经成了完全不同的操作。因此,在Dock上一些很容易实现的操作,例如切换到其他应用程序,并将该程序的所有窗口都放在最前,以往对于老的MDI应用程序是很容易实现的,但通过任务栏却无法实现。不过以窗口为主的操作(例如“关闭”、“最小化”等)可以通过任务栏实现,但无法在Dock上实现。

这种差异的表现可能很细微:
口、文档、应用程序,从UI的角度来看,这些概念都代表了相同的内容,但在具体的使用中却会获得不同的体验。Dock在管理和快速切换过多窗口方面,做的一直很糟糕,而任务栏在多个应用程序之间切换时做的也不够好。任务栏和Dock在表面上确实有一定的相似,不过不同的理念也导致了一些实际操作中的不同。更重要的是,自从在1995年首次出现后,任务栏的开发过程非常符合逻辑规律。任务栏和Dock之间的相似性完全算是巧合,但实际使用中的差别很大。

最终,这种新的任务栏从任何角度来看,都不属于对Mac的模仿,只有爱磨嘴皮子的分析师才会这样说。对于微软模仿Mac OS X开发Windows这种观点,实际上没有任何实际证据,因为这些相似性仅仅是源自一些流于表面的东西。

理念的回归?

也就是说,哪怕在以后,我们也不可能看到Windows使用类似“文档即窗口”的概念,并结束目前在Word、Excel,或其他软件中看到的莫名其妙的“无文档窗口”的现象。但为了解决这种问题,还可以使用类似Windows Live Messenger在Windows 7中所用的方法,就算关闭最后一个窗口,依然维持任务栏上的图标。通过和其他窗口管理操作相配合(例如将同一特定应用程序的所有窗口都放到最前端),Windows可以提供最好的操作方式:类似Mac  OS X中以文档为中心的UI,几乎完全相同的应用程序和文档切换方式,以及将文档窗口脱离对应应用程序容器随意放置,并能通过任务栏实现快速的窗口切换和管理。

这是一篇发布在译言的翻译文章,译言上的文章链接在这里,原文链接在这里

分享:

One thought on “理念的缺失:Windows 7任务栏 VS OS X Dock”

发表评论

电子邮件地址不会被公开。 必填项已用*标注

发表评论前,先做个简单的数学题吧: * Time limit is exhausted. Please reload CAPTCHA.