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

heruilive


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

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

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

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

希望能幫到你。


大學生編程指南


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

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

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

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

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

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

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

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

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


李CODER




C++是我本人學習的第一種面嚮對象語言,這是完全不同於面向過程的C語言,編程的思路發生了遠離機器接近於人類的變化。

不得不承認一點,C++難度比Java大

學習過它以後以至於我後來選擇Java方向上手比較快速。用過C++寫過一個非常簡單的銀行管理系統,給我的感覺就是,指針有時候會弄得頭暈。C++不說別的,光是弄明白指針和多重繼承就夠嗆。開發效率明顯沒有Java這個廣泛應用於上層應用的語言高,以至於如今C++轉Java的明顯比Java轉C++的人多。

但是C++有個比Java更加巨大以至於現在都沒有被替代的特點跑同樣一個程序。

所消耗的性能一定比Java小,消耗的時間一定比Java短,因為Java一個虛擬機在中間,而C++直接在操作系統上跑。

兩個語言各有千秋,作為Java程序員我對C++沒有題目所說的挫敗感,但是有敬佩感,畢竟用的工具比我們複雜難上手。



我是“極客宇文氏”,歡迎計算機專業學生以及程序員小白關注我,分享自己的編程感悟

極客宇文氏


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語言。


cpp架構


雖然我不喜歡java,為吃口飯選擇了java團隊,現在正逐步擺脫中,但是說在cpp面前挫敗感,這個就有點無中生有了,首先聲明的是java開發團隊為主的公司極少出現cpp開發者,即便有團隊,規模也非常有限,在java團隊面前直接被忽略,更不要說挫敗感了,java語言有各種被吐槽的點,但是系統生態強大,成熟的應用,類庫層出不窮,從另一方面證明語言特性雖然笨重,但是卻是一種安全穩定的語言,所以你看很多腳本語言輕靈快捷的懂的人都說好,但是結果讓python這種簡單略有固執的語言上位。

java上位後完成了幾個任務,首先微軟的開發生態被破壞,其次是擠佔了大量cpp的開發領域,cpp現在只能固守在性能和依賴硬件的領域,第三開發平臺轉移到了web,後來轉移到移動端,最後普及了oo的開發和設計理念和知識理念

以上,語言不會因為複雜靈活,多樣性就能被更多人接受,反而穩定,明確,略有沉重也沒關係,會更讓人信任


一葉書藏


大家別爭了,任何語言都有它存在的意義和價值,本人十多年的C/C++開發經歷,也有一兩年的JAVA經歷,算是對這兩種語言有一定的瞭解了,具體討論哪個語言更好,本身就是一種短視的行為,也是不科學的,如果我們這樣去思考,從開發應用上講,一個語言能做到的,另一個語言能做到嗎?或者說誰更好地控制和利用計算機資源的極限,並且能兼顧使用上的方便,誰就可以算是更好的語言,至於很多支持JAVA的人,都喜歡重點指出開發效率,這恰恰從側面證明了他跟本不算是一流的程序員,更加體現了他在學習技術的道路上,一定走得不遠,為什麼這樣說呢?因為,在大多數商業軟件的開發模式中,都會先根據業務需求範圍,編寫一個比較實又適合迭代的開發框架,框架結構中封封了很多與應用業務無關的公共實現代碼,這樣做的目的就只有一個,方便迭代快速,穩定性好,換句話說,在一個成熟的框架下,傻子(一般指剛畢業的)都能以拷貝和粘貼的方式快速迭代版本,降低技術門檻,這就是為什麼JAVA出現的原因,不然的話,為什麼要搞一個虛擬機?然後再以面向對象的方式搞一個語言?只有一個目的:降低技術標準,讓半調子人才也來搞IT,難道不是嗎?編程的關鍵在於思想和精神,並不在於實現方式本身,任何問題的最終歸宿都是哲學問題,只是在細化的過程中方向不同而已,這恰恰也說明了技術人員偏執的心態,歸根結底:說JAVA更好的,一定不是技術大牛,就算你的職位是架構師,你內心也是恐慌的。因為你根本不知道底層對你的實現做了什麼?你能有信心嗎?說C++好的,你也一定不會發展得很好,你或許知道計算機究竟幹了什麼,但你沒有考慮到很多人根本不想去理解那麼多,他們只想拿來就用,快速出貨來證明他有如何如何的牛叉⋯

一句話:說什麼不好,就是證明自己的不好,說什麼好,他媽的也是在證明自己的不好⋯


嘯天86018054


作為一個從1997年開始採用開發C+

開發軟件的人來說,期間沒有使用過任何其它語言。個人感覺C++和java的定位不同,C++更適合開發複雜計算軟件,JAVA更適合開發應用軟件,使得C++應用面比較窄,不容易找工作,但一旦找到C++的工作方向,那麼相對會工作穩定一些,不容易被淘汰。C++更適合開發操作系統、數據庫、複雜的仿真計算等。

我在工業製造業領域工作多年,發現用於工業製造設計、仿真、校驗的軟件基本都是C++寫的,例如ANSYS,Solidworks、Blade仿真軟件都是C++寫的,但這些工業製造業軟件基本是國外壟斷的,包括大型機械的形式認證,聽說所有民航客機的形式認證就是要通過美國的一款軟件來仿真認證的。

C++和Java只有定位不同,不應該有挫敗感,C++不好找工作的,但一旦找到了可能更穩定一些;Java更容易找工作


wwwffh


其實跟語言無關,還在糾結語言的人不配做程序員。現在都追求短平快,拿來主義,很多所謂的程序員就略過了基礎的學習,成為語言的奴隸,只能做程序員中的民工,也就是碼農。目前而言,互聯網公司,好比那些建築公司,對碼農的需求是相當多的,這些都無可厚非。但悲哀的是很多所謂架構師也只是碼農水平,包括所謂大數據,AI工程師,居然美其名曰不重複造輪子,不思進取。悲乎哉!


flyhaha


不存在了,阿里巴巴提高了JAVA程序員的地位。cpp對人的要求太高,JAVA就低很多,相同水平的cpp和JAVA程序員,反而是JAVA程序員工資高一截。而水平非常高的cpp程序員,更想要的是函數式編程。


天一閣圖書管理員


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

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

應用層面

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

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

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

語言方面

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

薪資待遇

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


分享到:


相關文章: