Monday, June 11, 2007

图形用户界面的过去和未来

截至2007年6月,图形用户界面的发展大致上可分三个阶段:

第一个阶段,受硬件限制的阶段。GUI从无到有,进入了这个阶段。这时硬件的性能勉强够或刚刚不够运行GUI。GUI本身也不成熟,人们还不太清楚到底应该以何种方式把哪些信息表示在界面上。在这个阶段里,程序员们拼命地用低级语言压榨机器,得到一个简单粗糙慢腾腾的结果。

第二个阶段,硬件足够快了,GUI的概念也成熟了,人人心里都知道自己想要什么,但是动手做起来却觉得很吃力。这个阶段的主要限制是编程方法。程序员都想把界面做得更丰富,但无奈要写的程序太复杂了。这个阶段经历了这样的技术演进:C语言 + graphic API → object-orientedness → design patterns → frameworks。另外一些人则走上了html web的路,这条路也有类似的发展历程:从带宽有限,页面简洁,到功能丰富,需要适用ajax技术进行组织。现在我们基本位于这个阶段的末尾。

让我意识到第二阶段结束,第三阶段来临的是Windows Vista。从一个程序员的角度,我发现Windows Presentaion Foundation可以大大降低开发GUI的难度,让我比较随意的表达我的界面要求;从一个用户的角度,我对Vista shell的第一感觉就是:复杂。前所未有的多的gadgets出现在各种明目的“条”和“栏”上。比如,一起我的地址栏就是一个可以放进一串文字的白板,现在成了一系列可以变成一个白板的按钮。看这这样的界面,我觉得有点晕。以我的脑袋的十分有限的处理能力,我时常迷茫。我想这就是GUI3.0时代的主题:硬件能力和编程方法都不再限制GUI开发者实现更多的功能了,以至于用户界面开始被推向人类认知能力的极限(有人说我们配置的内存条是7bit的,有人说是4bit)。在这个时代,GUI发展的方向是:软件的功能在增长,但不能再往界面上铺陈功能了,而是按照人的认知习惯组织功能。比如我们可以研究用户对某一程序有哪些动作短语(idomatic usage),甚至是哪些usage pattern,然后把相关的界面组织成一组,让用户在更高的抽象程度(或者说封装程度)上使用软件。Unix的方式可能带来启发(很难开发出一种比正则表达示有效的让用户描述一个pattern的界面),Art of the UNIX programming的指导在GUI3.0时代是必不可少的。现有的鼠标-键盘动作输入、视觉-声音输出的模式需要被扩展,比如用微软研制的多点触摸屏(区别于单点的鼠标指针)。虚拟现实技术(表达能力更强的输入输出)、人工智能技术(让人随意下指令,机器试图理解,而不是让人学习机器的设定)可能会是问题的克星。同时,更根本的,我们要研究信息的组织和表示这个宏伟的课题,改造整个全部所有计算环境。

正在到来的时代是一个从提供feature转变到组织feature的时代。要想在未来的图形用户界面取得商业优势的个人、公司、国家可以开始行动了。

No comments: