为什么很多人觉得C++是最难的编程语言?
从事嵌入式开发多年,有三种语言玩的比较多C/C++ java,从编程语言的难度来讲C++是最难得,而且也是最难入门的编程语言,很多编程老手都是这个结论,为什么C++是最难学的编程语言,虽然难学但还是很多编程老手喜欢研究它,更是很多架构师的最爱。
现在以个人的观点讲述为什么C++是最难的编程语言,其实在C++基础语法部门看不出这门编程语言有多难,难在泛型编程和面向对象的特性展示,几乎每个知识点都附带着很多细节点,而且更加要命的是C++语法规则还在不停的延伸,几乎长期玩C++都有一种通病总是觉得这门语言学不完,就连C++的创始人都说自己有时候都看不懂这门编程语言了,linux的创始人对于这门编程语言成见也非常大,有点故弄玄虚的感觉。
如果单纯从学校的理论角度去学习这门编程语言其实看不出有多难,因为基础语法的学习掺杂的东西就比较少,很多在学校学过这种语言的大学生觉得自己的基础应该还可以结果真正开始做项目的时候傻眼了,原来还有这么多自己不懂的语法知识,只靠那点皮毛根本解决不了问题,所以要想学好这门编程语言首先要做好充分的心理准备,起码几个月的时间在迷糊期度过。至于具备什么条件才能学好C++,这种没有定论很多大学生在学校自学了C++,还没毕业就通过网络途径找到工作了,所以编程语言的学习从来都不是固定的。
在网络上认识一个大学生,本身对编程很感兴趣,特别是对C++感兴趣,完全靠着一腔热血把这门语言给学好了,并且不断拓展知识面,有关C++的书籍研究了不下五本,并且借着这种势头还不断通过看书拓展自己编程基本功,还没毕业去找工作就成了抢手货,所以不要给自己设置界限,不一定非要参加培训通过自身的努力也一定可以。由于经常在网上写点东西,遇到一些大学生经常写技术文章,开始的时候不会写,后来坚持的时间长了越写越有感觉,再加上网络信息非常发达,有一些猎头或者技术高手在网络上发现有可塑的人才也会主动联系,所以很多大学生还没出校门就把自己的工作给搞定了,不要轻易否定自己。
学好了C++能够做点什么?
游戏开发,大数据和服务器方面开发,网络开发,嵌入式开发等,现在很多主流的客户端都是用C++完成的,安卓内核框架和谷歌浏览器绝大部分代码都是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语言的运行效率的编程语言,何况它还支持面向对象。
C++确实是比较难学的,它难在你即使很懂她,但是还是会莫名其妙的生气,C++的学习需要花费大量的时间,这或许也是她被称为“难”的原因,但是如果你将C++用熟练了,那感觉真的不要太好。
1.C++是C语言的升级版
C++最初的设计愿望是通过规则克服C语言语法规则不清晰造成的问题,这就意味着初学者很难入门,编译太过于麻烦,规则的限制非常的多,这就更意味着语法的细节要求更多,零散需要掌握的东西非常繁杂,甚至部分程序员工作好多年,仍然对C++感到陌生。
2.C++语言进化太快
C++语言的更新速度是非常惊人的,到现在为止还在进化,这就会导致一种情况的出现,等你辛辛苦苦学了很久的语法规则,在这个更新种突然被删除了,这真的会发疯的。
C++可以操作指针
指针本身的复杂程度是非常高的,再加上泛型编程,这就更加麻烦,在追求性能极致的同时还想让编程模式灵活,这就让压力过于大,以至于不少程序员转行做C语言会觉得特别轻松。从很多方面来说,C++的学习不是告诉你怎么用,而是告诉你怎么不能用。这就很尴尬, 学了一堆语法不能使用,可能是一种精神的折磨了吧~
优势
虽然难度相对较大,但是不容置疑的是C++是大多数构架大咖的最爱,包括如今也可以在C++论坛里看到很多大咖在指点江山,解决小白忙活了好几天也解决不了的问题,根本原因就在于对编程语言的掌握,当掌握这些规则后,使用起来就会特别的舒畅,仿佛将之前的阴霾一扫而空。
如今大多数软件框架都可以看到C++的影子,原因在于进行面向对象的框架设计时不影响效率只有C++可以出色的完成,例如现在安卓手机框架层很多代码都是C++,还有如今的浏览器内核代码几乎都是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++会了,学其他语言简直不要太简单。