关于“VCL已死、RAD已死”答读者问

这两天在上海参加erlang的大会,来不及写第五小节,先回复一些评论吧。其中最主要的是nanyu的一组评论,大概有三、四篇,写到了不少东西。下面一一道来。

 

有关评论请参见:

http://blog.csdn.net/aimingoo/archive/2008/12/17/3540112.aspx

 

 

如果我没理解错,你说的似乎是 RAD已死,而取而代之的是WEB UI.

-------

这是最基本的一个理解错误,RAD有很多种说法,但却没有一种说法是直接与“UI开发”相关的,所以它死与不死,与WEB UI替代了谁,没有必然关系。类似概念问题,在很多朋友对这个话题的讨论中都有出现。

 

在第四节上,我写到如下文字,或是对该问题的一个答复:

**那么回顾这整个过程,……这能表明RAD已死么?不完全是,最多能说明“基于界面可视的RAD产品化技术已死”。我必须在这个小节里强调这一点,以说明VCL已死与RAD已死之间,不存在必然的、直接的、强关联的关系。我对RAD之死的观点,VCL只是引子,而非凭据。
**

 

说一下,RAD这个词,几乎就被当成是 borland公司产品中Delphi,或MS VB 的代名词。

-------

这也是一个主要的概念错误。与上面的问题是同源的。RAD其实更多的是指“快速软件开发”(的过程或方法),而类似于Delphi/VB的UI方式,以及IDE都只是上述过程或方法的一个具体工具。这个工具是整个过程或方法中的一个部分,而不是它的全部。

 

事实上我开始也受这一概念错误的困扰。但后来读者biekvn与我在站内信中讨论时,发现RAD这一名词是常为人所误解的。于是我就问了一个问题:如果说Delphi的拖拉界面的IDE是RAD的,那么Eclipse的IDE,没有用拖拉界面,但是有模块有语法检错等自动工具,又算不算RAD呢?答案当然是算,Eclipse当然提高了我们的开发工效,也是实现RAD过程的一个可行工具。但是,注意Eclipse没有所谓的拖拉界面(第三方的暂不论),所以简单地说:拖拉界面的操作方法,以及由些带来的组件化界面、皮肤化界面,只是RAD实施的一种方法或工具,却不是RAD的全部,也不是它的代名词。

 

撇清这一概念之后,我必须多多地强调一下:在“VCL已死、RAD已死”这组文章中,我讨论的是两个问题,前者是UI开发与设计方法的问题,后者是软件工程方法的问题。对于RAD之死的观点,VCL只是引子,而非凭据。

 

 
问:为什么现在BS的程序越来越多,而CS程序越来越少?

-------

这个问题有很多答案,当然你所提到的“BS易于部署”是其中一个,也相对关键。但也还有其它潜在的因素,比如BS的量级,以及网络的条件等等。其中我常常提到的,是BS的短连接,正是CS长连接的一个有效补充,这正是他们在不同的环境下此消彼涨的内在动因。

 

WEB UI与你说的BS程序也不是一个概念,我基本上不讨论WEB UI是不是一定要在浏览器访问一个远端的WEB服务器这样的问题。事实上,我在SD2C大会上公开的技术方案,是将WEB UI用来做C/S的客户端界面的。我们只需要讨论“WEB UI本质上是怎样的一种UI模式”这样的问题就好。我的答案是:基于块+层+链接的、可描述的、可迁移的。而这三点,又正好是基于MFC、WIMP以及(一般概念下的)MVC模式等技术上的UI所不具备的。

 

我们讨论B/S与C/S就讨论之,讨论WEB UI与WIMP UI就讨论之,讨论RAD与RUP就讨论之……等等。我们不要把多个概念或领域的因果混淆起来讨论。大多数时候我们要分开论述他们。我们可能提及到相互的影响,但即使如此,也要先分清楚再去混淆。

 

“同样的,“链接”是用户UI交互的本质,也是WWW的本质”
评论:……有大量的文字内容需要链接,这才是WWW的本质,而不是说“链接”成为了WWW的本质。

-------

这个问题分两半,一是UI交互的本质,二是WWW的本质。在UI交互的概念中,“链接”代表的是“点击”,亦即是行为。如果说“块+层”是“UI描述”的话,“链接”在这里就是“UI交互”,是使UI活动起来的要素。我说他是“UI交互的本质”并不为过。至于“链接是不是WWW的本质”的问题,你应该看看有关WWW起源的文字,你会了解到,WEB的源起,与“将文档结构化,使之可以相互链接起来”有极其紧密的关系。更为简单地说:如果不是链接,WEB只会成为Pages,而不会成为Web Site,以及Web World。

 

至于后面说Mac让鼠标只有一个键的问题,理解了上述文字也就理解了。或者你可以看看mac系统的设计方面的资料。当然,mac的鼠标现在加上了滚轮,这个就更有趣了。研究UI的人会有很多想法的——我的意思是哲学的、美学的或设计领域上的想法或观点。

 

 

“所以,事实上WEB的成功,与WEB UI比传统的WIMP UI更加人性,以及更加面向设计师(例如PS高手)有直接的关系。
评: 再说一遍:(UI)设计师和PS高手是两回事。

-------

EN。。。这也是你的评论中最主要的一个观点。其实我也是这样的观点,而且也在正文中提到了,只是读者不注意罢了。我的观点中:当界面分离出来的时候,自然产生了E2+C2的问题。E2是指效果(Effect)和体验(Experience),其中效果是美术设计来保证的,而体验则由前端开发来保证。

 

所以我在这里说美术设计,主体是指用“类似PS的工具”来设计与实现界面的人。当然你可以说UI设计师不一定用PS,这个没关系。我在这里用PS只是一个例举。我不能确定XBOX的UI设计师是用PS做的,也不能确定MAC的UI设计师用PS工作,我只是概要的指称了一下。

 

我不知道你说的“UI设计师”包不包括UED,对我来说,UED是一个团队而非一个个人。如果以这个角度来看,UI设计师——是一个个人,而“UI设计”则是一个领域。“UI设计”可能包括效果、体验以及它们的实现。只要把UI分离出来,在这个分离出来的UI领域工作的所有人——包括程序员——都可以叫“UI设计师”。而事实上,如果按上述的解释,那么“UI设计”也就等于现在常说的“UED(用户体验设计)”,因为体验当然也包括视觉体验——颜色、形状、位置、对比等等。所以我们不太容易能分清这些名词了。

 

所以我说“更加面向设计师(例如PS高手)……”这个句子时,设计师就只好被限定在“使用PS等工具的这一类UED设计师”的范围内。我在类似这样的情况下会用例举来说明我的“限定”只是一种写作习惯,如果非要我在一篇文章中用十个、二十个的名词来限定不同的角度,当然也做得到,只是那样就更不易读了。

 

好了,我在这样的段落里要说明什么呢?我的意思是说,PS一类的平面绘制工具是以“块+层”为主要的构图方式的,而WEB UI也具有类似的特点,所以他们之间相互转换是自然而平滑的。你(作为程序员时)没有必要去向一个PS人员解释什么是“ICON",以及它应该有多大或多少颜色。因为在WEB UI的体系上,根本就没有ICON。

 

至于一个UI设计人员是否要在界面上画一个方块然后填上一些像素,来表明“这是个指示(ICON的主要途)”,那是设计人员的取舍,而不是“WINDOWS操作系统”或“VCL组件系统”或“Win32 API“的限定。这样一来,UI设计才会自由,而用户看到的UI也才会自由而人性——当然,某个具体的UI设计与开发人员(我们假定为整个的UED团队)是否能做出一个“人性的”界面,不在我的讨论范围之内。

 

 

 

其它(其它的一些回复,可能增补)

-------

to fengjsSoft,
既然据你所知的,WEB系统没几个比你开发的CS程序相比,那么我们也不能讨论什么了。在佛家来说,是很有些人有知见障的,当所知所见积累到一定程度,就成了新知新见的障碍,这是必然经历的一个阶段。

 

to  mobeing,
正因为我在SD2C上发言称“VCL已死,RAD已死”,却又没有足够的时间来释清我的观点,所以我才写这一组文章。即使我在写之前仍有些未能透澈,但我在写的过程中已复深思,所以写下来的、记下来的,已是相当慎重了。

至于你提及过的我对VCL的了解,我不解释,因为看起来你已经足够了解我了嘛。在此谢过你的关心与建议,互相珍重、慎重。