上位机编程软件的选择
上位机编程软件的选择对众多初学者来说,绝对是一个难以决策的事情。在作为一种编程工具的意义上,我们认为各个软件如:CB(C++Builder) 和VC(VisualC++)没有什么本质的区别。就像Word2000 和WPS2000 在本质都是字处理软件一样,对于语言就象我们都用中文在Word2000 和WPS2000 写文章表达我们思想。CB和VC都是用C++。其它软件都有相同或不同的语言。如VB用的是Basic语言,Delphi用的Pascal语言。
由于应用不同的领域,所以选择的条件也不同。如果你主要是从上位机传传参数设置,显示一些简单的状态,而以下位机控制为主,则所侧重于快速上手应用,而不需要去深入研究。当然还要考虑从你熟悉的语言相结合。下位机编程一般用C语言和汇编,当然你也可能用其它语言。如果你仅会这两种,那么上位机就考虑和其差不多的C或C++来编写。如果你也会其它的语言,当然选择范围更广一些。由于C对界面操作上的复杂化,所以我们一般不会用C来写一界面类的东西。接下来进一步缩小了选择范围,所以只有VC和CB比较适合了。
对于此两款软件历来争议较大。VC有大量的教材和实例程序,还有微软的支持;而CB虽然有良好的界面组件,但相关资料确实很少,你到任意一家书店,很难找到几本象样的教材,有的剩至根本没有,有的只是N多年前对帮助文件翻译过来东西,而VC最少有一架或几架的各类书藉。这是让初学CB最为头大的事情,不过现在还好,由于互联网的强大,和广大CB爱好者的热心。网络上CB的资料已经很多了。
通过上面的分析我们可以作出一些考虑,如果以下位机为主可以选择CB,以上位机为主可以选择VC或CB。当然仅作参考,还一句话没有最好的软件,只有最适合你的软件。以下引用《C++ Builder教程》的节选:
但现在我们要从另外一个角度讨论C++ Builder 这个编程工具。这个角度就是“封装”——面向对象编程思想中的最重要也是最基础的概念。一个要学习编程的人,可能从C 开始学起。学C 时,我们没有接触那些挺玄的概念,到了C++,一切就来了,什么面向对象,什么封装、继承、多态……于是我们兴奋起来,努力去理解、掌握,运用这些概念所代表的技术,在掌握这些别人暂时未能理解的概念之后而颇有成就感……。
现在我要问的是,为什么要有这些概念?这些技术?正确回答这个问题,不仅有助于我们今后对编程语言各种概念的学习,而且它能让我们避免成为新技术的奴隶,这一切也许听起来有些形而上,不过我想通过以下讨论,至少可以回答一个很现实的问题:为什么要选C++Builder?而不是我们更常听的VC?这是我碰到的编程初学者较疑惑的问题之一。
如果人类长有翅膀,那么飞机大抵永远不会被发明。飞机的发明,是为了弥补人类自已不能飞翔的缺陷。不能说所有的技术都是这样,但C++对于C 的发展,完全是为弥补程序员脑力的不足。一个在校生在学会C 后,往往并没有机会用C 去实践一个大中型的项目,体会不到在一个庞大软件工程中,非面向对象语言的短处,所以在之后学习C++的过程中,也就很难真正体会到面向对象语言的长处。简短一点说:不知道C 的短处,就不懂C++的长处。相反,倒是很快就发现C++的缺点:它的代码效率多数情况下都要比C 低不少。
前面我们说过低级语言与高级语言的对比,C++语言也正是从语法结构和语言功能上来限定或实现一门编程语言更加接近人在现实生活中的思维习惯,从而达到减轻人的记忆和判断上的负担。这其中最佳的方法之一就是所谓的“封装”。
VC 的封装类库称为MFC,它是一种很低阶的封装,它并没有按照人类的思维习惯来重新组织和解释Windows 对象(指Windows 编程中所需的数据,处理,机制,接口), 而纯粹是API 一对一的翻版。这样的封装工作带来代码封装所固有的代码效率降低的副作用,却没有给使用者带来任何方便。如果你是编程初学者,而你身边又有VC 高手,那么你一定要多多向他学习请教,因为一个真正的VC 编程高手,其同时一定也是一个深刻理解Windows 内核机制(消息循环,内存管理,多任务实现,资源使用等),熟悉Windows各种常用API 函数等等的高手。
C++Builder 对封装库称为VCL(带VC 字样,可别以为它是Visual C++,其实它是:Visual Component Library,即:可视控件库)。
VC 的MFC 和CB 的VCL 都是基于(但不限于)对Windows API(应用程序接口函数)的封装,为什么要对API 进行封装?这就是回到了我们前面说过的,为什么有了C 又会有C++的问题。因为操作系统是用C 和汇编写成的,它获得到操作系统必须的代码效率,但对应用程序开发者而言,它失去了易用性。所以微软和Borland 都使用高级语言对之进行封装工作。二者谁进行得更好呢?
版权所有:江苏和讯自动化设备有限公司所有 备案号:苏ICP备2022010314号-1
技术支持: 易动力网络