其实很久以前我就想写这篇文章,其原因一方面是因为笔者深深感觉到C++ Builder的确是一个先进与强大的程式开发工具,但更最重要的一点是,我深信C++ Builder能给公司带来巨大了商业利益与生产力的大幅提升,我可以假装没看到这几点,但是基於良心与责任我不能不花点时间来跟大家分享一下我的看法与心得。

C++ Builder的前身是Borland C++,Borland C++ 所使用的 Application Framework是OWL,而OWL以物件导向的角度来看,也的确比MFC先进很多(这在学界早有定论),但是在市场上却叫好不叫座,直到Imprise(以前的Borland)推出以VCL为Application Framework的Delphi之後,这才一炮而红。

虽然Delphi的VCL非常强大与好用,但是Delphi所使用的是OOPascal语法,和C++不同,直到後来,Imprise才推出以C++为程式语言的C++ Builder,而其所使用的Application Framework正是赫赫有名的VCL。

VCL的全名是“Visual Component Library“,它是一种新一代的Application Framework,以元件化、视觉化为设计的方向。VCL的兴起,起源於OWL和MFC都日见庞大与痴肥,不利於日益复杂的程式开发趋势,於是Imprise的设计小组决定开发一套更物件导向化的            Application Framework,使程式设计师能以视觉化的观念、元件重用的观念来快速设计出各式各样的应用程式,将物件导向的威力与精髓发挥的淋漓尽致,相形之下,OWL和MFC都只算过时与半子的Application Framework。

果然~C++ Builder一推出後,在微软的大军压境下以及人们西瓜靠大边的心态下,仍然引起了一阵旋风,在News上许多程式师表示它们对C++ Builder的肯定与激赏,更有人指出,根据经验,在微软的市场优势之下,Delphi和C++ Builder仍能欣欣向荣,这表示Delphi和C ++ Builder的产品水准不是只赢微软产品几个百分点,而是数十至数百个百分点,否则Imprise的产品早就消失不见了。到底C++ Builder的特性与优点在哪里呢?这对於我们公司又有什麽利弊呢?我的观点与分析如下。大家想一想,当我们使用Visual C++来开发程式的时候,最痛苦的事情是什麽?答对了~那就是GUI的设计。根据经验,通常我们利用Visual C++开发一套软体时,设计GUI所花的时间几乎占掉程式开发周期的三分之一~甚至到二分之一以上,而设计和界面无关的核心程式通常只占了不到二分之一左右至三分之二的时间,但是使用C++ Builder则可以大幅简化这个问题。C++ Builder的VCL提供大量的各式各样GUI软体元件,让我们可以将大部分的心力放在核心程式码的设计上,而不必跟Windows系统的讯息、界面去搏斗。

C++ Builder的Compiler在功能上跟Visual C++都一样,Win32 API等都可以呼叫与使用(VCL就是架构在Win32 API之上,没有不相容的问题,只是包装的更高明,也非常有弹性),你不用担心目前有什麽事情是Visual C++可以做而C++ Builder做不到的,进而拒绝使用C++ Builder,抱持这样的观点就好像为了健康而不坐汽车,却坚持骑脚踏车从淡水来上班一样因噎废食,在网路许多非常有经验的程式设计师会告诉你这是多虑了。曾有人比喻的很传神,如果Visual C++是手排车,那C++ Builder就是手自排两用车(看过三菱的Sportsmode手自排两用车吗?)。

C++ Builder的程式设计细节是清楚而透明的,除了Application Framework的运作保有神秘感之外(MFC也是),所有的程式码与档案相关的档案都是可以掌握与观看的,不像某些开发工具,程式设计师许多事情是无法掌握的,而C++ Builder 所产生的码大小与产生的时间都和Visual C++ 都是同级的(我指的是胜负差距都不大,到要一提的是,C++ Builder 3.0采用一种技术,可以使得第二次以後的Compiling速度提升五倍以上,笔者可以证实这一点)。

我的观点是,我们公司非常适合大量采用C++Builder作为程式开发工具,当然啦,为了相容性的考量和母公司有特殊要求的专案除外。由Visual C++转换到C++ Builder不是很严重与痛苦的事情,反而会觉得很快乐,这就好像开手排车人改学自排车一样,甚至可以更掌握C++ Builder的威力。利用C++ Builder来开发程式,我们可以快速的产生程式的GUI layout和prototype,在後续调整程式界面的调整周期中也非常的方便,我个人认为至少可以比
Visual C++节省三至五倍以上的时间。

除了某些特殊需求的专案之外(例如版本升级,而原来的版本是VC开发的,或者参考改写的程式码是用VC写的,事实上C++ Builder也可以支援MFC),我看不出来公司有什麽专案的规模或内容非要靠Visual C++不可,自己找罪受不说,也违反了“Build a high performance company“的目标,而将大量的资源投注在落後的工具上,程式生产力也无法巨幅提升。因此我建议公司应该大量而全面性的鼓励员工使用并熟悉C++ Builder成为第一线的程式开发工具,根据我的浅见,这样的投资不但回收快速,而且效果宏大。

简而言之,C++ Builder同时兼具C++程式语言的威力和Visual Basic这种 Rapid
Development Tool的视觉化程式开发环境的便利,土法炼钢或必先利其器,决定就在你了。

Visual C++ VS C++ Builder相关推荐

  1. Microsoft Visual C++ 和 Borland C++ Builder 之比较

    来源:百度(最原始的地方未知,我大概整理了一下格式). 本文就试图从技术水平.易用性.稳定性.发展前景等对Visual   C++和C++Builder(Delphi)这两个重量级开发工具进行比较分析 ...

  2. 在 C++Builder 工程里调用 DLL 函数

    调用 Visual C++ DLL 给 C++Builder 程序员提出了一些独特的挑战.在我们试图解决 Visual C++ 生成的 DLL 之前,回顾一下如何调用一个 C++Builder 创建的 ...

  3. ML.NET 1.1 发布,模型构建器升级和新的异常检测算法

    https://www.toutiao.com/a6703297861997560328/ 2019-06-17 08:59:15 ML.NET 1.1 已发布.ML.NET 是一个跨平台的机器学习框 ...

  4. C语言程序设计 搜集C/C++编译器

    在所有的和计算机的相关的专业中,C,C++几乎都是必修课,而我们用的编译器多半都是Turboc 2.0,Visual C++,Borland C++ Builder,然而C/C++的编译器是何其多,长 ...

  5. Flex/Silverlight的技术比较转

    基于个人的使用经验,我从语言.框架.开发环境和运行环境四个方面对Flex和Silverlight这两门技术做一个比较,自己认为这个比较还是比较全面的.(这样的比较有意义吗?个人意见,只要别把自己当成宗 ...

  6. Flex/Silverlight的技术比较

    Flex/Silverlight的技术比较 别人博客上看见的,一文下去,引起口水大战,其实仁者见仁,智者见智,每种语言都不可能是完善的,扬长避短才是王道. 基于个人的使用经验,我从语言.框架.开发环境 ...

  7. 如何用VC++开发读取网卡MAC地址的程序

    如何用VC++开发读取网卡MAC地址的程序 实际的应用系统中,我们往往会需要在程序运行时获取当前机器的网卡的MAC地址,以便作为某种标识之用,如控制程序的合法性等.下文就如何用Microsoft Vi ...

  8. 叮,您有一份ML.NET 速查手册请查收!

    点击上方蓝字 关注我们 (本文阅读时间:7分钟) 本篇文章简要介绍 ML.NET 背景和面向 .NET 开发的特色功能,以及典型的机器学习编码示例,并分享自己整理的 ML.NET API 速查手册. ...

  9. ML.NET 1.4 发布,跨平台机器学习框架

    ML.NET 是一个面向 .NET 开发人员的开源和跨平台机器学习框架,它包括 Model Builder 和 CLI(命令行接口),让使用自动机器学习(AutoML)构建自定义机器学习模型变得更容易 ...

最新文章

  1. php表单的输出,php – Joomla输入表单字段输出
  2. linux下运行yolo,deepin(linux)编译安装yolo v4测试效果
  3. 【解决方案】chrome打开新标签页自动打开chrome://newtab并且跳转到谷歌香港
  4. 设置熄屏_华为手机熄屏后还能这样操作?你不知道就挺遗憾的!
  5. lnmp—MemCache的作用
  6. jQuery实现列表数据从右至左滚动(类似弹幕)
  7. edittext 无法输入内容_掌握其中1个Excel小技巧,你就不用再担心会重复录入内容了。...
  8. 微软Windows家族一览 从1.0到Longhorn
  9. jmeter 控制偏离_Jmeter 笔记(1)-安装 基本组件
  10. Eclipse主题设置方法(系统主题设置、自行下载主题设置)
  11. 使用Maven 插件构建docker 镜像和推送仓库
  12. 不懂投资的基金会计不是好的产品经理
  13. java基础习题_JAVA基础练习题
  14. tap10.app cn.html,Tap连点器
  15. html优秀作品展示,31个漂亮的作品展示网页设计
  16. 【台州世通兰陵王系列】服务器的1U、2U、4U是指什么?
  17. 一个月黑风高的夜晚紧急完成gitlab服务器数据迁移
  18. 浙江海盐已经试行“核供暖”,南方到底该不该供暖?南方人顶起~
  19. Windows中使用curl命令报错curl post [globbing] unmatched close brace/bracket in column 67
  20. app下载统计 php,如何统计app在各个渠道的下载量?

热门文章

  1. winxp 更改计算机名,winxp netbios计算机名修改方法【图文】
  2. 个人网站备案时ICP备案的网站建设方案书怎么写?
  3. Prometheus监控容器并邮箱报警
  4. Pytorch 基础
  5. 《畅通无阻的跨部门沟通》
  6. 计算机仿真的基本特点,计算机仿真的基本特点与基本流程
  7. 数据库 表设计 MySQL
  8. 电路仿真软件详谈(22),proteus电路仿真软件与ICCAVR调试方法
  9. AnchorFree算法-CornerNet论文解析(附论文与源码)
  10. Git/GitHub 中文术语表