为什么会C 更重要了
扫描二维码
随时随地手机看文章
前些年实际上C 语言一度很尴尬,开发复杂应用被java替代了很多,在底层驱动和操作系统内核领域又打不过C语言,所以不断走下坡路,甚至有人说C 要被淘汰了。
不过这两年情况有变化,C 又在不断上升回血,反而是java在下降了。为什么?
语言本身并没有绝对的好坏,而只有自身特点,不过是看谁更能迎合时代特征谁就上升而已。
前些年java不断上升的主要原因是,不管PC还是智能手机,硬件性能和配置都在不断升级,pc有intel不断挤牙膏搞升级,手机有arm不断爬山提性能,所以OEM和应用开发者根本不管编程语言的性能问题,反正躺着等下一代性能更强的硬件就行了嘛。
反倒是应用的稳定性,和快速开发的响应能力更重要,是生命线,所以java脱颖而出。java比c 最大的特点就是垃圾回收机制,这极大降低了程序员的负担,用java写程序轻松多了,还不容易segmentation fault,所以java越来越挤压了c 的空间。而且培养一个java程序员比培养一个c 程序员快很多,快速发展的行业非常缺人,那当然是用java了。
明白了这个,就能明白这两年为什么c 又回来了,又回暖开始逆袭了。
首先,这两年cpu和内存战争明显放缓了,大家看看是不是pc和phone的主体配置都不再拼命增长了?那硬件配置和性能不涨,应用厂商的竞争就变成了谁能做的更流畅更舒服谁就赢,这时候c 比java的性能优势就又有意义了。
其次,硬件性能遭遇了摩尔定律失效威胁。以前台积电等半导体制造业突飞猛进,不断提升工艺,所以硬件性能飞速发展。但是到了7nm后再往下越来越难,投资高很多倍,一款5nm 3nm芯片设计带流片动不动上十亿美元,不怂不行啊。大家都怕了硬件创新了,那就在软件上多挖掘一下潜力吧。所以c 又比Java香了。再加上新冠疫情导致的全球缺芯片,再给这种趋势加了码!
最后,复杂操作系统的中间件的宿舍也是java转向c ,这里有两个例子。一个是华为HarmonyOS相对于安卓,前者的framework就是c 实现的,比安卓的Java framework体积更小效率更高。另一个例子是智能汽车的中间件(参考autosar ap)也是c 来实现,这主要是为了代码的确定性和安全性,高效率。这些都是java的致命伤。
大家不妨去看看c 的代表性成功项目,opencv opengl ffmpeg qt等,就能略略品出其中的味道了。
所以,学好C后,继续去掌握C 吧,在当前这波趋势下,至少未来十几年C 都是升值区间,值得拥有!
最后,欢迎留言写出你的看法!