在学习C后是否还要学习C++?

作者:王姗姗,华清远见嵌入式学院讲师。

在嵌入式开发中,作为底层开发者,更看重的是C语言的编程能力,但作为应用程序的开发者,我想学习C++还是有必要的。你只有在了解了C++的特性,从本质上看到它与C的区别才能坚定你认识学习它的决心。我不是专家,但是从我学习的历程上来看,学习C++还是有需要的,不论你做QT或者GTK都会有帮助。

借助于C++ Primer Plus 的开场白,C++是一种令人兴废的语言,它在C语言的基础上添加对面向对象编程的支持,它已经成为20世纪90年代最重要的编程语言之一。C++继承了C语言的高效、简洁、快速和可移植性的传统。C++面向对象的特性带来了全新的编程方法,而这种方法是为应付复杂程度不断提高的现代编程任务而设计的。在面向对象编程中你会体会到很多新的术语——对象、类、封装、数据隐藏、对态和继承等。其实C++融合了三种不同的编程传统——C语言代表的过程性语言传统、c++在C语言基础上添加的类代表的面向对象语言的传统,以及c++模版支持的通用编程传统。

下面来看看C++的历史。C++产生于美国贝尔实验室,设计初衷是用来改进C的开发效率,C是面向过程的语言,开发效率底,贝尔实验室有大量的C程序员,所以只要在开发效率上提高一点点,就可以节约数目庞大的成本。C是什么东西?是用来代替汇编编写操作系统的语言,用C++代替C,可以得出两个结论:第一,C++必须具有同C相当的执行速度;第二,C++必须比C具有较高的开发效率。执行速度方面,C++的设计者的思想就是在改进开发效率的同时尽量不增加C++的系统开销,当然有些地方非增加开销不可,也把开销控制在最小程度内。具非权威研究报告,C++比C的执行开销多出不到10%。开发效率方面,C++引进了面向对象机制,库机制,最大程度上实现了代码重用,这是软件开发人员的福音。C++在改进C的开发效率的同时,对C的缺陷做了一些修补。C的优点在C++中都得到了很好的保留,C的缺点在C++中都有了改进,有了更好的解决办法。而且,为了现有的大量C程序维护,C++还全面兼容了C。纵观当今程序语言家族,我觉得只有C可以C++相提并论,门当户对,其它语言都无法和C++相提并论。无论从什么角度来说,C++都算的上语言中的老大。

C++的优势是用来开发大型软件,从中可以学到很多优秀的软件设计思想。C++不是软件开发的首选工具,一般说来,大多人更愿意学习和使用VB,为什么,简单。简单的另一个方面是功能的局限。微软公司恨不的所有人都学VB,只有他一家会C++。容易上手,大家都喜欢学,喜欢用,很多人拿一本200页的书,看个两三个星期,就觉得自己是个程序员了,可以开发软件了,而且觉得做出来的东西很不错。当软件规模大到一定程度的时候,其他语言就越来越无法驾驭,这时C++的优势就体现出来了。你说做个成绩管理系统,人事查询系统,用VB,DELPHI,C#,JAVA都行,但是例如银行,电信,保险,操作系统,数据仓库,图形处理,编译系统,较底层的软件时,其他工具几乎是无法完成的。就说C++的指针,JAVA没有,在遇到数据量交大的数据排序,搜索,动态内存分配时,它就没有办法了。所以说,学习C++,不仅仅是学到的一种语言,还学习了优秀的软件设计思想。学习C++可以学习到计算机底层的理论,即使不是用C++开发,对计算机运行机制的理解,对建制稳定的系统,对运用其他语言,也是一种促进。这一点,我是在学习过程中体会到的,所以,要说出个大家可以接受的理由来较难,大家以后学习就知道了。

嵌入式领域更是C++的天下。嵌入式linux支持.net?也许有人说,WinCE不是可以支持.net么?支持是可以支持,但并不代表所有的WinCE设备都支持。因为WinCE是可裁剪的操作系统,也许是为了节约内存空间,也许是为了启动速度,或是由于别的杂七杂八的,甚至莫名其妙的理由,很多厂商根本就不会将.net这个会将系统膨胀至少4M的组件加到产品去。看看WinCE的内核代码,看看WinCE的BSP包,哪里有.net代码的身影?全部清一色的C++。甚至于WinCE的应用程序,微软的态度也非常明确,在桌面只能.net使用的Silverlight,在WinCE SP3添加之后,却是更改为了C++接口。

学习c++和学习其他任何语言都一样,入门很简单但是想学好,就不是那么容易了,这也是为什么这么多人惧怕学C++的原因了吧。为什么?因为C++太灵活了。对于一种功能,C++有各种各样的方法,究竟什么方法才是最合适的?比如说,传递给函数的形参,什么时候该使用指针,什么时候该使用引用?就连平常得再也不能平常的指针转型,有C的括号形式,还有C++特有的dynamic_cast和reinterpret_cast,究竟哪个才是该使用的?更不用说分配内存了,既有malloc,还有new,如果算上STL的话,还有一个resize。我想所有的这些,对于初学者而言,都会觉得难的。

其实如何去学习它我也说不清,每个人都有每个人学习的方法,但是我觉得有一点是必须的,那就是要多看书,那么多C++的经典著作我想一定会对你我起作用的。一定要记着要坚持,要有足够的勇气的征服它,那么最后成功的就一定是你了。

你可能感兴趣的:(C++,职场,学习,休闲)