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,絕大多數的人只是智商普通到不能再普通的人。但是,作為一個普通程序員也並不丟臉,只要你高質量交付特性,完成工作內容,你也配得上讚賞。

你用什麼工具不是值得你驕傲的資本。你解決了什麼問題,創造了什麼價值才是。


分享到:


相關文章: