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

华清远见 2010-01-22 09:21 作者:王姗姗,华清远见嵌入式学院讲师。

 

        在嵌入式开发中,作为底层开发者,更看重的是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++的经典著作我想一定会对你我起作用的。一定要记着要坚持,要有足够的勇气的征服它,那么最后成功的就一定是你了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 当然有必要学习C++,因为C++是C语言的扩展,它不仅继承了C语言的优点,还增加了很多新的特性和功能,可以更好地支持面向对象编程和泛型编程。此外,C++也是很多行业和领域的主流编程语言,掌握它可以为你的职业发展带来更多机会。 ### 回答2: 学习了C语言之后是否还有必要继续学习C取决于个人的学习目标和职业发展规划。以下是一些建议供参考。 1. 拓宽编程能力:学习C语言可以提高编程基础和算法思维,但C语言的应用领域有限。学习其他编程语言,如Python、Java或C++,可以拓宽自己的编程技能,适应不同的开发需求。 2. 学习系统编程:C语言是一种底层编程语言,对系统编程非常有用。如果你对操作系统、嵌入式系统或网络编程感兴趣,继续学习C语言将有助于深入理解底层机制和进行性能优化。 3. 学习开源项目:许多开源项目使用C语言,如Linux内核、SQLite数据库和FFmpeg多媒体框架等。学习C语言可以为参与这些项目的开发提供基础,并且能够了解和实践开源软件开发的流程和理念。 4. 职业发展需求:如果你的职业规划涉及与C相关的领域,如嵌入式软件工程师、系统程序员或游戏开发者等,学习C语言仍然是必要的。 综上所述,学习C语言是为了拓宽编程能力,深入系统编程,参与开源项目及满足职业发展需求。然而,学习C语言是否必要还要根据个人兴趣和职业规划来决定。最重要的是持续学习和不断拓展自己的技能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值