为什么一定要学c plus plus

- vicyuvika LV.连长
- 2015/8/11 22:49:12
来源: 莫毅华的日志
1.关于要不要学习C++?(结论:要学,一定要学!)
如今在网上很多为要不要学C++争的不可开交,因为现在JAVA,C#,.NET都炒的很火,特别是JAVA,大有炸平庐山,停止地球转动之势。用林锐同 志的话说,其实JAVA只是C++外甥,跑到舅舅身上撒了一泡尿而已。首先,我们从JAVA 的来历上来说,JAVA的设计初衷是用来给家用电器设计程序使用的,最初设计者想用C++,但觉得C++太复杂,就在C++的基础上做了一些简化,设计出 了JAVA,它的设计思想是跨平台,所以必须先在运行平台上安装虚拟机,然后把源程序编译成中间语言在运行。这是一个优点,但我们说任意优点都是建立在缺 点上的,JAVA的缺点就是运行速度慢,这对于某些系统来说是致命弱点。况且,JAVA中没有指针,对于制作系统软件来说,这更是无法饶恕的。再来看 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++的争论,其实争论的人都是一些不知情的人,绝大多数是学校里的学生,我也曾经这样。在学校里的时候,不知道究竟应该学习什么, 要是遇到好的老师还可以,遇到垃圾老师,垃圾学校那就更糟糕。如今,什么 MCSE,CCNA,CIW等等认证漫天飞,把人搞的昏头昏脑,其实这都是认证公司炒的。社会上需要的是有真才实学的人,而不是需要证书。我从大二开始学 习编程,一开始学习VB,后来学习DELPHI,再后来学习C#,再后来学习C++,绕了个大圈子,最后还是绕回来了。而且重新学习数据结构,操作系统, 学习软件工程,学习大学本科的基本课程,重新读外国的程序设计名著,而这些以前在大学是不屑一顾的。劝如今还在学校的师弟师妹们,努力学习C++。
2。为什么要学习学习C++
1)C++ 的程序员身价普遍较高,当然,前提是你必须是高手。我所在的城市,那些公司根本就招不到合格的C++程序员,一方面C++程序员要求高,学习C++的人越 来越少了。当然,怀着这个目的,你或许永远无法成为C++高手,但我把这个原因放在最前面,可以给大家一个很明确的激励,当你接触C++后,发现从学习中 获得乐趣比高的工资更有动力;
2)C++的优势是用来开发大型软件,从中可以学到很多优秀的软件设计思想。C++不是软件开发的首选工具,一般说来,大多人更愿意学习和使用VB,为什 么,简单。简单的另一个方面是功能的局限。微软公司恨不的所有人都学VB,只有他一家会C++。容易上手,大家都喜欢学,喜欢用,很多人拿一本200页的 书,看个两三个星期,就觉得自己是个程序员了,可以开发软件了,而且觉得做出来的东西很不错。当软件规模大到一定程度的时候,其他语言就越来越无法驾驭, 这时C++的优势就体现出来了。你说做个成绩管理系统,人事查询系统,用VB,DELPHI,C#,JAVA都行,但是例如银行,电信,保险,操作系统, 数据仓库,图形处理,编译系统,较底层的软件时,其他工具几乎是无法完成的。就说C++的指针,JAVA没有,在遇到数据量交大的数据排序,搜索,动态内 存分配时,它就没有办法了。所以说,学习C++,不仅仅是学到的一种语言,还学习了优秀的软件设计思想。
3)学习C++可以学习到计算机底层的理论,即使不是用C++开发,对计算机运行机制的理解,对建制稳定的系统,对运用其他语言,也是一种促进。这一点,我是在学习过程中体会到的,所以,要说出个大家可以接受的理由来较难,大家以后学习就知道了。
3。怎样学习C++?
首先,我们必须承认,学习要讲究方法,有捷径。其次,我们还得承认,学习要下苦功,要务实。上小学的时候,书上有个故事,是关于王羲之学习书法的:王献之 问他父亲王羲之,学习书法的秘诀是什么,他父亲把他带到后院,指着18口大水缸说,你如果把这里的水都写完了,就知道书法的秘诀在那里了。这个故事相信很 多人都还记得。前几天看梁肇新(豪杰公司老板)的《高手箴言》,他说如果你如果愿意利用5年时间来成为高手,那么你只要两三年就会成为高手,如果你想一年 成为高手,那么你5年也成不了高手。学习要切忌浮躁,要脚踏实地。我曾经很浮躁,结果一直呆在菜鸟堆里,当半年前我静下心来学习C++,才感觉有真正的进 步。现在做WEB开发,虽然我从来不看WEB开发的书,但是我的同事遇到问题时,我经常能一下说出问题的所在。因为你看问题的角度变了。所以,学习C++ 的第一个方法是:切忌浮躁。其实学任何东西都一样,欲速则不达。从基本数据类型看起,从基本流程控制语句写起。其次,教材很重要,要看经典名著。
现介绍如何学习C++的相关建议。
昨天写了一篇如何学好C语言,就有人回复问我如何学好C++,所以,我把我个人的一些学习经验写在这里,希望对大家有用。首先,因为如何学好C语言中谈到了算法和系统,所以这里就只谈C++语言。
C++是最难的语言。这个世界上最难的编程语言可能非C++莫属了。你千万不要以为几天就可以学好C++,C++的学习曲线是相当BT的,你可以看看这篇文章。C++是一门很自由的语言,自由到了有点BT和恐怖的地步。我甚至认为C++并不是一门成熟的编程语言,因为太容易犯错了。所以,你一定要在一开始就要有很小心谨慎的态度,并把C++当成一种难以训服的猛兽来看待。
多问“为什么要这样”的问题。学习C++一定要多问几个“为什么是这样”,“凭什么要这样”的问题。比如:很多人知道C++有拷贝构造函数和初始化列表,但你真的知道为什么要有拷贝构造函数?为什么要有初始化列表吗?为什么要有template,为什么要有 RTTI,为什么不是别的呢?难道就是为了让一门语言变得Cool一些吗?完全不是这样的,C++中的任何一个feature都有些实实在在的原因,你一定要去了解为什么要把C++设计成这样的原因,你才能学好C++。有空看看《C++演化和设计》一书。
看书,大量的C++书。你可以按如下先后顺序阅读(下面这些书,我花了大约4-5年的时间,今天我还在随时温习)《C++ Primer》,这本初级读本可能让会你啃得很痛苦,所有的语言的特性和为什么都在里面了,好好读读。当然由C++之父写的《C++程序设计语言》也不错。两本看一本就好了(我看的是前者)。了解C++的语法仅仅是万里长征的第一步,你还需要看看《Effective C++》和《More Effective C++》这两本书并不厚,但我从02年就一直看到现在,每次读我都有新的体会,这两本书太经典了。如果你对C语言不熟,这两本书会让你回去补C语言的课。Think in C++同样是另一本经典之极的书,学c++必读,但是中文版的翻译的很不好,所以还是去读英文版的吧。《C++沉思录》同样非常值得一读,这里教的不是编程,而是思考的方法,这是相当珍贵的。《Exceptional C++》和《More Exceptional C++》让你看看各种问题的解决方法和一些常见的经典错误。《Advanced C++》和《Modern C++》可以让你知道C++各种神奇的用法。《泛型编程与STL》是把C++实践到了极致的东西。很强大。STL——神一样的模板库(容器,算法和函数对象),不得不服。
《深入探索C++对象模型》让你了解编译器下的C++是什么样的,让你了解C++的性能并不差。这个对于C++的程序员太关键了。我以前写过的《C++虚函数表解析》还有《C++对象内存布局》属于这个范畴。
和Java语言做对比。我个人以为Java对C++这个并不成熟的语言做了很多调整,规范和限制。所以,对比一下Java和C++,想一想,为什么一些东西在C++中可以做,但在Java中却不行。比如:Java的异常是必需要catch的,不然就会编译不通过。为什么Java不提供操作符重载?为会Java会引入接口来做多重继承?等等。Java体现着很多面向对象设计的东西,学习Java有助于你学会怎么更好地使用C++来编程。
面向对象设计 。虽然面向对象可能是个骗局。但是我觉得面向对象设计中的一些实践非常的不错,比如,单一原则,依赖倒置原则,等等,都非常地经典。《设计模式》必需一读,《面向对象的分析和设计》可以一读。但不可以设计模式为中心来编程,而应该是用设计模式来解藕。
类库学习。看看MFC是怎么封闭Windows API的,看看ACE是怎么面向对象的,看看boost是怎么玩面向对象的,看看CPPUnit又是怎么设计的。当然,Java的JDK中有太多的设计模式,可以参考
1.关于要不要学习C++?(结论:要学,一定要学!)
如今在网上很多为要不要学C++争的不可开交,因为现在JAVA,C#,.NET都炒的很火,特别是JAVA,大有炸平庐山,停止地球转动之势。用林锐同 志的话说,其实JAVA只是C++外甥,跑到舅舅身上撒了一泡尿而已。首先,我们从JAVA 的来历上来说,JAVA的设计初衷是用来给家用电器设计程序使用的,最初设计者想用C++,但觉得C++太复杂,就在C++的基础上做了一些简化,设计出 了JAVA,它的设计思想是跨平台,所以必须先在运行平台上安装虚拟机,然后把源程序编译成中间语言在运行。这是一个优点,但我们说任意优点都是建立在缺 点上的,JAVA的缺点就是运行速度慢,这对于某些系统来说是致命弱点。况且,JAVA中没有指针,对于制作系统软件来说,这更是无法饶恕的。再来看 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++的争论,其实争论的人都是一些不知情的人,绝大多数是学校里的学生,我也曾经这样。在学校里的时候,不知道究竟应该学习什么, 要是遇到好的老师还可以,遇到垃圾老师,垃圾学校那就更糟糕。如今,什么 MCSE,CCNA,CIW等等认证漫天飞,把人搞的昏头昏脑,其实这都是认证公司炒的。社会上需要的是有真才实学的人,而不是需要证书。我从大二开始学 习编程,一开始学习VB,后来学习DELPHI,再后来学习C#,再后来学习C++,绕了个大圈子,最后还是绕回来了。而且重新学习数据结构,操作系统, 学习软件工程,学习大学本科的基本课程,重新读外国的程序设计名著,而这些以前在大学是不屑一顾的。劝如今还在学校的师弟师妹们,努力学习C++。
2。为什么要学习学习C++
1)C++ 的程序员身价普遍较高,当然,前提是你必须是高手。我所在的城市,那些公司根本就招不到合格的C++程序员,一方面C++程序员要求高,学习C++的人越 来越少了。当然,怀着这个目的,你或许永远无法成为C++高手,但我把这个原因放在最前面,可以给大家一个很明确的激励,当你接触C++后,发现从学习中 获得乐趣比高的工资更有动力;
2)C++的优势是用来开发大型软件,从中可以学到很多优秀的软件设计思想。C++不是软件开发的首选工具,一般说来,大多人更愿意学习和使用VB,为什 么,简单。简单的另一个方面是功能的局限。微软公司恨不的所有人都学VB,只有他一家会C++。容易上手,大家都喜欢学,喜欢用,很多人拿一本200页的 书,看个两三个星期,就觉得自己是个程序员了,可以开发软件了,而且觉得做出来的东西很不错。当软件规模大到一定程度的时候,其他语言就越来越无法驾驭, 这时C++的优势就体现出来了。你说做个成绩管理系统,人事查询系统,用VB,DELPHI,C#,JAVA都行,但是例如银行,电信,保险,操作系统, 数据仓库,图形处理,编译系统,较底层的软件时,其他工具几乎是无法完成的。就说C++的指针,JAVA没有,在遇到数据量交大的数据排序,搜索,动态内 存分配时,它就没有办法了。所以说,学习C++,不仅仅是学到的一种语言,还学习了优秀的软件设计思想。
3)学习C++可以学习到计算机底层的理论,即使不是用C++开发,对计算机运行机制的理解,对建制稳定的系统,对运用其他语言,也是一种促进。这一点,我是在学习过程中体会到的,所以,要说出个大家可以接受的理由来较难,大家以后学习就知道了。
3。怎样学习C++?
首先,我们必须承认,学习要讲究方法,有捷径。其次,我们还得承认,学习要下苦功,要务实。上小学的时候,书上有个故事,是关于王羲之学习书法的:王献之 问他父亲王羲之,学习书法的秘诀是什么,他父亲把他带到后院,指着18口大水缸说,你如果把这里的水都写完了,就知道书法的秘诀在那里了。这个故事相信很 多人都还记得。前几天看梁肇新(豪杰公司老板)的《高手箴言》,他说如果你如果愿意利用5年时间来成为高手,那么你只要两三年就会成为高手,如果你想一年 成为高手,那么你5年也成不了高手。学习要切忌浮躁,要脚踏实地。我曾经很浮躁,结果一直呆在菜鸟堆里,当半年前我静下心来学习C++,才感觉有真正的进 步。现在做WEB开发,虽然我从来不看WEB开发的书,但是我的同事遇到问题时,我经常能一下说出问题的所在。因为你看问题的角度变了。所以,学习C++ 的第一个方法是:切忌浮躁。其实学任何东西都一样,欲速则不达。从基本数据类型看起,从基本流程控制语句写起。其次,教材很重要,要看经典名著。
现介绍如何学习C++的相关建议。
昨天写了一篇如何学好C语言,就有人回复问我如何学好C++,所以,我把我个人的一些学习经验写在这里,希望对大家有用。首先,因为如何学好C语言中谈到了算法和系统,所以这里就只谈C++语言。
C++是最难的语言。这个世界上最难的编程语言可能非C++莫属了。你千万不要以为几天就可以学好C++,C++的学习曲线是相当BT的,你可以看看这篇文章。C++是一门很自由的语言,自由到了有点BT和恐怖的地步。我甚至认为C++并不是一门成熟的编程语言,因为太容易犯错了。所以,你一定要在一开始就要有很小心谨慎的态度,并把C++当成一种难以训服的猛兽来看待。
多问“为什么要这样”的问题。学习C++一定要多问几个“为什么是这样”,“凭什么要这样”的问题。比如:很多人知道C++有拷贝构造函数和初始化列表,但你真的知道为什么要有拷贝构造函数?为什么要有初始化列表吗?为什么要有template,为什么要有 RTTI,为什么不是别的呢?难道就是为了让一门语言变得Cool一些吗?完全不是这样的,C++中的任何一个feature都有些实实在在的原因,你一定要去了解为什么要把C++设计成这样的原因,你才能学好C++。有空看看《C++演化和设计》一书。
看书,大量的C++书。你可以按如下先后顺序阅读(下面这些书,我花了大约4-5年的时间,今天我还在随时温习)《C++ Primer》,这本初级读本可能让会你啃得很痛苦,所有的语言的特性和为什么都在里面了,好好读读。当然由C++之父写的《C++程序设计语言》也不错。两本看一本就好了(我看的是前者)。了解C++的语法仅仅是万里长征的第一步,你还需要看看《Effective C++》和《More Effective C++》这两本书并不厚,但我从02年就一直看到现在,每次读我都有新的体会,这两本书太经典了。如果你对C语言不熟,这两本书会让你回去补C语言的课。Think in C++同样是另一本经典之极的书,学c++必读,但是中文版的翻译的很不好,所以还是去读英文版的吧。《C++沉思录》同样非常值得一读,这里教的不是编程,而是思考的方法,这是相当珍贵的。《Exceptional C++》和《More Exceptional C++》让你看看各种问题的解决方法和一些常见的经典错误。《Advanced C++》和《Modern C++》可以让你知道C++各种神奇的用法。《泛型编程与STL》是把C++实践到了极致的东西。很强大。STL——神一样的模板库(容器,算法和函数对象),不得不服。
《深入探索C++对象模型》让你了解编译器下的C++是什么样的,让你了解C++的性能并不差。这个对于C++的程序员太关键了。我以前写过的《C++虚函数表解析》还有《C++对象内存布局》属于这个范畴。
和Java语言做对比。我个人以为Java对C++这个并不成熟的语言做了很多调整,规范和限制。所以,对比一下Java和C++,想一想,为什么一些东西在C++中可以做,但在Java中却不行。比如:Java的异常是必需要catch的,不然就会编译不通过。为什么Java不提供操作符重载?为会Java会引入接口来做多重继承?等等。Java体现着很多面向对象设计的东西,学习Java有助于你学会怎么更好地使用C++来编程。
面向对象设计 。虽然面向对象可能是个骗局。但是我觉得面向对象设计中的一些实践非常的不错,比如,单一原则,依赖倒置原则,等等,都非常地经典。《设计模式》必需一读,《面向对象的分析和设计》可以一读。但不可以设计模式为中心来编程,而应该是用设计模式来解藕。
类库学习。看看MFC是怎么封闭Windows API的,看看ACE是怎么面向对象的,看看boost是怎么玩面向对象的,看看CPPUnit又是怎么设计的。当然,Java的JDK中有太多的设计模式,可以参考

- zhangle9
- 2015/8/11 23:49:34
补考过的!
没一点上进心,不想学

- 麦秆精
- 2015/8/12 19:41:05
选修选不到想要的的时候就有起过学C++的念头.
想来是想得过分简单了.
想来是想得过分简单了.