[转]学习C++的心得

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语言的,稍微浏览一下windowslinux以及FreeBSD的源代码就可以确认这一点。做系统开发,需要很高效率的地方,比如核心算法,用C++是没有好处的。倘若用C++写出的代码仅仅比C代码慢10%,那根本就是打着C++的旗号写C的代码。不用继承,不用虚函数,不用C++的标准io,不用异常,甚至不用类和对象,估计能达到你所谓的仅仅10%的效率损失,倘若如此,那用C++的意义何在?

 

C++主要不是做系统的,是做应用的,比如游戏,比如Office等等等等。MFCWindows程序,其实就是用C++封装了CAPI,按钮、文本框、工具栏、RichEdit等等这些Windows传统的控件,都是C语言编写的。用到C++的地方,都是高不成低不就的地方,换句话说,就是不那么靠近底层,又需要一些高级的思想(比如OO)的地方。很多应用不那么追求运行效率,但却追求开发效率。

 

Web开发、Web ServiceERP、嵌入式......在这些应用领域,C++完全不适合,我也就不多说了。

 

但是别误解我的意思,我没有说过C++不好或者不该学。我们都应该学习C++,但不是因为它有多么优秀,而是因为它能让你从底层看到OO的本质。重要的不是C++的语法,而是C++的思想、C++的对象模型,一旦理解了这些,再学习任何一种OO语言,比如JavaC#等,都易如反掌。

 

我认为的最佳学习顺序是:C语言(一定要精通)──C++语言和OO思想──C++对象模型──Java.net......至于模板范型之类,有时间和兴趣,钻研一下也挺好的。

 

最后,劝大家不要再用MFC了,开发Windows GUI程序,用.net,如果是写标准C++程序,用gcc最好。所以。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: PCL (Point Cloud Library) 是一个非常强大的点云处理库,它提供了丰富的功能来处理、分析和可视化点云数据。下面将从学习教程的角度来介绍PCL C++ 学习教程。 在学习PCL C++学习教程之前,我们先了解一下PCL的基础知识。PCL是一个开源项目,可以在Windows、Linux和Mac OS等操作系统上使用。它提供了常见的点云数据类型、滤波、分割、配准、特征提取和重建等功能。此外,PCL还有一个强大的可视化模块,可以方便地实时显示点云数据。 对于初学者而言,可以从PCL官方网站上的教程入手。官方网站提供了完整的文档和示例代码,可供学习者参考。此外,还有一些博客和视频教程可以帮助学习者更好地掌握PCL的使用。 学习PCL C++,需要一定的编程基础知识,例如掌握C++语言、面向对象编程和基本的算法理论等。在学习过程中,可以按照如下步骤进行: 1. 安装PCL库:根据自己的操作系统选择合适的安装方式,到PCL官方网站下载安装包并按照指南进行安装。 2. 学习PCL的基础知识:首先熟悉PCL的常见数据类型,例如点云表示和常见的PCL数据结构。然后学习如何读取和保存点云数据,以及基本的点云操作和可视化。 3. 学习PCL的模块功能:PCL库包含多个模块,例如滤波、分割、配准、特征提取和三维重建等。可以针对自己的需求选择相应的模块进行学习,并掌握它们的基本原理和使用方法。 4. 练习和实践:通过完成一些PCL的实际项目,例如点云配准、目标检测或三维重建等,来巩固所学的知识。 总之,学习PCL C++需要一定的时间和耐心,通过实践和不断学习,逐渐掌握PCL的使用技巧。希望以上简要的回答能对你理解PCL C++学习教程有所帮助。 ### 回答2: PCL(Point Cloud Library)是一个开源的计算机视觉库,主要用于处理和分析点云数据。它提供了许多功能强大的算法和工具,可以帮助开发人员在点云处理方面进行快速开发。 PCL C学习教程是PCL官方提供的一份入门教程,旨在帮助初学者快速上手PCL C的开发。该教程主要介绍了PCL的基本概念和使用方法,并提供了一些常见的点云处理算法的示例代码。通过学习PCL C学习教程,我们可以了解PCL的基本功能和使用技巧,并且可以开始进行简单的点云处理任务。 在学习PCL C的过程中,我们需要掌握一些基础知识,比如点云的表示和存储方式、点云的滤波和分割方法、点云的特征提取和匹配算法等等。PCL C学习教程提供了详细的解释和示例代码,以帮助我们理解和运用这些基础知识。 此外,PCL C学习教程还介绍了一些常见的点云处理应用场景,比如目标检测、点云配准和重建等。通过学习这些应用场景,我们可以了解到PCL C在不同领域的应用和相关的算法思想。 总结来说,PCL C学习教程是学习和使用PCL的入门指南,通过学习教程中的内容,我们可以掌握PCL C的基础知识和技能,并且开始进行简单的点云处理任务。 ### 回答3: PCL(Point Cloud Library)是一个用于点云数据处理的开源库。学习PCL可以帮助我们更好地理解和处理点云数据,从而在计算机视觉、机器人领域等方面开展相关工作。 学习PCL可以从以下几个方面入手。首先,了解PCL的基本概念和原理是非常重要的。PCL涵盖了点云数据获取、滤波、特征提取、配准等算法,了解这些基本概念是进行更高级别的数据处理的基础。 其次,学习PCL的使用方法。PCL提供了丰富的功能库和示例代码,通过实践使用可以更好地掌握PCL的各项功能。可以通过看官方文档、阅读教程、查阅论坛等方式学习PCL的使用方法。 再次,尝试应用PCL解决实际问题。通过完成一些小项目,如点云数据的滤波、分割、配准等任务,可以锻炼我们对PCL的熟练程度,并将PCL应用于实际工程中。 最后,与其他PCL爱好者交流学习。在互联网上可以找到很多与PCL相关的讨论组、社区和论坛,与其他使用PCL的人交流经验、分享学习心得,可以提高我们的学习效果。 总之,学习PCL需要理解基本概念和原理、掌握使用方法、应用于实践项目以及与他人交流学习。希望以上建议对学习PCL有所帮助。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值