
C++
作为70后,我在90年代从业的时候,特别惊讶地发现竟然有人极其瞧不起
C++,甚至觉得它快要消亡了。在我那个时候,所有
计算机科学(CS)顶尖院校都必定开设C/
C++课程,操作系统课程也主要讲授Unix,大家对
Windows极为轻视,甚至没听说哪个学校有讲授
Windows的课程。名校里的顶尖人才都向往去Sun
公司,而不是
微软。后来的从业经历让我认识到,
C++这门语言,真不是随便什么人就能写好的。985院校
计算机专业的学生,一大半写C/
C++都写得很糟糕。单是指针这一项,就可能给项目甚至产品带来致命的影响。最后的结果是Sun
公司败给了
微软。C/
C++似乎也败给了
Java/.NET,甚至败给了
php、
JavaScript、
Python这类解释型语言。没错,自从我离开了嵌入式和操作系统这两个领域进入
移动互联网行业后,我一行
C++代码都没写过。不过,当我思考算法架构的时候,还是倾向于用C/
C++。年轻的时候学习其他语言,我直接拿语言定义表,通常一天就能掌握。在我看来,所有编程语言相对于C/
C++来说都是
大同小异。但是,就好比学好
C++到掌握
微软的Visual
C++至少还得半年时间,这半年主要是学习Visual
C++庞大的库,搞清楚用哪些函数以及如何使用。另外,后来的一些高级语言引入了许多软件工程概念,比如垃圾回收、异常处理、线程管理等,这些都纳入到了语言本身。说白了,就是宁可牺牲一些编程的自由度,也不能让那些水平不高的人犯错。毕竟写代码的人群已经从985院校毕业都不好找工作的情况,变成了
北大青鸟培训3个月就能上岗的状况。在我那个时代,有两类软件工程师薪资很高,但没多少人愿意干。一类是写汇编语言的,另一类是写用户界面(UI)的。写汇编语言既困难又枯燥,普适性还差;而写UI的就像是手册工程师。软件工程师的理想都是编写核心业务逻辑和算法,谁会喜欢做手册工程师这种事?
互联网/
移动互联网兴起之后,业务逻辑基本上
大同小异,本质上都是围绕UI以及与UI的交互。99.99%的人都像是手册工程师。
C++没落的原因如下:看了这些,大家也能推测出C/
C++擅长的领域:对计算(业务逻辑)性能要求极高的地方。(它能够在内存、寄存器、比特级别进行神奇的操作,内存利用率也很高。)所以,在游戏引擎、人工智能的某些领域还会用到
C++。至于嵌入式领域,由于成本(CPU、内存等)方面的考虑,目前应该仍然是C/
C++的天下。(当然,不排除未来内存价格变得极低时会有变化。)