C++是计算机编程语言中最难学的吗?为什么?

spss数据分析


从事嵌入式开发多年,有三种语言玩的比较多C/C++ java,从编程语言的难度来讲C++是最难得,而且也是最难入门的编程语言,很多编程老手都是这个结论,为什么C++是最难学的编程语言,虽然难学但还是很多编程老手喜欢研究它,更是很多架构师的最爱。

现在以个人的观点讲述为什么C++是最难的编程语言,其实在C++基础语法部门看不出这门编程语言有多难,难在泛型编程和面向对象的特性展示,几乎每个知识点都附带着很多细节点,而且更加要命的是C++语法规则还在不停的延伸,几乎长期玩C++都有一种通病总是觉得这门语言学不完,就连C++的创始人都说自己有时候都看不懂这门编程语言了,linux的创始人对于这门编程语言成见也非常大,有点故弄玄虚的感觉。

如果单纯从学校的理论角度去学习这门编程语言其实看不出有多难,因为基础语法的学习掺杂的东西就比较少,很多在学校学过这种语言的大学生觉得自己的基础应该还可以结果真正开始做项目的时候傻眼了,原来还有这么多自己不懂的语法知识,只靠那点皮毛根本解决不了问题,所以要想学好这门编程语言首先要做好充分的心理准备,起码几个月的时间在迷糊期度过。至于具备什么条件才能学好C++,这种没有定论很多大学生在学校自学了C++,还没毕业就通过网络途径找到工作了,所以编程语言的学习从来都不是固定的。

在网络上认识一个大学生,本身对编程很感兴趣,特别是对C++感兴趣,完全靠着一腔热血把这门语言给学好了,并且不断拓展知识面,有关C++的书籍研究了不下五本,并且借着这种势头还不断通过看书拓展自己编程基本功,还没毕业去找工作就成了抢手货,所以不要给自己设置界限,不一定非要参加培训通过自身的努力也一定可以。由于经常在网上写点东西,遇到一些大学生经常写技术文章,开始的时候不会写,后来坚持的时间长了越写越有感觉,再加上网络信息非常发达,有一些猎头或者技术高手在网络上发现有可塑的人才也会主动联系,所以很多大学生还没出校门就把自己的工作给搞定了,不要轻易否定自己。

学好了C++能够做点什么?

游戏开发,大数据和服务器方面开发,网络开发,嵌入式开发等,现在很多主流的客户端都是用C++完成的,安卓内核框架和谷歌浏览器绝大部分代码都是C++完成,不用担心这门编程语言不行了之类的鬼话,由于这门语言相对比较难入门起来相对费劲。

难也只是相对的,只要觉得感兴趣就去全力去学,学的时候不要考虑是不是能找到合适的工作,编程要能学好必须能下功夫,软件开发讲究的水到渠成,功夫到位了自然就能做项目了。

希望能帮到你。


大学生编程指南


本人主要从事C++相关开发,部分项目java spring全家桶。

单从编程语言来说,C++的学习难度大于java, 主要是泛型编程,指针这些。仔细点学,多花点时间还是可以搞懂的。

但是在公司,我们是要做项目的,C++, java这些只是编码的方式,关键是各个语言背后的框架。java的框架不要太多,各种配置,中间件,接口,插件,这些比C++多的太多了,光spring家族,就可以花点时间搞了,还有数据优化,存储等等工作。C++可以做高性能服务开发,三维图形,游戏引擎,客户端等等。

谈编程语言难不难,没有任何意义,要看它背后的框架组织,以及应用领域。任何一个领域,做到金字塔顶,都超越了语言的层次了。


我是假码农


曾经在某个场合C++ 之父 Bjarne Stroustrup表示自己有些看不懂C++了!

从这个趣事就可以看出C++是非常难学的编程语言,在主流的高级生产级编程语言中可以说是最难学的编程语言了,从入门到精通最难的编程语言,从入门到放弃最简单的编程语言,可以说是名符其实。

C++语言是C的超集,1982年,美国尔实验室(AT&T公司)Bjarne Stroustrup博士在C语言的基础上引入并扩充了面向对象的概念,从此C++编程语言诞生,面向对象的到来、STL标准库的诞生,以及微软等大公司的支持,让C++逐渐流行起来。但是C++从一开始就是一门复杂的编程语言。

C++是一门通用的、支持多范式(multi-paradigm)的编程语言,这就是C++为什么难学的根本原因了。

从通用性上来讲,C++不局限于一个领域或者少数领域,而且没有明显的倾向性,比如PHP最擅长的就是web开发,Java最擅长的就是复杂业务逻辑处理,C#做桌面开发非常方便,而C语言最擅长的就是系统级别的开发,而Python则是最主要的人工智能研究语言。但是C++不一样,没有明确的倾向性,并且功能还非常强大。

C++可以完成系统级的开发,垂直领域的特定应用开发,甚至在教学科研以及嵌入式等等领域都能够很好的完成,这就是最大的问题,那么注定每一个方面都要做得很好。

从多范式来讲,C++不是彻底的面向对象编程语言,也不是纯面向过程的编程语言,也不是标准的泛型编程语言,这玩意儿是多范式的。也就是反过来说,她即是面向过程编程语言,也是面向对象编程语言,还对泛型程序也有很好的支持。知道什么问题了吗?对的,就是她什么功能都很全!

所以其实C++之难学,难于上青天的关键在于C++太强大了,功能太多了。这样一个通用型、多范式的编程语言,当然是非常难学。但是在很多领域,比如系统级开发,大型游戏开发等领域C++还有着巨大的优势,因为C++毕竟是仅次于C语言的运行效率的编程语言,何况它还支持面向对象。


EmacserVimer


C++是c语言的扩展,所以用了两个+号。

编程语言中最难学的是汇编,基本上就是半个机器语言,这之外就数C语言难学,跟其一脉相承的C++自然也继承了其难度。

不过,一旦你学进去了,就会发现它也没想象中的那么难,本人作为一个文科生当年赶时髦自学了一下,后来因为工作变动没有坚持下去,感觉正常人完全是可以学会的。

编程学习,难的不是编程语言本身,程序语言这东西,本身就是为了掩盖机器语言的复杂性而诞生的。经过一段时间的学习和熟悉,对程序语言的规则就会基本掌握。而对真正的编程工作而言,数据结构和算法才是要迈过去的两道大坎。

所以自学要学会c++是有可能的,但对编程来说还远远不够,你必须对软硬件都有所了解,熟悉常用的数据结构和算法。对真正的程序员来说,在不同的编程语言之间转换,比在不同的外语之间转换难度要小得多。


职场简史


题主的问题描述中四个“?” 我能回答两个半。由于本人是非专业人士,所以一下回答仅供参考。

C++是否是最难学的编程语言?

这个问题我不确定。

在我看来既然C/C++能够“长盛不衰”这么多年,足以说明它们的价值。单凭这一点就足够说明问题的了。

不过虽然我不是很专业,但是我也知道不用的领域会更多的应用不同的语言,尤其是题主还是自学,那么除非你的目的性很明确——比如从事某个岗位的职业,否则还是应该从比较容易上手的、应用比较普遍的语言入手比较好。所谓先上路,路上在慢慢想!比如你完全可以先选择比较容易上手的Python。


自学能学会吗?

能!

这个问题我能回答的原因是因为我家孩子9岁的时候开始学习的C/C++,我们学的比较慢一周也就是两次课(前大半年一周一次),纵然是如此,目前为止孩子基本上也已经把语法部分(即编程语言的本身)都学完了。只要不是算法太复杂的问题,孩子大都是可以做出来的。目前孩子正在开始学习各种算法。

我之所以说“能”是基于这近一年来孩子的表现以及二十年前我学C语言时候的一些经验总结出来的。

但是,我必须要说名两个问题:

1、能否学的好,完全取决于你的努力程度而不是“理论上的可能性”。

很简单的道理,当你看书学或者看视频学(网上资源跳多了)的时候,你仅仅是照着课程内容敲打一边代码就行了还是会做笔记、会找相关题目练习这两种学习的方式直接决定你后面的学习效果。就我孩子的学习情况来看,孩子的掌握程度基本上取决于投入练习的时间长短(当然,还有动脑程度)。

2、语言仅仅是一个工具。

编程语言仅仅是一个工具而已,当你工作时候更多的是要用这个工具去解决具体的问题。举个最最容易理解的例子:学习数学、物理的时候各种公式的本身并不难理解,但是当你应用的时候就会发现“我去!这题怎么做?”。同样的道理,语言你可以短时间内(两三个月足以达到入门级)学个七七八八,但是当你真的想用这个东西来解决问题的时候,往往会发现无从下手,甚至连点思路都木有!

因为我和孩子学习C/C++是因为我们想试试参加一下NOIP,所以我们的经验有限,但是这些道理也是很多老师、朋友跟我分享过的,我觉得是有道理的。比如我家孩子每节课听的都自认为没问题,但是一旦开始做题了,尤其是稍微复杂一些的问题时候,基本上就跪了!

老师、朋友们跟我说解决这个问题没有什么捷径可以走,就是多练、多读(读程序)、多想、多交流!


是不是只有读本科的人才能学?

这个问题我想我已经不需要回答了吧。我孩子今年10周岁。所以你一定没问题的!我不信你还赶不上一个小学生!


可以从事哪些工作?

这个问题不难回答,但是我说不全,所以只能借助网络尽可能的把它主要能做的事情给你罗列一些:

C/C++主要用于操作系统软件底层开发比如开发操作系统,各种协议软件,硬件驱动,嵌入式,服务器,或者算法研究,游戏开发,还有各种图形处理,总之那里的性能需求和运行速度比较高的,那就用C/C++。可能这么说觉得太笼统了,我再直白点比如手机,飞机、动车、机器人、大数据、人工智能、仿真等等都能用的上!


临渊慕鱼,不如退而结网!

无论你的规划、计划是如何,你都要先“出发”,只有在前进的路上你才会发现各种各样的问题,也才能更有针对性的解决。认真学、多练、多交流你一定行的。

最后给你讲一个我觉得还不错的案例:我的一位超级远房的亲戚孩子,高中毕业啥也没考上,最后去了我们这里的一个还算老牌的计算机培训机构,学了2年多的编程,后来推荐工作之后认真努力的学、做,几年下来这孩子现在一年收入也是很不错的。

当然,这种事儿不具有“普遍性”,是否“成才”很大程度上还是要取决于个人的努力情况。如果你有这个毅力,那么就去做吧!

加油!


随便看看微笑不语


这样讲吧,学了c++,其他都是小菜,什么pathon,太简单了,还没看过,但有把握很快掌握,不用学,直接看demo,就可以理解语法规律,然后用到哪里学哪里,不明白的再百度。。只是举个例子,c++都学过了,其他根本不怕。。。。


地球体表精修技师陈


关于C++我推荐你读一本书《C++从入门到放弃》。某软件工程学生学了四年毕业,他告诉我:“学了四年,只记住hello world了”。

开个玩笑,C++是公认的,编程语言里最难的一种,毫不夸张的讲,这玩意儿跟考注册会计师、一级建造师、司法考试有的一拼(当然,毅力是关键)至于C++到底难不难,我这里引用一下轮子哥说过的一句话:

明明难的是scala。你要连程序设计语言的原理一起弄懂,才能搞定scala的所有语法。C++显然不需要,C++只要求你背诵(不过其实C++有一点也做得不好,符号实在太乱了,你不能全部装进脑子里,就会有一种“好难啊”的错觉。这只能说反人类,不能说难。你只要不断地训练自己的记忆力,等到有所成就之后,就不会觉得C++难了。

自学能学会吗?

从理论上说,当然可以学会,但这关乎到学习成本的问题。如果你之前已经学过了其他编程语言,学C++会相比其他人快一些,如果你只是初中毕业,数学很差、英语不懂,那学C++一定是非常费劲,但不代表不行。你要面对的困难,将多很多,除了学习问题,将来就业、发展也可能会受到限制,但这完全取决于你的毅力和学习能力。

至于是不是只有本科的人才能学会,这个问题肯定是否定的,但跟我前面讲的一样,还是难度问题,本科学编程的多、专科的也挺多,中职高中出来的也有,初中的少了,小学的更稀有。为什么会出现这种现象?学历月低,面临的困难越多,对人的意志和学习能力的考验越大。话又说回来,物极必反,一旦你成功了,学历反而成为了你的优势,想想,当一个初中、高中的人学会了编程,只要你能力达标,你的学习能力和毅力已经得到了最好的证明。就好像很多人很乐意去说马云只是杭师大毕业的屌丝,跟其他互联网巨头没办法比一样。

学会C++可以从事哪方面的工作?

很多,比较主流的有游戏开发、ios软件开发等等。

下面是w3cshool的一些建议:

首先,C++并不是非科班出身的最好选择,它太不容易上手了,而且现在是市场经济,难不代表需求大,很多简单易学的语言,待遇也并不低,比如近几年比较热门的PHP、Python、java等等。特别是Python,这个编程语言更接近自然语言,学起来相对容易,需求也大。。当然,你要坚持学C++也不是什么问题,C++会了,学其他语言简直不要太简单。


编程狮APP


很多人都在问、什么语言好学什么语言容易学?看到这些问题我会感觉很奇怪?我觉得问的人问的有问题!学一门编程语言其实很简单,无非就是几个语法,if...else...;while;for等等语句语法,怎么定义函数、怎么调用函数,其实编程就像我们以前读书的时候写作文一样,什么时候用假设句,什么时候用排比句,什么时候用类比句,学编程不难的!难的是怎么写好一篇作文,怎么让这篇作文使别人读起来更有吸引力!

本人自2000年一直使用C/C++,也用纯汇编写过游戏外挂,用LabView写过工控程序,用VB6在扩展和维护一个90年代编写的系统,用C#做过一个汽车玻璃升降器耐久性测试系统(网络版),学什么语言其实决定来自你要实现什么东西,做什么产品。

下列图中就是我涉猎的东西,不是精通,只是会一点



强子57979


编程的难与不难实际上要从两个角度来看,一个是找到问题的解决方案,一个是用语言把解决方案描述出来。

从第一点出发,可以把编程语言变成两大类,一类从如何操作机器出发,为面向过程编程,比如切菜,要描述清楚菜刀抬起落下,菜平移的每一步,代表语言是汇编语言、C语言;

一类从人描述世界出发,为面向对象编程,还以切菜为例,你只需要知道菜刀这个对象有一种行为是下切,改变菜的位置以后告诉刀切一次,刀具体怎样实现下切交给设计刀的人去解决。而且根据刀的特征,可以很轻松的举一反三设计出剁肉刀、切面刀、水果刀等等对象。代表语言是C++等语言。

从这一点来讲,面向对象语言要更好理解一点,毕竟会开车的人很多,但知道变速箱离合器怎么工作的不多。

但是C++是面向对象语言当中最贴近面向过程的语言,它本身就要求兼容C语言。这就使得C++比起python这些语言讲究的细节更多。

从第二点出发,人描述问题及解决方案是用自然语言,机器解决问题却只知道通断、高低电平。人的语言和机器的语言差距比鸡同鸭讲更悬殊。编程语言实际上是借助中间层实现人对机器的操作,中间层和人约定好了使用怎样的格式、词句进行解决方案的描述。一种编程语言越贴近自然语言就越容易理解,等到AI技术足够发达,机器能够理解你的想法,那你说的每一句话都可以作为编程语言,而如果语言越贴近机器,机器的执行效率也越高,毕竟省去了翻译过程,避免了冗余的语句,还可以优化出更高效的执行方式。从这点来看,贴近自然语言的python远比C++容易理解,但C++却更高效。

当然如果追求极致执行高效,汇编语言最高效,但这样花在编程上的精力却更多,对于中大型项目来说,不仅难以配合,而且编程效率低下,注意力大部分放在具体执行而非问题解决上是很不值得的。但汇编语言及C语言对于复用次数多,执行资源有限的小项目却更有优势。

人生苦短,还是用python吧。


难忘易水寒


对于编程初学者,理解程序语言的语法规则是比较难的。因为该语法更理性,有严格的使用标准,并且需要配合逻辑判断。如果是有一定编程基础的学习者,面向对象的思想是比较难以理解的。例如如何选择封装的力度,接口的程度,良好的类间关系,熟练的使用多态等等。再加上软件开发模式,基本原则等等。面向对象是非常考验设计能力的知识。


分享到:


相關文章: