博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
VCL已死,RAD已死(1)
阅读量:3605 次
发布时间:2019-05-20

本文共 1740 字,大约阅读时间需要 5 分钟。

VCL已死,RAD已死         ——SD2C中未能尽言的话题今年的SD2C,我匆匆去又匆匆还,因为有急事要处理,所以第三天的课程都没来得及参加。与此相同的是,我的那场话题,也讲得匆匆忙忙,有许多不清楚透彻的地方。其中之一便是这两个断言:“VCL已死,RAD已死”。所以今次开贴重讲!一、从UI的变革到系统的复杂性-----UI怎么构成?在Windows及同期的Linux、Mac平台上,对UI的解构是WIMP(Windows,Icons,Menu,Point)。这个抽象具有相当的合理性,并一度带来了GUI的繁荣。然而,界面技术本质上是掌握在平台技术厂商的手上,例如Windows提供MFC,大家便只能在这个MFC的基础之上来构建GUI应用。所以Delphi早期的成功,就是把MFC变成了更便捷的编程形式来替代,尽管其本质上还是MFC框架下的UI,但就是比后者方便,从而有了RAD(快速应用开发)一说。同样的道理,Java做了自己的平台,将虚拟平台与操作系统平台隔离开。于是,在Java之上有了Swing或jFace等等,应用提供商也基于这样的平台来做开发,出来的界面仍然是在同一个风格体系之下的。我们现在来看一个软件产品,它是Delphi写的,还是VC写的,或者是Java写的,也或者是在Linux上基于某个GUI包做的,在很多时候从界面上一眼就看得出来——因为他们其实是不同平台上对WIMP的实现。然而,我们来看WEB,便没有这种同质化的倾向,WEB精彩纷呈,不同的网站有各自不同的特性。没有了所谓“软件产品”的基本面貌,似乎没有人愿意承认“WEB网站”是一个“软件产品”。但是,仔细分析WEB UI,你会发现它的本质结构是“块+层+链接”。“块+层”是表现上的本质,这与Photoshop等作图工具是完全一样的。所以,只要能用Photoshop画出来,就能用HTML做出来,这二者之间基本是可以等量转换的——因为这二者本质相同。同样的,“链接”是用户UI交互的本质,也是WWW的本质。Mac系统可以让鼠标只有一个键,本质上也是这个道理。用户行为,只需要点击一个位置来触发,而不需要位置上的二义性。如果需要另一个含义的行为,那就换一个位置(例如按钮),这个,是“简化UI”或“人性化UI”的本义。所以,事实上WEB的成功,与WEB UI比传统的WIMP UI更加人性,以及更加面向设计师(例如PS高手)有直接的关系。而另一个方面,RAD的出现,与WIMP则有密不可分的关系——WIMP抽象了界面的“可组件化的基本要素”。UI的变革带来了最直接的问题:使用WIMP的思想,开发不出WEB UI。最明显的例子就是Delphi的没落。事实上,这中间也包括Virsul C/C++的没落。二者相同的在于,原本“可视化编程”优势变成了劣势。这是为什么?什么叫“可视化编程”?Delphi/VC/PB/VF...这一类的开发工具中,你可以把一个组件拖到窗体上,然后配置属性、添加行为、处理逻辑代码,然后“RUN”。一切就OK。这就是“可视化的”、“快速的(RAD)”编程。然而注意一个事实,这个过程要求一个“程序员”的全程参与:界面设计工具与代码开发工具在同一个环境中,不可分离。所以,在RAD的时代,我们的UI设计师是要迁就软件开发人员的。UI设计师设计了界面,然后开发人员说:荒唐!这样的界面用Delphi根本做不出来!然后一切就推掉重来。客户端软件产品的开发,就是在设计与开发人员的战斗中一路走过来的,而且,通常是开发人员取得胜利。开发人员不会做界面。真正会做界面,需要有相当高的图形程序开发功底,于是,那些有这样功底的人开始做组件,例如很漂亮的换肤控件。这——看起来漂亮了,但是仍然不是界面设计师理解中的UI。从中暴露出来的表面问题就是:开发人员最好是superman。RAD开发中的程序员,最好就是精擅各门的大家。无论是网络、数据库、图形、操作系统还是所有的一切,你最好都懂,最专长。这样,一个模块给你,你完全搞定,大家都放心。因为RAD嘛,你搞不定,是不够快速,是工具不够好,或者你不够super。然而,我们的系统已经越来越复杂,已经越来越不是“一个人”能干的活儿了。

转载地址:http://gaizn.baihongyu.com/

你可能感兴趣的文章
设计模式之享元模式
查看>>
Java代码设计模式讲解二十三种设计模式
查看>>
IDEA的使用教程二:idea的内置快捷键和idea的代码模板设置
查看>>
idea使用教程三:(创建web项目)
查看>>
Window localStorage 属性(永久储存网站的数据)
查看>>
jQuery中的 $(window) load()与$(document) ready()以及jquery $(document) ready() 与window onload 的区别
查看>>
Java创建URL后台访问接口,返回数据(Http请求-HttpClient方法)
查看>>
项目部署调用接口传参编码问题
查看>>
idea每次打开都是选择项目页面
查看>>
IDEA修改文件后出现星号
查看>>
设计模式——单例模式
查看>>
工厂模式
查看>>
ClassUtils——可以由一个接口查找到所有的实现类,也可 以由父类查找到所有的子类
查看>>
责任链模式
查看>>
算法(1)——流程图和DNS图
查看>>
leetcode——442
查看>>
sentinel 控制台讲解-流控规则--阈值类型:QPS 流控模式:直接 流控效果:快速失败
查看>>
Java语言程序设计(基础篇)第十版 5.3-6
查看>>
Java语言程序设计(基础篇)第十版 5.7
查看>>
Java语言程序设计(基础篇)第十版 5.8 5.9
查看>>