VB与C++或VB与C的区别,不止是一个人在我的博客里问这个问题!
其实不然,很多学了一段时间的VB或是C++的同仁都不见得对两者之间的区别可以说讲得非常清楚,今天在这里,借LZ社区提供的这个平台给大家讲下这两个东西之间的区别吧...
首先,说明的一点就是VB是一个开发平台或者说IDE(集成开发环境),而由于一般而言这个开发平台虽然基于basic,但是由于有一个好的父亲即微软公司把很多商业化的元素溶于到里面,使得它显得与本来的basic语言有着很大的区别,而多数人也就误以为VB也是一门语言,其实它只是和 Eclipse 或者说NetBeans,或者说JBuilder或者说delphi一样的一个开发平台而已!
而C++则是不折不扣的一门计算机高级语言.所以在某种程度上他们不具备可比性的哟.
接下来,有人认为C++难学,而VB好学,这点个人认为这些人真的很可悲,可悲的不是他本人,而是在这我国这样的教育体质下...basic的容易是因为他有一个好的父亲微软,有一个好的IDE即Visual Basic,而C++的难学是至今为止没有一个好的开发平台,当时你可以说VC6,你可以说我的应用程序用MFC或者说用ATL写的com组件用得怪好,但他们真是那么方便吗? 只要有一个好的平台IDE,一门语言就会风靡...所以Basic(VB)和C++在某种意义上是一样的哟,而且在业务逻辑的实现上C++更容易一些,因为它的面向对象的思想更接近于人的思维!
再下来,就应该说说他们的本质区别,VB作为开发工具而言他使用basic这种面向过程的语言来进工作,把一个项目或者说一套解决方案分成若干个模块每个过程完成相应的工作.而C++是一种面向对象的编程语言,它的思想更接近于人的思维,它认为万物皆对象,而每个对象既是独立存在具有主动思维的个体,又可以是互相作用相互致约的联系!打比方说,我写个程序,一个杯子有自己的高度,外观,容量等属性,而且它也有自己的行为即它会有倒水这个动作!每个存在的实体都有自己的动作...
最后说一下,国内不止少数人还认为C和C++有联系,或者说C++受到了C的一些致约不能发挥完整的面向对象的神髓,其实不然,我可以告诉你C++和C一点关系都没有,我长时间的从事C底层开发,写C的程序和写C++的程序完全是两个概念,不知道国内甚至是大学的老师或者说教授们都大言不惭的说什么C++相溶于C或者说什么C++编程还分为面向对象的和面向过程的...最可笑的是某国内的权威教程里也是这么编写的,这本某权威C++教程居然把C++分为面向过程和面向对象!我们的学员在这样的环境下学习不是可悲吗? 这里我要说的是C++写的就是纯面向对象的,那些所谓面向过程的教材上写的也不是全完错,而是它们出现的地方应该是在C教程里,至少不是C++的教程...而如果说你看过一本C++的教程如 C++ Primer 你自己就会明白了.样子一样并不代表他们很一样.
现在不是很流行C#和Java吗?同时学过这两门语言的同仁,会很惊喜的发现他们很多地方有着惊人的一致,而且不乏相互抄袭之意.比如在jdk 5.0出现的foreach,而在C#里asp.net 2.0,则引入了java中的同步线程,而且 原来的hashtable和hashmap在.net中也可以轻易找到,总之在java中有的方法或者说集合类在c#中一定可以找到.但是好像没有什么人说C#和java是同一个东西吧.好了,有点说远了,今天给大家讲了C++和VB的区别.有什么问题EM我,一定知无不言!
我的博客http://blog.sina.com.cn/loveblue52081
目前在Windows下开发应用程序的工具虽然很多,但是C/C++作为一种非常成
熟和高效的开发语言在大型复杂项目的开发中仍然得到了广泛应用。为了减轻程序
开发负担,提高开发效率,各种流行的C++都提供了类库,本文就是针对如何在
Visual C++环境中使用MFC类库来开发高级程序所需要解决的一些问题进行了的探
讨,重点讨论了利用MFC开发单文档多视应用程序和DDE应用程序的方法。
一、使用C/C++
随着Windows系列操作系统的日益普遍,传统的基于DOS编程逐渐转向Windows下编程
已经成为必然趋势。目前在Windows下开发应用程序的工具很多,典型的如Borland
C++、Visual C++、Visual Baisic以及Delphi等等。每种开发工具都各有其特点,
一般来讲用户可以根据自己的使用习惯和开发项目的性质来选择具体的开发语言。
Visual Basic是一个被软件界称之为划时代的革新产品,该软件改变了人们开发
Windows程序的方式,它采用交互式的可视化操作,使得人们开发Windows程序的每
一过程都有直观形象的反馈,从而加速整个开发进程。Visual Basic使得Windows程
序设计人员不再只依赖于复杂的SDK编程,使得开发Windows程序非常容易,可以
说,用户学习并使用VB来开发Windows应用的时间是最短的。Visual Basic版本几经
演变,目前已经发展到5.0。在4.0版本中,由于完全使用了面向对象的编程概念,
同时具有Windows 3.1和Windows 95下的版本,因而使得其开发复杂程序的功能逐渐
增强。VB5.0则抛弃了Windows 3.x的用户,只能在32位Windows中使用,据悉,该版
本吸收了Delphi的成功策略,引入了本地代码(Native Code)编译器,从而使得程序
执行速度大大加快,克服了以往版本由于执行文件采用P-Code代码而导致运行速度
慢的特点,根据微软的声明,该版本的采用本地代码编译后得到的应用程序在某些
情况下执行速度较以往提高了10~20倍,执行速度可以直逼与采用Visual C++编写的
应用,而应用开发速度则是VB的强项,因此Visual Basic 5.0非常具有竞争性。目
前Visual Basic非常广泛地用于开发各种Windows程序,如数据库前端应用程序和多
媒体应用等。但是,在作者看来,采用VB也有一定的缺点,原因有以下几点:
1. Visual Basic来源于Basic语言,虽然经过微软的不断增强,但是仍然缺乏非常
灵活的数据类型和编程策略,因而在开发一些项目必须的复杂数据结构遇到麻烦,
如链表、图和二叉树等等。由于在中大型项目开发后期,开发工作不再以界面为
主,而是在算法设计和底层软硬件工作,这就使VB开发项目的后期工作量大幅度增
加,为了达到项目要求,经常需要再转向C/C++开发一些专用的动态连接库来解决问
题。
2. Visual Basic运行速度慢,前文讲过,采用P-Code代码虽然执行文件很小,但是
在运行时需要解释执行,并且,它的运行必须有对应的VBRUN.DLL和所使用的VBX或
者OCX支持。对于浮点操作密集或者循环嵌套很多的应用来说,VB没有采取特别的优
化,因而执行速度远不如用C/C++和Fortran开发的应用速度快。VB 5.0虽然通过引
入本地代码编译器大大弥补了这个缺陷,但是由于其只能运行于32位Windows环境因
而在16位Windows上速度问题仍然得不到解决。虽然目前转向32位Windows的趋势非
常强劲,但是不容忽视由于硬件的限制或者使用习惯等诸多原因,还有许多用户仍
然在16位Windows上工作。在计算机十分普及的美国,96年使用16位Windows的用户
仍然超过了使用32位Windows的用户,任何进行系统软件设计的人员都应该照顾到这
些仍然使用16位Windows的用户。
3. VB不能灵活地使用系统资源。熟悉Windows编程的人都知道,如果要直接访问硬
件或者要编写对系统进行有效访问的应用程序,没有Windows API函数的帮助则非常
困难,但是令VB程序员失望的是,API函数是用C语言和汇编语言实现的,是为C编程
准备的,如果要在VB里面使用这些上千个API函数则比较麻烦,特别是,如果设计人
员不懂C语言则尤其困难。由于API函数的复杂性,而其本身不是为了方便VB编程而
提供的,因此在VB里面调用API函数需要一定的技巧,这些技巧足够用一本很厚的书
来表述。VB程序员可以从书店里找到好多本类似的书籍。可以说,任何一个VB程序
员发展到一定阶段都需要与众多的API函数打交道。另外,由于VB不支持端口操作,
因此,如果要编写类似数据采集等需要与硬件交互的程序则需要求救于C/C++语言。
4. Visual Basic项目分发和管理困难,其原因同上讲的,VB应用的运行不能脱离VB
的运行库和所使用的控件,因此,如果开发人员要将VB应用分发给用户那么一定要
带上VB的运行库和所使用的控件,并且要保证正确安装,这就导致即使一个非常简
单的应用也需要附带大量其它相关支撑库程序,对于VB 4.0及更高版本,由于大量
的使用了OLE控件(在VB中称为OCX),其安装更为复杂。
Delphi软件是国际宝兰公司(Borland)的得意之作,也是备受软件界推崇,与VB一
样,它完全是一个交互式的可视化开发平台,支持Client/Server应用程序的开发,
其最新版本2.0可以开发Windows 3.x、Windows 95和Windows NT的应用程
序。Delphi开发速度也非常快,与VB相比,由于具有本地代码编译器因此它产生的
可执行文件执行速度大大加快。Delphi软件是一个非常有竞争力的软件,采用的是
面向对象的Object pascal语言,支持硬件操作和API调用。但是由于采用的编程语
言为Pascal,这种语言并不非常流行,许多程序设计人员完全不熟悉这种语言,因
此极大地限制了该软件的使用,如果宝兰公司能够将Delphi软件提供的RAD开发机制
引入到其Borland C++中,则可能会形成一个非常成功的产品(目前该版本已经推
出,即C++ Builder,笔者注)。
VB和Delphi引入的可视化开发方法还有一个共同的缺点就是各个版本之间的兼容问
题。一般来讲,采用这些可视化开发工具开发的应用程序在移植到高版本时不会遇
到太大困难,但是一旦往相反方向移植则困难重重,有时甚至不可能。C/C++语言则
不具有这种局限性,各个版本之间的相互移植并不困难,高版本往低版本移植一般
只需重建工程文件即可大功告成。
综上所述,根据作者的观点,如果要开发一个大型复杂的应用程序首选的还是
C/C++,特别是在16位Windows下。虽然这会使前期工作增加,但是在项目的中后期
将逐渐会领略到其优越性和开发效率,其灵活高效的执行代码适合于对速度和应用
程序之间的协同性要求很高的场合。纯粹基于Windows SDK来开发Windows程序是一
项艰巨的工程,值得庆幸的是目前各种流行的C/C++开发工具都提供了类库开发框架
来简化整个开发过程而又不失其固有的灵活高效性,不同的开发语言所提供的类库
开发框架不同,如Borland C++提供的OWL(Object Windows Library)和 Visual C++
提供的MFC(Microsoft Fundmental Class),这两种类库都封装了大量的Windows
API和Windows的开发元素而使得开发任务简化,两种类库各有其优点,据作者掌握
的资料,采用MFC编写的应用程序执行代码更小,执行速度也更快,这大概是因为该
软件的开发者是开发Windows操作系统的Microsoft公司的缘故吧,现在MFC正逐渐成
为Windows下的类库开发标准,正被越来越多的其它C/C++编译工具所支持,如
Watcom C++。使用MC类库同时配合Visual C++提供的AppWizard、ClassWizard和
AppStudio可以大幅度提高开发效率。笔者在工作中积累了一些MFC的使用经验现在
提出来供大家参考,希望对广大同行有所帮助,尤其是那些仍然致力于16位Windows
编程的程序员。本文使用的Visual C++ 1.51编译器,但是其方法同样适用于其它
VC++版本,包括Visual C++ 4.x。