為什麼Java程序員在C++程序員面前有一種挫敗感?

heruilive


反了,完全反了。曾經我的導師調侃,“當人家前端程序員在各種討論框架和設計模式的時候,我們c++程序員還在糾結線程同步的問題。”

有一個事實必須要承認,c++的業務開發效率,真的不是一般的低。在開發的時候你需要注意各種雞零狗碎的東西。

比如你得小心指針的使用,一不小心就會遇到空指針和野指針的問題,而且一旦出了這樣的問題導致了崩潰,真的很難查。厲害高級程序員,在一個c++大型項目中遇到野指針難題,十個裡面能找出八個就已經是高手了。

還有就是臭名昭著的內存管理問題,全都得自己控制申請和釋放,真的好難。

而Java就少了指針同時也增加了內存回收機制,對於開發業務的程序員來講,簡直就是福音。真的,一個c++十天能搞定的項目,人家Java最多五天就搞定了。

生產力是第一要素呀,c++怎麼敢在人家Java面前抬高頭顱裝高貴呢。

我是編程歷史主義者,c++的存在的價值很大一部分是為了兼容c語言,因此也為此付出了生產力不高的代價。

最後,不要比來比去了,如果真的要比的話,還是得針對不同的應用場景去分析,要不然就找不到比較的那把尺子!

我是coder李,歡迎大家關注我


李coder


作為一個寫了十幾年代碼的老司機,對於這兩種語言都有過涉獵,本人倒是沒覺得兩種語言之間有多少感覺,兩種編程語言的主題思想都是面向對象的編程,只不過應用場景還是略有差異,先是在c++下面做項目,後來轉化到java項目中,作為兩種編程語言都使用的人,現在簡單介紹下。

c++主要用在客戶端系統級開發上面,算是編程語言中比較難的,不建議初學者直接選擇c++就編程思想而言顯得沒有那麼複雜,但是就具體的語法細節還是相當的繁瑣,這也是很多編程高手對於c++不爽的地方,但是真要挑選一種編程語言,既能貼近底層又能有面向對象的編程思想恐怕只能是c++,所以很多客戶端的框架代碼都是基於c++完成,像安卓框架層,瀏覽器內核等都是c++作為主力開發語言,雖然這是一門很難的編程語言,但是很多架構師的最愛。

java語言相比c++在語法細節上已經簡化太多了,java主要氛圍兩個方向,一個是客戶端一個是服務端方向,客戶端主要指的是app的開發,兩者共同的點需要把java基礎弄紮實。從c++轉戰到java開發有一種比較輕鬆的感覺,終於擺脫了語法繁多的細節問題,相對來講java入門比較容易,但要成為高手還是相當困難。

單純的比較兩種意義不是很大,每種編程語言都有其存在的必要性,真要不堪一擊早就被市場淘汰了,每一種編程語言都有其自身優點,不需要比較一個高低貴賤,找到合適的觸發場景就夠了,在現實的生活中可能會存在做高級語言羨慕底層開發語言,覺得底層編程比較難,畢竟還需要和指針打交道,覺得特別難,做c/c++又會覺得高級語言變通性太強,需要很強的框架支持,會覺得腦子不夠用的,要說之間會產生什麼挫敗感之類基本上不存在的事情,無論是什麼編程語言,合適的就是最好的。

希望能幫到你。


大學生編程指南


作為 曾經的C++程序員,現在做著Java程序員,不明白為什麼會有所謂的挫敗感.

從以下幾個方面論述我的觀點

應用層面

c++的應用場景大多在嵌入式領域,後臺底層技術,圖像處理方面等等

java的應用場景更廣泛,後臺開發,android開發,大數據平臺應用,都是主流的語言應用

c++對於系統底層的控制和字節流的控制更為精細和高效.java在系統的應用層上比較順手

語言方面

c++相對java較難入門和精通,光c++的指針應用和內存洩露問題,就可以澆滅部分程序員的熱情,同等精力和時間的前提下,語言的難度使得c++程序員的開發效率相比java程序員遜色一籌.同時java有各個方面完整的第三方類庫,可以省去重複造輪子的麻煩,並且java更易於實現各種設計模式和系統架構

薪資待遇

這個和工作年限,工作行業,職場機遇,公司關係較大,兩種語言在一線城市的年薪20w,30w以上的很正常,彼此之間並沒有什麼挫敗感


jsonformat


c++和Java沒有可比性。

c++完全兼容c語言,主要用於底層開發,比如:驅動、操作系統、內核(目前內核大多用c開發)、虛擬機、開發工具、引擎、服務器等,Java虛擬機就可以用c++開發。c++具有更高靈活的內存控制、指針控制、高效的運行效率。以前的端遊服務器,全是由c++開發(c++90%以上代碼,場景腳本、ai、技能擴展腳本用lua開發),啟動服務器瞬間開闢玩家、場景等內存池,遊戲玩家上線不會頻繁new操作,只需要從內存池中取相應的內存,同時避免了內存碎片化問題。【更多說明: 魔獸世界、劍網三、傳奇,大家熟知的大型網遊都是採用c++開發。有興趣的可以研究Trinity源碼(魔獸世界服務器模擬),網絡庫採用boost.asio開發】

Java主要是上層開發,現在很多服務器都是用Java開發。語法和c#類似,語法相對簡單幹淨,容易上手,現代服務器開發流行的語言。現在很多手遊都選擇Java做服務器了,沒必要考慮那麼多性能問題,快速開發上線才是首要目標。目前的Android系統之上就運行著一個龐大的java虛擬機,所以同樣的配置情況下ios的效率吊打Android。

除此以外,c++做跨平臺比較麻煩,需要用大量的#if #define做跨平臺代碼處理,由於Windows和Linux內核不一樣,網絡socket、線程等都需要單獨處理。Java就完全不用考慮這方面的問題,Java虛擬機已經幫你做好了跨平臺處理,你只需要把Java源碼拷過去就OK了。

對於語言選擇上,如果沒有特別高的性能要求,或者對c++指針、內存把握不到位的話,建議選擇Java語言。


風吹胯下蛋蛋涼oo


也沒有吧。我之前寫c/c++。寫了半年java又 現在寫python。給我的感覺是操作數據庫和網絡編程方面java python是真tm好用……但是性能方面不敢恭維。語言沒有高低之分。觸類旁通吧。重要的是思維


JustCodecodecode


沒有這種說法。C++確實要比Java難度大,但難度大並不代表這是優勢,更不代表這種語言更高級。寫程序牛不牛逼不取決於語言,而取決於你做的是什麼項目,用的是什麼算法、什麼架構、什麼思想、什麼模型等等...

如現在越來越牛逼的機器學習、深度學習等AI項目大多用的是比Java更為簡單易學的Python語言或Lua和R語言。如Python更是成為了科學項目專業戶語言,你能說用python的就比如C++不牛逼?


標記清除


為什麼。誰告訴你的,在it業十幾年從來沒聽到這種說法。java就業率對比c++遙遙領先。倒是很多c++程序員因為公司產品轉型,為了不被裁迫不得已轉做公司的java項目。


一冷殘月


哪裡來的邏輯?不考慮業務場景單說語法和標準庫,c++是真難用,純c寫代碼有時都比c++舒服。編程語言和代碼最重要的還是解決實際問題而不是找優越感。


aCHAOS


當需要開發一個強人機交互系統時,需要c++,比如安卓環境、CAD工具。當需要開發一個需要持續集成、眾多人協同工作的、功能碎片化的系統時,java了可作為首選。介於兩類之間的企業應用,可同時使用c++和java開發,他們的兼容性很好。


景151276607


因為不會多繼承啊。。。


分享到:


相關文章: