看过编程语言排行榜的都知道,C/C++ 自02年以来,无论时代如何发展,其排名一直在前五之内,足见其在编程语言界的地位。编程
编程界流行这么一句话:c#
C几乎什么都能作,C++几乎什么都能作好,足见其功能的强大。windows
你们都知道C++彻底兼容C,C++是C语言的加强版,若是没有学习过C语言或者先学习的其余语言,好比c#,再学习C++就会以为好难呀,那么C++相比其余语言到底难在哪里呢?网络
C++ 是上世纪80年代的发明,算是比较古老的了,在长期的发展中,存在大量的历史问题,在解决某个问题时,面临的选择太多,为了兼容之前的代码和之前的规范,不得不使整个系统复杂庞大。编程语言
咱们知道不少语言背后都有一个团队在运营,好比微软的C#、甲骨文的Java、谷歌的Go,再看C++,它不隶属于任何一个团队,它没有惟一的编译器开发商,微软的msvc、Linux的g++,还有clang等等;函数
这么多厂商,谁也不占主导地位,谁也不听谁的,最后只能成立一个C++标准协会,你们协商着来,相互妥协,这种相互妥协,致使C++变得异常复杂,既兼容这个又兼容那个,迄今为止没有一个公认的严格的C++规范,C++是很是自由的,而自由也意味着难度大性能
当咱们一提到C/C++,大概首先可以想到的就是指针,指针是C/C++的精髓,一样也是难度的根源之一;学习
像Java、Python等不少编程语言是没有指针的,由于他们的虚拟机或者解释器自带垃圾回收机制,编程者彻底不用操心内存回收的问题;spa
而C/C++在使用完申请的内存空间以后,又要回收,最多见的问题就是忘了回收或者其余变量正在引用就提早回收了;scala
而带垃圾回收的语言,编程者根本不须要操心这些事,彻底不须要知道内存是如何分配的,该谁来回收以及如何回收;
自动垃圾回收有利有弊,利是对开发者简单,弊是运行效率相对低下,C/C++ 是注重运行效率而牺牲了简单性。
上面说了这么多,强调的都是背后缘由,那具体说来,到底C++难在哪里呢?
相比Java、C#、Python、PHP、JavaScript、Go、C、R、scala、F#...
在纯语法上,和C++的难度彻底不在一个量级,而说C++简单的,大概都是刚毕业没几年,只玩过C++而不知道其余语言的,好比复杂的const和static语义,指针运算,取地址运算、模板、多态、构造函数、继承等等。
相对来讲,C++主张从轮子造起,第三方库不是太多,不少看似简单的功能都得本身实现或者拼命的找库;
通常来讲,C++使用的时间长了,就会掌握的更好,由于能够不断积累库函数。
没有哪种语言是绝对好绝对很差的,都各自都各自的优点和劣势;
C++是一种很是灵活的语言,具备撰写高性能代码的能力,几乎覆盖了咱们可以想到的全部的领域,包括航空航天、半导体和设备驱动等等;
而C++除了性能优点,也很是的稳定,20年前的代码如今依然可使用。
最后,无论你是转行也好,初学也罢,进阶也可,若是你想学编程~
——【值得关注】个人 C/C++编程学习交流俱乐部!——
涉及:C语言、C++、windows编程、网络编程、QT界面开发、Linux编程、游戏编程、黑客等等......