无辜的RAD

2005-3-21

说实话,RAD很无辜。从出生的那天其就被骂,天天被指着鼻子说“不就是拖个控件嘛”,就好像当年说学电脑“不就是插个鼠标嘛”。也怪程序员大都天性犯贱,就爱一遍又一便的写基础代码库,什么字符串类啦、智能指针啦、动态集合啦,能写的都自己写一遍,要是用现成的啊,你都不好意思跟人说。天天重复重复再重复地做着重复重复再重复的事情,还以为自己做着多么伟大的事情,直到哪天一位民工叔叔拍拍他的肩膀说道:“省省吧,我们早就不用砖头盖大楼哩!”

复用性是软件开发的核心之一,从函数到类,到组件,到中间件,复用的规模逐渐加大。RAD的核心就是复用。至于控件,其实就是可视组件。

1. 函数是最早,也是最简单的复用单元,代表语言C。你一定认为我重复这个old的基本概念是在浪费带宽,那么为数不少的程序员仍然在写超过1000行的单个函数,是不是该把他们拖出去斩了?

2. 类随着面向对象概念而出现,作为包含一组操作函数和数据的复用单元,代表语言C++,经过当年MFC若干年的努力,终于广为接受。而随着现在Unix的复兴,反对派也有了一定声强。原因很简单,连设计可复用的函数都有很多人做不到,更别说类了。很多人只是把所有要用的函数堆到一个类里,结果还不如不用。

3. 组件随RAD概念而出现,作为包含共同完成一项功能的一组类的复用单元。代表语言Delphi,到不是说Delphi提供了多少组件,而是它提供了一种方便的实现组件的方式,开发人员利用这种方式创造的大量的良好可复用组件。Borland的组件化设计同样造就了JavaBean,也延伸到dotNet。如果有人还不明白,简单的说就是:RAD是让你去创造和使用可复用的组件,不是让程序员“变白痴”。

4. 中间件就是半成品,是比组件更大的复用单元,而且不再强调用什么方式实现,不强调使用什么样的接口。在这种规模下,一般开发工作与设计工作已经分离由不同的专职人员完成。

比起函数和类,组件和中间件都更为抽象,不拘泥于某种实现形式,而且由于问题规模更大,往往要伴随相关文档来构成一个完整的整体。这些方式没有哪种是最好的,使用哪种方式完全取决于需求和问题规模。

不少RAD反对者认为使用组件就远离了底层,就好像把厕所改叫盥洗室就有人找不到大号,无非都是些函数和类,和底层不底层有什么关系。其实只不过是VB不支持指针,所以VB的组件大都只提供高级接口,就被以偏概全。还有反对者认为用封装好的东西就不能了解底层,非要自己写一遍才行,就好比要重新证明力学三定律。如果是为了专研学习确实精神可嘉,如果是做工作就是神经。枉费了文档和源码还都理解不了底层,还要在这点问题上浪费生命。于是,有人用for(int *p = src, *q = dst, *e = src + count; p < e; *q = *p, p++, q++);重写memcpy,还自诩比系统的快,我@#$%^&*。人家XBox的广告说得好,“人生苦短,及时行乐”,何不把时间花在赚钱的事情上。

当然,C的领地内是不提组件的,因为广为接受的组件的概念是基于类的。正如OO传道者说的,OO只是一种概念,如果说能够做OO设计的语言都是面对对象的语言的话,C也是面对对象的,Ada也是。同样,组件也是一种概念,它只是一个独立可复用的模块,由于C的纯粹性,在C里实现这样一个东西比在C++里容易。C++上很难发展组件的原因是,可复用的组件必须有易于模块对接的接口,而C++偏偏没有统一的基础库,就连个字符串都每个类库一套实现。组件又是相对高层的结构,只得依附某一代码框架,也就只能在同一框架下复用,也就大大限制了组件的发展也由此催生了COM,作为和语言框架无关的接口。可惜COM认的老大是VB,C++要是想和COM打个照面啊,那个难啊。

总的来说,很多人还处在旧PC时代,那时候一个人就能写出个WPS,一个人就能写出个CCDOS,而现在这些只能是唐吉诃德的美梦。手机软件的兴起让很多人重温了一下旧梦,不过最终还是要回到现实。

http://blog.csdn.net/nightmare/article/details/353337

无辜的RAD(RAD是让你去创造和使用可复用的组件,不是让程序员“变白痴”)good的更多相关文章

  1. 使用jieba分析小说太古神王中,男主更爱谁?去文章中找答案吧!#华为云·寻找黑马程序员#

    欢迎添加华为云小助手微信(微信号:HWCloud002 或 HWCloud003),输入关键字"加群",加入华为云线上技术讨论群:输入关键字"最新活动",获取华 ...

  2. 就这么漂来漂去---一个毕业三个月的java程序员的裸辞风波

    注:这并不是一篇技术文章,而是记录了我这几个月经历的入职,裸辞,找工作的心路历程,简单介绍一个博主的情况,我是16年毕业生,校招进了一家北京的公司,java开发,和很多年轻人一样,干了一段时间,我发现 ...

  3. Python程序员去上海工作有多难?

    我只能说,也要看你掌握的技术可以打多少分.技术熟练度跟找工作的难易程度是成正比的:你掌握得越好,找工作就越容易(难度系数越低):反之越高. Python程序员这种技术类的工作岗位,当然还是要有扎实的技 ...

  4. Java程序员都应该去使用一下这款强大的国产工具类库

    这不是标题党,今天给大家推荐一个很棒的国产工具类库:Hutool.可能有很多朋友已经知道这个类库了,甚至在已经在使用了,如果你还没有使用过,那不妨去尝试一下,我们项目组目前也在用这个.这篇文章来简单介 ...

  5. 一个四五年的Java开发程序员,该准备哪些去面试?

    上周面试了一周,感触颇深,总结一下. 面试了公司大概有阿里,携程,爱奇艺,唯品会,途牛,bilibili,大众点评,阿里和爱奇艺是电话面试,其他现场面试. 首先,五年左右,应该算高级开发工程师,大部分 ...

  6. 放弃了程序员互联网高薪,跑去事业单位做IT的尴尬

    “你是程序员对吧?”“是啊,怎么了?”“那你帮我修一下电脑吧.”我原来也是一个重点大学毕业,基本上事业里面搞IT就干这些事情,要是以前,我肯定会想,我是程序员和修电脑有啥关系. 但是自从进了事业单位, ...

  7. 去摆摊吧,落魄的Java程序员

    真的,我也打算去摆摊,宣传语我都想好了.沉默王二,一枚有颜值却靠才华苟且的程序员,<Web 全栈开发进阶之路>作者,CSDN 明星博主,周排名第 4,总排名 40,这数据在众多互联网大咖面 ...

  8. 大厂程序员因厌恶编程,辞去月薪2w+的工作去当司机?

    世界好小啊,刚在一个 UP 主的群里看到一个视频,标题叫做:"失业了工作没找到,却稀里糊涂上了知乎热搜,2000 多万人围观,我--" 说实话,看到视频的封面,我的下巴当时就掉到了 ...

  9. 程序员肺被切掉一块还得去加班... 再谈“工作996,生病ICU”

    如题,为什么要说再谈“工作996,生病ICU”,因为996问题早已不是一个新问题,在我最近刚出版的新书<SOD框架“企业级”应用数据架构实战>写作期间,爆发了一次程序员“起义”,出现了一个 ...

随机推荐

  1. Enhancing network controls in mandatory access control computing environments

    A Mandatory Access Control (MAC) aware firewall includes an extended rule set for MAC attributes, su ...

  2. 使用Fiddler对android应用抓包 专题

    工作原理 先上个图 此图一目了然,可以看出fiddler在请求中所处的位置,我们就可以确定它能干些什么. WinInet(“Windows Internet”)API帮助程序员使用三个常见的Inter ...

  3. Java开发环境安装,环境变量

    下载地址:www.oracle.com Java 9下载地址:https://www.oracle.com/technetwork/java/javase/downloads/java-archive ...

  4. Eclipse使用技巧总结(五)

    三十五.快速回退到上次编辑处 Ctrl + Q 三十六.查看调用层次 Ctrl + Alt + H 三十七.快速查看某个类 Ctrl + Shift + T 三十八.快速定位 Ctrl + K  :首 ...

  5. 记录一下go web 文档

    https://github.com/astaxie/build-web-application-with-golang

  6. 全分布式的Hadoop初体验

    背景 之前的时间里对 Hadoop 的使用都是基于学长所搭建起的实验环境的,没有完整的自己部署和维护过,最近抽时间初体验了在集群环境下装机.配置.运行的全过程,梳理总结到本文中. 配置 内存:8G C ...

  7. C# 实现生成带二维码的专属微信公众号推广海报

    原文:C# 实现生成带二维码的专属微信公众号推广海报 很多微信公众号中需要生成推广海报的功能,粉丝获得专属海报后可以分享到朋友圈或发给朋友,为公众号代言邀请好友即可获取奖励的.海报自带渠道二维码,粉丝 ...

  8. intraweb 11.0.63 for delphi7 破解

    资源地址:http://download.csdn.net/detail/marszzx/9472912 本资源来自互联网,整理后上传,本资源仅供学习使用,请勿作用商业用途 delphi开发网站,似乎 ...

  9. Openstack+Kubernetes+Docker微服务

    Openstack+Kubernetes+Docker微服务 渐入佳境,我们开始比较具体的工作,由于Docker是一个基础组件,所以本文的主题是Docker和Registry2. 底层系统基于Cent ...

  10. WPF无边框捕获消息改变窗口大小

    原文:WPF无边框捕获消息改变窗口大小 文章大部分转载自http://blog.csdn.net/fwj380891124,如有问题,请联系删除  最近一直在学习 WPF,看着别人做的WPF程序那么漂 ...