vb与c 哪个更有用
2010年11月28日
vb与c++哪个更有用
满意答案1:
两个都是面向对象的程序设计,但是VB不是完全面向对象的,它是有面向对象的设计思想,但是主要的还是面向过程,VB适合快速高效开发应用程序,他还有一个.NET版本,是完全面向对象的。C++适合开发大型应用程序,比较复杂。
所以总的来说,两个都有用,每一门语言既然被人们广泛使用一定有他的理由,语言只是工具,关键是编程思想,你有好的编程思想才能编出优秀的程序,主要是你要选出适合自己语言。
满意答案2:
VB 和 C++ 是两个不同的编程语言。
下面简单介绍一下VB 和 C++。
VB
VB是Visual Basic的简称,是由美国微软公司于1991年开发的一种可视化的、面向对象和采用事件驱动方式的结构化高级程序设计语言,可用于开发 Windows 环境下的各类应用程序。它简单易学、效率高,且功能强大可以与 Windows 专业开发工具SDK相媲美。在Visual Basic环境下,利用事件驱动的编程机制、新颖易用的可视化设计工具,使用Windows内部的广泛应用程序接口(API)函数,动态链接库(DLL)、对象的链接与嵌入(OLE)、开放式数据连接(ODBC)等技术,可以高效、快速地开发Windows环境下功能强大、图形界面丰富的应用软件系统。
VB的特点
1.面向对象
VB采用了面向对象设计思想,它基本思路是把复杂设计问题分解为个个能够完成独立功能――相对简单对象集合。所谓“对象”就是个可操作实体如窗体、窗体中命令按钮、标签、文本框等面向对编程就好像搭积木样员可根据和界面设计要求直接在屏幕上“画\"出窗口、菜单、按钮等区别类型对象并为每个对象设置属性。
2.事件驱动
在Windows环境下是以事件驱动方式运行每个对象的都能响应多个区别事件,每个事件都能驱动段代码――事件过程该代码决定了对象功能通常称这种机制为事件驱动事件可由用户操作触发也可以由系统或应用触发例如单击个命令按钮就触发了按钮Click(单击)事件该事件中代码就会被执行若用户未进行任何操作(未触发事件)则就处于等待状态整个应用就是由彼此独立事件过程构成。
3.软件Software集成式开发
VB为编程提供了个集成开发环境在这个环境中编程者可设计界面、编写代码、调试直至把应用编译成可在Windows中运行可执行文件并为它生成安装VB集成开发环境为编程者提供了很大方便。
4.结构化设计语言
VB具有丰富数据类型是种符合结构化设计思想语言而且简单易学此外作为种设计语言VB还有许多独到的处。
5.强大数据库访问功能
VB利用数据Control控件可以访问多种数据库VB 6.0提供ADOControl控件不但可以用最少代码实现数据库操作和控制也可以取代DataControl控件和RDOControl控件。
6.支持对象链接和嵌入技术
VB核心是对对象链接和嵌入(OLE)技术支持它是访问所有对象种思路方法利用OLE技术能够开发集声音、图像、动画、字处理、Web等对象于体。
7.网络功能
VB 6.0提供了DltTML(Dynamic}tTML)设计工具利用这种技术可以动态创建和编辑Web页面使用户在VB中开发多功能网络应用软件Software。
8.多个应用向导
VB提供了多种向导如应用向导、安装向导、数据对象向导和数据窗体向导通过它们可以快速地创建区别类型、区别功能应用。
9.支持动态交换、动态链接技术
通过动态数据交换(DDE)编程技术VB开发应用能和其他Windows应用的间建立数据通信通过动态
链接库技术在VB中可方便地用C语言或汇编语言编写也可Windows应用接口(.API)。
10.联机帮助功能
在VB中利用帮助菜单和F1功能键用户可随时方便地得到所需要帮助信息VB帮助窗口中显示了有关举例代码通过复制、粘贴操作可获取大量举例代码为用户学习和使用提供方便。
补充:
C++
C++这个词在中国大陆的程序员圈子中通常被读做“C加加”,而西方的程序员通常读做C plus plus、CPP。 它是一种使用非常广泛的计算机编程语言。C++是一种静态数据类型检查的,支持多重编程范式的通用程序设计语言。它支持过程化程序设计、数据抽象、面向对象程序设计、制作图标等等泛型程序设计等多种程序设计风格。【语言发展】
C++语言发展大概可以分为三个阶段:
第一阶段从80年代到1995年。这一阶段C++语言基本上是传统类型上的面向对象语言,并且凭借着接近C语言的效率,在工业界使用的开发语言中占据了相当大份额;
第二阶段从1995年到2000年,这一阶段由于标准模板库(STL)和后来的Boost等程序库的出现,泛型程序设计在C++中占据了越来越多的比重性。
当然,同时由于Java、C#等语言的出现和硬件价格的大规模下降,C++受到了一定的冲击;
第三阶段从2000年至今,由于以Loki、MPL等程序库为代表的产生式编程和模板元编程的出现,C++出现了发展历史上又一个新的高峰,这些新技术的出现以及和原有技术的融合,使C++已经成为当今主流程序设计语言中最复杂的一员。 【C++入门】
C++是一种语言,仅仅是它的语法、特性、标准类库就已经是一门非常高深的课程,所以在开始学习的时候,必须先要打好基础。在市面上有很多Visual C++的书,虽然其中可能会花1-2章来介绍C++的基本特性,但是那绝对不会让你入门。因此,初学者学习C++应该选择针对C++语言本身的书籍,而不能是针对Visual C++、MFC或者Windows API的。
学习C++应该由易至难,循序渐进。以前经常有人说学习C++之前应该学习C语言。事实上那不是必须的,C++和C语言虽然有关系,但仍然是两种不同的语言。当然,在学习C++之前学习过其他编程语言是很有好处的。那会使学习C++的速度更快,毕竟很多计算机语言的概念都是相通的。而对于零基础的初学者来说,则是应该静下心来,不要急躁。要成为C++的高手,不是那么容易的,必须要花很大的努力。
从入门教材的选择上,主要看学习者的自身情况。如果已经有过学习高级语言的经历,那么推荐使用谭浩强的《C++程序设计》。注意是04年版的,06年版的那本书是阉割版,上来就面向对象。虽然说C和C++是相似的,但是前面已经说了,C和C++应该作为两种语言来学习,所以06年的那本内容就稍微欠缺一点了。谭浩强04版的这本书内容比较规整的,条理也很清晰。如果有过其他高级语言的基础,那么估计半年就能对C++的概况有个了解了。谭浩强老师的书已经成为了全国各大高等院校的教科书,是比较受到认可的。
如果是从零基础开始学C++,那么推荐使用潘嘉杰的《易学C++》。这本书是2008年出的新书,听说是个学生在读书的时候写的。这本书网上有下载免费的电子版。。这本书主要就是针对初学者的,讲得也比较生动有趣,比较提得起学习的兴趣。所以没有基础的初学者选这本书也是不错的,就是想要很快成为高手,可能看这本书还不够。
至于看完入门的书之后,就应该看一些高层次的书了。比如The C++ Programming Language和C++ Primer,同时也可以向STL、MFC、API等各个方向发展。如果对别的语言感兴趣,还能去看看C#和Java,它们和C++从语法和很多概念上都是类似的。 【C++的设计原则】
? C++设计成静态类型、和C同样高效且可移植的多用途程序设计语言。
? C++设计成直接的和广泛的支援多种程序设计风格(程序化程序设计、资料抽象化、面向对象程序设计、泛型程序设计)。
? C++设计成给程序设计者更多的选择,即使可能导致程序设计者选择错误。
? C++设计成尽可能与C兼容,籍此提供一个从C到C++的平滑过渡。
? C++避免平台限定或没有普遍用途的特性。
? C++不使用会带来额外开销的特性。
? C++设计成无需复杂的程序设计环境。
出于保证语言的简洁和运行高效等方面的考虑,C++的很多特性都是以库(如STL)或其他的形式提供的,而没有直接添加到语言本身里。关于此类话题,C++之父的《C++语言的设计和演化》 里做了详尽的陈述。 【C++的Hello World程序】
在使用兼容C89标准(也称为ANSI C)的编译器时,下面这个程序显示“Hello, world!”然后结束运行:
(事实上这并不是符合98标准[ISO C++]的C++程序,而且在多数编译器上这个程序也不能运行,若要在比较旧的编译器上编译该程序,应将iostream改为iostream.h)
#include
int main()
{
printf("Hello, world!\n");
return 0;
}
在使用兼容C++98标准(ISO/IEC 14882-1998)的编译器时,下面的程序也是可以的:
#include
int main()
{
cout
using namespace std;
int main()
{
cout<<"Hello,world!"<<endl;
return 0;
}
根据ISO C++的规定,main函数的形式只能是
int main(void)
{
...
}
以及
int main(int argc,char * argv[])
{
...
}
尽管如此,但在Visual C++ 2003以前的Microsoft Studio编译器上,
void main()
{
...
}
也被支持,但这并不正确,也不标准。这样的写法会使程序代码丧失跨平台的特性。每年都有专业人士规定c++的语法,这也是c++优于其他编程语言的原因之一,由它衍生的Java已成为通用编程语言中广受欢迎的一种。 【C++程序员的数量】
分析机构EvansData定期对开发人员展开调查,其调查结果与Stroustrup提出的C++正在扩张的说法相违背。EvansData的数据显示,以C++为工具的开发人员在整个开发界所占的比例由1998年春天的76%下降至2004年秋的46%。
Forrester最新的调查显示,C++、微软VisualBasic和Java是众多公司产品体系的首选语言。对100家公司的调查显示,C/C++、VisualBasic和Java在产品体系中的使用比例分别是59%、61%和66%。
传统上认为,C++相对于目前一些新潮的语言,如Java、C#,优势在于程序的运行性能。这种观念并不完全。如果一个人深信这一点,那么说明他并没有充分了解和理解C++和那个某某语言。同时,持有这种观念的人,通常也是受到了某种误导(罪魁祸首当然就是那些财大气粗的公司)。对于这些公司而言,他们隐藏了C++同某某语言间的核心差别,而把现在多数程序员不太关心的差别,也就是性能,加以强化。因为随着CPU性能的快速提升,性能问题已不为人们所关心。这叫“李代桃僵”。很多涉世不深的程序员,也就相信了他们。于是,大公司们的阴谋也就得逞了。
一般认为,使用Java或C#的开发成本比C++低。但是,如果你能够充分分析C++和这些语言的差别,会发现这句话的成立是有条件的。这个条件就是:软件规模和复杂度都比较小。如果不超过3万行有效代码(不包括生成器产生的代码),这句话基本上还能成立。否则,随着代码量和复杂度的增加,C++的优势将会越来越明显。造成这种差别的就是C++的软件工程性。在Java和C#大谈软件工程的时候,C++实际上已经悄悄地将软件工程性提升到一个前所未有的高度。这一点被多数人忽视,并且被大公司竭力掩盖。
语言在软件工程上的好坏,依赖于语言的抽象能力。从面向过程到面向对象,语言的抽象能力有了一个质的飞跃。但在实践中,人们发现面向对象无法解决所有软件工程中的问题。于是,精英们逐步引入、并拓展泛型编程,解决更高层次的软件工程问题。(实际上,面向对象和泛型编程的起源都可以追溯到1967年,但由于泛型编程更抽象,所以应用远远落后于面向对象)。 【C++语言的应用】
哪些程序是用C++写的:
主流的3种操作系统Windows,Linux,Unix,内核都是用C语言和汇编写的,上层高级特性是用C++写的。
《魔兽世界》等几乎所有的网络游戏,百度搜索引擎(Baidu.com),我们所用的大多数软件都是用C++写的(硬件也有很多用到C++的)。
C++之父Bjarne Stroustrup列举的C++应用:
Amazon.com:Software for large-scale e-commerce
Apple: OS X is written in a mix of language, but a few important parts are C++.
AT&T:The largest US telecommunications provider.
o provisioning systems
o systems for rapid network recovery after failure
Autodesk: A large number of major number of application in the CAD domain
Ericsson:o server platform.
o TDMA-CDMA HLR
o GSM-TDMA-CDMA mobility gateway
Google: web search engine, etc。
HP: Here is a tiny fraction of HP's C++ apps:
o C, C++, Fortran90 compilers, and linker for the new HP IA64 platform (these add to more than 1 million lines of C++ code).
IBM: o OS/400.
o K42: a high performance, open source, general-purpose operating system kernel for cache-coherent multiprocessors.
Intel:o Vtune performace analysis software
o compilers and optimizers
o lots of chip design and manufacturing software
JPL (Jet Propulsion Lab, NASA): Mars rover autonomous driving system (incl. scene analysis and route planning). C++ on Mars! Also lots of supporting software "on the ground" (i.e. Earth).
Microsoft:o Windows XP
o Windows NT (NT4 and 2000)
o Windows 9x (95, 98, Me)
o Microsoft Office (Word, Excel, Access, PowerPoint, Outlook)
o Internet Explorer (including Outlook Express)
o Visual Studio
o SQL
Mozilla: Firefox browser and Thunderbird mail client (open source)
MySQL: MySQL Server (about 250,000 lines of C++) and MySQL Cluster. Arguably the world's most popular open source database
Nokia: o Mobile Communications radio-station/internet bridges: FlexiGGSN (Gateway GPRS Support Node) and FlexiSGSN (Server GPRS Support Node).
o MSC/HLR
Sun: o The HotSpot Java Virtual Machine is written in C++
Symbian OS: rationale: "[...] using C++ for all system code, from the kernel upwards." This is one of the most widespread OS's for cellular phones
KDE from linux is written in C++.
telephone systems: I think it would be almost easier to list the systems which aren't written in C++
更详细的应用列表1: http://www.research.att.com/~bs/applications.html
更详细的工业列表2: http://www.lextrait.com/vincent/implementations.html[编辑本段]【C++编程技巧】
一、使用new和delete进行动态内存分配和释放
运算符new和delete是C++新增的运算符,提供了存储的动态分配和释放功能。它的作用相当于C语言的函数malloc()和free(),但是性能更为优越。使用new较之使用malloc()有以下的几个优点:
(1)new自动计算要分配类型的大小,不使用sizeof运算符,比较省事,可以避免错误。
(2)自动地返回正确的指针类型,不用进行强制指针类型转换。
(3)可以用new对分配的对象进行初始化。
使用例子:
(1)int* p;
p=new int[10]; //分配一个含有10个整数的整形数组
delete[] p; //删除这个数组
(2)int* p;
p=new int (100);//动态分配一个整数并初始化
二、使用inline内联函数替代宏调用
对于频繁使用的函数,C语言建议使用宏调用代替函数调用以加快代码执行,减少调用开销。但是宏调用有许多的弊端,可能引起不期望的副作用。例如宏:#define abs(a) ((a)<0?(-a):(a)), 当使用abs(i++)时,这个宏就会出错。
所以在C++中应该使用inline内联函数替代宏调用,这样既可达到宏调用的目的,又避免了宏调用的弊端。
使用内联函数只须把inline关键字放在函数返回类型的前面。例如:
inline int Add(int a,int b);//声明Add()为内联函数
这样编译器在遇到Add()函数时,就不再进行函数调用,而是直接嵌入函数代码以加快程序的执行。
三、使用函数重载
在C语言中,两个函数的名称不能相同,否则会导致编译错误。而在C++中,函数名相同而参数数据类型不同的两个函数被解释为重载。例如:
void PutHz(char* str);//在当前位置输出汉字
void PutHz(int x,
2010年11月28日
vb与c++哪个更有用
满意答案1:
两个都是面向对象的程序设计,但是VB不是完全面向对象的,它是有面向对象的设计思想,但是主要的还是面向过程,VB适合快速高效开发应用程序,他还有一个.NET版本,是完全面向对象的。C++适合开发大型应用程序,比较复杂。
所以总的来说,两个都有用,每一门语言既然被人们广泛使用一定有他的理由,语言只是工具,关键是编程思想,你有好的编程思想才能编出优秀的程序,主要是你要选出适合自己语言。
满意答案2:
VB 和 C++ 是两个不同的编程语言。
下面简单介绍一下VB 和 C++。
VB
VB是Visual Basic的简称,是由美国微软公司于1991年开发的一种可视化的、面向对象和采用事件驱动方式的结构化高级程序设计语言,可用于开发 Windows 环境下的各类应用程序。它简单易学、效率高,且功能强大可以与 Windows 专业开发工具SDK相媲美。在Visual Basic环境下,利用事件驱动的编程机制、新颖易用的可视化设计工具,使用Windows内部的广泛应用程序接口(API)函数,动态链接库(DLL)、对象的链接与嵌入(OLE)、开放式数据连接(ODBC)等技术,可以高效、快速地开发Windows环境下功能强大、图形界面丰富的应用软件系统。
VB的特点
1.面向对象
VB采用了面向对象设计思想,它基本思路是把复杂设计问题分解为个个能够完成独立功能――相对简单对象集合。所谓“对象”就是个可操作实体如窗体、窗体中命令按钮、标签、文本框等面向对编程就好像搭积木样员可根据和界面设计要求直接在屏幕上“画\"出窗口、菜单、按钮等区别类型对象并为每个对象设置属性。
2.事件驱动
在Windows环境下是以事件驱动方式运行每个对象的都能响应多个区别事件,每个事件都能驱动段代码――事件过程该代码决定了对象功能通常称这种机制为事件驱动事件可由用户操作触发也可以由系统或应用触发例如单击个命令按钮就触发了按钮Click(单击)事件该事件中代码就会被执行若用户未进行任何操作(未触发事件)则就处于等待状态整个应用就是由彼此独立事件过程构成。
3.软件Software集成式开发
VB为编程提供了个集成开发环境在这个环境中编程者可设计界面、编写代码、调试直至把应用编译成可在Windows中运行可执行文件并为它生成安装VB集成开发环境为编程者提供了很大方便。
4.结构化设计语言
VB具有丰富数据类型是种符合结构化设计思想语言而且简单易学此外作为种设计语言VB还有许多独到的处。
5.强大数据库访问功能
VB利用数据Control控件可以访问多种数据库VB 6.0提供ADOControl控件不但可以用最少代码实现数据库操作和控制也可以取代DataControl控件和RDOControl控件。
6.支持对象链接和嵌入技术
VB核心是对对象链接和嵌入(OLE)技术支持它是访问所有对象种思路方法利用OLE技术能够开发集声音、图像、动画、字处理、Web等对象于体。
7.网络功能
VB 6.0提供了DltTML(Dynamic}tTML)设计工具利用这种技术可以动态创建和编辑Web页面使用户在VB中开发多功能网络应用软件Software。
8.多个应用向导
VB提供了多种向导如应用向导、安装向导、数据对象向导和数据窗体向导通过它们可以快速地创建区别类型、区别功能应用。
9.支持动态交换、动态链接技术
通过动态数据交换(DDE)编程技术VB开发应用能和其他Windows应用的间建立数据通信通过动态
链接库技术在VB中可方便地用C语言或汇编语言编写也可Windows应用接口(.API)。
10.联机帮助功能
在VB中利用帮助菜单和F1功能键用户可随时方便地得到所需要帮助信息VB帮助窗口中显示了有关举例代码通过复制、粘贴操作可获取大量举例代码为用户学习和使用提供方便。
补充:
C++
C++这个词在中国大陆的程序员圈子中通常被读做“C加加”,而西方的程序员通常读做C plus plus、CPP。 它是一种使用非常广泛的计算机编程语言。C++是一种静态数据类型检查的,支持多重编程范式的通用程序设计语言。它支持过程化程序设计、数据抽象、面向对象程序设计、制作图标等等泛型程序设计等多种程序设计风格。【语言发展】
C++语言发展大概可以分为三个阶段:
第一阶段从80年代到1995年。这一阶段C++语言基本上是传统类型上的面向对象语言,并且凭借着接近C语言的效率,在工业界使用的开发语言中占据了相当大份额;
第二阶段从1995年到2000年,这一阶段由于标准模板库(STL)和后来的Boost等程序库的出现,泛型程序设计在C++中占据了越来越多的比重性。
当然,同时由于Java、C#等语言的出现和硬件价格的大规模下降,C++受到了一定的冲击;
第三阶段从2000年至今,由于以Loki、MPL等程序库为代表的产生式编程和模板元编程的出现,C++出现了发展历史上又一个新的高峰,这些新技术的出现以及和原有技术的融合,使C++已经成为当今主流程序设计语言中最复杂的一员。 【C++入门】
C++是一种语言,仅仅是它的语法、特性、标准类库就已经是一门非常高深的课程,所以在开始学习的时候,必须先要打好基础。在市面上有很多Visual C++的书,虽然其中可能会花1-2章来介绍C++的基本特性,但是那绝对不会让你入门。因此,初学者学习C++应该选择针对C++语言本身的书籍,而不能是针对Visual C++、MFC或者Windows API的。
学习C++应该由易至难,循序渐进。以前经常有人说学习C++之前应该学习C语言。事实上那不是必须的,C++和C语言虽然有关系,但仍然是两种不同的语言。当然,在学习C++之前学习过其他编程语言是很有好处的。那会使学习C++的速度更快,毕竟很多计算机语言的概念都是相通的。而对于零基础的初学者来说,则是应该静下心来,不要急躁。要成为C++的高手,不是那么容易的,必须要花很大的努力。
从入门教材的选择上,主要看学习者的自身情况。如果已经有过学习高级语言的经历,那么推荐使用谭浩强的《C++程序设计》。注意是04年版的,06年版的那本书是阉割版,上来就面向对象。虽然说C和C++是相似的,但是前面已经说了,C和C++应该作为两种语言来学习,所以06年的那本内容就稍微欠缺一点了。谭浩强04版的这本书内容比较规整的,条理也很清晰。如果有过其他高级语言的基础,那么估计半年就能对C++的概况有个了解了。谭浩强老师的书已经成为了全国各大高等院校的教科书,是比较受到认可的。
如果是从零基础开始学C++,那么推荐使用潘嘉杰的《易学C++》。这本书是2008年出的新书,听说是个学生在读书的时候写的。这本书网上有下载免费的电子版。。这本书主要就是针对初学者的,讲得也比较生动有趣,比较提得起学习的兴趣。所以没有基础的初学者选这本书也是不错的,就是想要很快成为高手,可能看这本书还不够。
至于看完入门的书之后,就应该看一些高层次的书了。比如The C++ Programming Language和C++ Primer,同时也可以向STL、MFC、API等各个方向发展。如果对别的语言感兴趣,还能去看看C#和Java,它们和C++从语法和很多概念上都是类似的。 【C++的设计原则】
? C++设计成静态类型、和C同样高效且可移植的多用途程序设计语言。
? C++设计成直接的和广泛的支援多种程序设计风格(程序化程序设计、资料抽象化、面向对象程序设计、泛型程序设计)。
? C++设计成给程序设计者更多的选择,即使可能导致程序设计者选择错误。
? C++设计成尽可能与C兼容,籍此提供一个从C到C++的平滑过渡。
? C++避免平台限定或没有普遍用途的特性。
? C++不使用会带来额外开销的特性。
? C++设计成无需复杂的程序设计环境。
出于保证语言的简洁和运行高效等方面的考虑,C++的很多特性都是以库(如STL)或其他的形式提供的,而没有直接添加到语言本身里。关于此类话题,C++之父的《C++语言的设计和演化》 里做了详尽的陈述。 【C++的Hello World程序】
在使用兼容C89标准(也称为ANSI C)的编译器时,下面这个程序显示“Hello, world!”然后结束运行:
(事实上这并不是符合98标准[ISO C++]的C++程序,而且在多数编译器上这个程序也不能运行,若要在比较旧的编译器上编译该程序,应将iostream改为iostream.h)
#include
int main()
{
printf("Hello, world!\n");
return 0;
}
在使用兼容C++98标准(ISO/IEC 14882-1998)的编译器时,下面的程序也是可以的:
#include
int main()
{
cout
using namespace std;
int main()
{
cout<<"Hello,world!"<<endl;
return 0;
}
根据ISO C++的规定,main函数的形式只能是
int main(void)
{
...
}
以及
int main(int argc,char * argv[])
{
...
}
尽管如此,但在Visual C++ 2003以前的Microsoft Studio编译器上,
void main()
{
...
}
也被支持,但这并不正确,也不标准。这样的写法会使程序代码丧失跨平台的特性。每年都有专业人士规定c++的语法,这也是c++优于其他编程语言的原因之一,由它衍生的Java已成为通用编程语言中广受欢迎的一种。 【C++程序员的数量】
分析机构EvansData定期对开发人员展开调查,其调查结果与Stroustrup提出的C++正在扩张的说法相违背。EvansData的数据显示,以C++为工具的开发人员在整个开发界所占的比例由1998年春天的76%下降至2004年秋的46%。
Forrester最新的调查显示,C++、微软VisualBasic和Java是众多公司产品体系的首选语言。对100家公司的调查显示,C/C++、VisualBasic和Java在产品体系中的使用比例分别是59%、61%和66%。
传统上认为,C++相对于目前一些新潮的语言,如Java、C#,优势在于程序的运行性能。这种观念并不完全。如果一个人深信这一点,那么说明他并没有充分了解和理解C++和那个某某语言。同时,持有这种观念的人,通常也是受到了某种误导(罪魁祸首当然就是那些财大气粗的公司)。对于这些公司而言,他们隐藏了C++同某某语言间的核心差别,而把现在多数程序员不太关心的差别,也就是性能,加以强化。因为随着CPU性能的快速提升,性能问题已不为人们所关心。这叫“李代桃僵”。很多涉世不深的程序员,也就相信了他们。于是,大公司们的阴谋也就得逞了。
一般认为,使用Java或C#的开发成本比C++低。但是,如果你能够充分分析C++和这些语言的差别,会发现这句话的成立是有条件的。这个条件就是:软件规模和复杂度都比较小。如果不超过3万行有效代码(不包括生成器产生的代码),这句话基本上还能成立。否则,随着代码量和复杂度的增加,C++的优势将会越来越明显。造成这种差别的就是C++的软件工程性。在Java和C#大谈软件工程的时候,C++实际上已经悄悄地将软件工程性提升到一个前所未有的高度。这一点被多数人忽视,并且被大公司竭力掩盖。
语言在软件工程上的好坏,依赖于语言的抽象能力。从面向过程到面向对象,语言的抽象能力有了一个质的飞跃。但在实践中,人们发现面向对象无法解决所有软件工程中的问题。于是,精英们逐步引入、并拓展泛型编程,解决更高层次的软件工程问题。(实际上,面向对象和泛型编程的起源都可以追溯到1967年,但由于泛型编程更抽象,所以应用远远落后于面向对象)。 【C++语言的应用】
哪些程序是用C++写的:
主流的3种操作系统Windows,Linux,Unix,内核都是用C语言和汇编写的,上层高级特性是用C++写的。
《魔兽世界》等几乎所有的网络游戏,百度搜索引擎(Baidu.com),我们所用的大多数软件都是用C++写的(硬件也有很多用到C++的)。
C++之父Bjarne Stroustrup列举的C++应用:
Amazon.com:Software for large-scale e-commerce
Apple: OS X is written in a mix of language, but a few important parts are C++.
AT&T:The largest US telecommunications provider.
o provisioning systems
o systems for rapid network recovery after failure
Autodesk: A large number of major number of application in the CAD domain
Ericsson:o server platform.
o TDMA-CDMA HLR
o GSM-TDMA-CDMA mobility gateway
Google: web search engine, etc。
HP: Here is a tiny fraction of HP's C++ apps:
o C, C++, Fortran90 compilers, and linker for the new HP IA64 platform (these add to more than 1 million lines of C++ code).
IBM: o OS/400.
o K42: a high performance, open source, general-purpose operating system kernel for cache-coherent multiprocessors.
Intel:o Vtune performace analysis software
o compilers and optimizers
o lots of chip design and manufacturing software
JPL (Jet Propulsion Lab, NASA): Mars rover autonomous driving system (incl. scene analysis and route planning). C++ on Mars! Also lots of supporting software "on the ground" (i.e. Earth).
Microsoft:o Windows XP
o Windows NT (NT4 and 2000)
o Windows 9x (95, 98, Me)
o Microsoft Office (Word, Excel, Access, PowerPoint, Outlook)
o Internet Explorer (including Outlook Express)
o Visual Studio
o SQL
Mozilla: Firefox browser and Thunderbird mail client (open source)
MySQL: MySQL Server (about 250,000 lines of C++) and MySQL Cluster. Arguably the world's most popular open source database
Nokia: o Mobile Communications radio-station/internet bridges: FlexiGGSN (Gateway GPRS Support Node) and FlexiSGSN (Server GPRS Support Node).
o MSC/HLR
Sun: o The HotSpot Java Virtual Machine is written in C++
Symbian OS: rationale: "[...] using C++ for all system code, from the kernel upwards." This is one of the most widespread OS's for cellular phones
KDE from linux is written in C++.
telephone systems: I think it would be almost easier to list the systems which aren't written in C++
更详细的应用列表1: http://www.research.att.com/~bs/applications.html
更详细的工业列表2: http://www.lextrait.com/vincent/implementations.html[编辑本段]【C++编程技巧】
一、使用new和delete进行动态内存分配和释放
运算符new和delete是C++新增的运算符,提供了存储的动态分配和释放功能。它的作用相当于C语言的函数malloc()和free(),但是性能更为优越。使用new较之使用malloc()有以下的几个优点:
(1)new自动计算要分配类型的大小,不使用sizeof运算符,比较省事,可以避免错误。
(2)自动地返回正确的指针类型,不用进行强制指针类型转换。
(3)可以用new对分配的对象进行初始化。
使用例子:
(1)int* p;
p=new int[10]; //分配一个含有10个整数的整形数组
delete[] p; //删除这个数组
(2)int* p;
p=new int (100);//动态分配一个整数并初始化
二、使用inline内联函数替代宏调用
对于频繁使用的函数,C语言建议使用宏调用代替函数调用以加快代码执行,减少调用开销。但是宏调用有许多的弊端,可能引起不期望的副作用。例如宏:#define abs(a) ((a)<0?(-a):(a)), 当使用abs(i++)时,这个宏就会出错。
所以在C++中应该使用inline内联函数替代宏调用,这样既可达到宏调用的目的,又避免了宏调用的弊端。
使用内联函数只须把inline关键字放在函数返回类型的前面。例如:
inline int Add(int a,int b);//声明Add()为内联函数
这样编译器在遇到Add()函数时,就不再进行函数调用,而是直接嵌入函数代码以加快程序的执行。
三、使用函数重载
在C语言中,两个函数的名称不能相同,否则会导致编译错误。而在C++中,函数名相同而参数数据类型不同的两个函数被解释为重载。例如:
void PutHz(char* str);//在当前位置输出汉字
void PutHz(int x,