03.16 C++做开发就比用java技术强,收入高

话说程序员圈里喜闻乐见的流行着这样的一些鄙视链,C 语言工程师鄙视 C++ 工程师,C++ 工程师鄙视 Java 和 C# 工程师,Java 工程师和 C# 工程师则互相鄙视……

其实原文的话其实也就是个玩笑,用来调侃一些书呆或者死板的软件开发人员。其实真正懂开发,喜欢技术的人不会存在这样的傲慢与偏见。

那么为什么会有这样的傲慢与偏见呢?让我来慢慢分析这些半吊子程序员的想法:

  1. C/C++更接近底层机器,执行效率更高,用C/C++更了解技术原理。老子用C/C++的更了解原理,成为技术大拿还不是分分钟的事。

  2. C/C++可以操作内存,进行内存管理。你们这些(java)都是别人帮你内存管理的,你们懂个球技术。

  3. 其他语言喜欢整天扯一些花哨又不实用的语法特性,有什么用?你们这些语言都用C来实现的。老子学C的,学java还不是分分钟秒杀你们?

哈哈。我先来下个结论再说说我的观点吧。其实这些人基本上就是半桶水和井底蛙,我来逐条解释一下。

  1. 某某某接近底层机器是根本就没有的说法,任何语言最后都是二进制机器码;执行效率高,也仅限与一些规模较小的程序或者某些特定的领域(游戏和科学计算),这是因为这些程序的过程业务上足够简单(即使设计上足够复杂,像操作系统这种,但是在局部,这些程序是没那么复杂的)你要说什么操作系统比阿里巴巴的系统复杂,是没有可比性的,操作系统是难,但是却不比淘宝这样的系统复杂。在这种情况下,你用C/C++去实现一个巨型的淘宝天猫这种网站,那就等死吧,不仅实现很难,而且性能还没人家好(虽然阿里也有很多中间件是用C/C++)。

  2. “更加了解原理”是更没有的说法。在大型分布式系统下,并不需要对单机性能的绝对压榨。你的“原理”根本对付不了千百台服务器一起协作的场景。

  3. C/C++确实可以直接操作内存不错。但是你说你更懂内存管理,内存垃圾回收?oh,no你不会以为“new Object();delete obj;”这样就叫内存管理吧!!??很残酷的告诉你们。很多程序员都认为内存堆就像一杯水,用多少就倒多少,用完了还可以倒回去。但事实上,那不是一杯水,更像是一块蛋糕,用多少切多少,但用完了其实很难拼回去的。你们这样零零碎碎地new和delete会使内存更加零碎。很多项目(包括优秀的开源项目)内存碎片率基本上在 50% 左右,即每从系统申请1m 内存,最终实际使用的只有 500k 。基本上是用多少浪费多少。精心设计内存管理模块也只能减少到 40% 左右,很难有本质提高,这跟语言本身没有太大关系,跟实际的场景和目标的取舍博弈有关系。

  4. C/C++转java分分钟碾压。哥们,你该碾压的,努力一点任何人你都可以碾压。你碾压不了的,你原本学什么都没有用。本山哥那句话可以套用一下,“你以为换了个马甲我就不认识你了?”尤其是现在动不动就是 云计算Iaas,paas,saas,往往都是大型分布式系统,你原来装的满满的一桶水未必装的满十几缸水咯。

是不是技术大牛,跟你用什么没关系。其实上面那3点,套用在大牛身上其实是成立的。but,绝大多数的人只是智商普通到不能再普通的人。但是,作为一个普通程序员也并不丢脸,只要你高质量交付特性,完成工作内容,你也配得上赞赏。

你用什么工具不是值得你骄傲的资本。你解决了什么问题,创造了什么价值才是。


分享到:


相關文章: