原文链接:http://heim.ifi.uio.no/~trygver/1979/mvc-2/1979-12-MVC.pdf
MVC是很伟大的发明。文章发表于1979年,但其中的原则在今天依然适用。类似的伟大发明还有x-windows的7个原则。
文章给人印象最深的还是开篇头一句话:Models represent knowledge。knowledge一词一下子给人很多的联想。推及我们日常的职场生活,会发现也有些MVC的东西。比如,我们每个人都需要在专业领域积累自己的知识,这是我们的Model,但是要想获得晋升,往往还需要把自己的知识和能力表现出来,例如做PPT讲解,用文档说明,或者其它方式做项目展示。以何种方式向管理层呈现,就是View的问题了,而呈现的技巧,可以理解为连接Model和View的Controller,甚至和领导搞关系,取得其它方面的信任,因为也会影响你的表现结果,可以当作Controller领域的内容。
推及整个软件领域,MVC更是无处不在。比如搜索引擎Google或者知乎,是为获取信息增加知识而服务的,关注于Model部分。而word,powerpoint,excel等等,又是关注于View部分的,相关的技巧等等可以算作Controller领域。在真实世界里,如果把每个人定义为一个MVC系统,那么信息的传递的基本元素,可以算作两个MVC系统的沟通和交互,QQ,gtalk这类软件具有此类属性,weibo和twitter也是如此,facebook和xiaonei亦然。
以此模型为基础,我们能够发现信息时代很多问题的根源。对于MVC系统,View层展现的knowledge仅仅是Model的一小部分,而且还应该根据对象的不同而展现不同内容。人类的MVC系统是和机器的MVC系统有很大差别的,一个server集群的Model里包含的knowledge,可能是一个人几辈子都无法全部了解的。而机器和人做交互时,如果机器没有很好的控制View层,导致大量的knowledge被展现,则将导致与之沟通的人类的信息过载。而这恰恰是当下的社交网站所做的事情。
不同的MVC系统的交流,其终极目的应该是更新受众的Model。而根据人类认知的特点,知识更新的关键在于获取知识时的专注度,专注度越高则单位时间内的效果成几何级数增加。当然,增加领域内投入的时间也可以达到知识更新的效果,但考虑到时间的特性,提升的重点还应该是效率层面。所以,类似新浪微博之类的社交网络系统,如同大杂烩一般的信息汹涌而来,既有着过载的信息,其关注点也太分散,从MVC系统交流原则来说,是很差的。它的流行,一方面是因为人类还处于信息时代的原始时期,我们几乎从未有过信息过载的体验,对我们来说,多总比没有好。另外,在View层面,这些系统利用了人类好奇心的弱点。
做为一个在提供交流方面很差的MVC系统,当今的社交网络注定将被更高级的MVC系统取代。这些社交网络只是构建了一个足够丰富的Model,却未曾考虑如何改进View层面以满足增进受众的Model的功能。微博和twitter的发展已经出现瓶颈,真是因为它们背离了MVC系统终极目标,虽然利用了受众的弱点火爆一时,但是一旦受众开始感觉疲惫,则系统的火爆程度将逐渐减少。而更长的时间维度上,因为未能满足用户对自己Model的更新,也会逐渐沦为鸡肋,就像很多人对待QQ一样,时常登录,但是基本不说话。
从某种意义上将,搜索引擎是更好的MVC系统,通过技术的加强,它们可以在View层面做的更精到,更利于用户更新自己的Model。但求知欲只是人类欲求的一小部分,社交欲求或许才是大多数人类的根本欲求。所以即使Google做到极致,也终将无法抗衡Facebook。当然,借助Facebook到底能在多大程度上改善我们的人际关系,这是个值得深思的问题。或许这些社交网络只是在画一张大饼,给人一种解决问题的错觉。
不管怎样,用MVC系统去解析科技世界的规律,给我们提供了一扇很棒的窗口,让我们得以窥见隐藏在繁华背后的骨骼。