为什么我时不时会看到“珍惜生命,远离C”?
https://m.toutiao.com/is/d4UYhy5/?=为什么我时不时会看到
作为一个工作多年,并且长期使用C++作为主要开发语言的软件工程师,来聊一聊我对这个问题的看法。
首先说明下我认同这样的观点,特别是对非职业程序员,为什么这么说呢?生命苦短啊!
C++在诞生之初相比于同时代的编程语言,因为能很好的支持面向对象编程,所以受到了很多工程师的追捧,然而随着技术的不断进步,很多更先进的面向对象编程语言随之诞生,比如典型的Java、C#、Python等语言,为了增加对新技术的支持,C++也在不断的添加新特性,标准也从C++03,一路进化到C++11、C++14、C++17,今年更是推出了C++20。这些新标准的推出,表面上看丰富了语言的功能,但是却有一个巨大的副作用,那就是增加了语言的复杂性,使得学习C++语言变的更加困难。还有模板、多重继承、智能指针等技术,学起来不容易,用的地方却有限,就好比一块鸡肋,让学习者很困惑。
此外,C++作为一门面向对象语言,却没有一个很好的UI库,包括以前的MFC,以及近几年比较流行的QT,虽然可以进行UI开发,但是从技术上相比C#和Java来说,还是相对落后一些,开发效率也较低。
通过上面的说明,似乎C++一无是处,但是……呵呵,但是后面往往跟着更有趣的内容。
C++虽然有诸多不足,但是它却有一个最大的优势,那就是速度,相比C#、Java、Python等语言来说,实现同样功能的代码,C++的运行速度要高出很多。所以,在一些对性能要求更高的需求,开发语言往往会选择C++,比如操作系统,底层的通用库,服务器开发,多媒体开发等,更极端的情况会使用C语言。
综上,对于一般的编程爱好者来说,如果不准备以编程为职业,只是兴趣爱好,那么正如他们所说的“珍惜生命,远离C++”。如果准备以编程为职业,而且是那种对性能有着极度追求人来说,C++依然是一门不错的语言,只是需要付出比学习其它语言更多的努力,当然也有好处,一旦掌握了C++,相当于也学会了C语言,此外,以后学习C#、Java、Python等语言将会变得很容易!