大學室友跟我說c++沒人用了,我該怎麼回復他?

他是個java吹


你把爭論的時間拿出來學習C++,堅持四年,就能趕上 @劉雨培 十分之一的水平,這就夠你進鵝廠了,到時候用offer打舍友的臉。


捧他呀,還能怎麼滴,畢竟一個宿舍,還得感謝不殺之恩呢

我以前遇到一個人,跟我討論說C++不行了,java好,看招聘網,android開發全部都是java,沒有c++。我除了點贊還能幹啥?


有人用的,正好最近有獵頭推薦機會,都是薪資相對高的崗位,接觸的兩家偏AI方向的公司都要C++。其他公司里一個要Golang,另外兩個不限語言(而且表示Python可以)。要求Java的一個都沒有,不過可能是因為簡歷相關性吧,另外也有一些相對崗級低一些的Java相關的崗位。要求PHP的連JD都沒見過,可能沒有50K以上的崗位吧……


Office 也是 C++ 寫的,而且好像很有名的樣子

看來 Office 的工程師都不是人

——這話好像也沒啥問題……能寫出 Word 那種代碼的都是 Superman,這麼說吧:

  • Excel 的代碼是迷宮一般的 #define 和宏
  • Word 的代碼打開一股伏特加味,一個調用傳三十個參數是非常正常的舉動
  • PowerPoint 最正常一點,也就是遮天蔽日的模板而已


從認真分析角度講:

1、這個世界上真正重要的系統,都離不開C/C++。包括且不限於操作系統、資料庫底層、網路底層、java、python、.net等高級語言和虛擬機本身、硬體驅動等等。

2、學好C++對學習計算機以及其他語言有強大促進作用,誰也沒規定只能學一門語言。看看知乎大佬的知識體系就能略見一斑。

3、C++工作崗位可能在減少,但是工資確實在增加。

從簡單實用角度講:

回復他:確實,沒錯,是這樣的。(又少了一個競爭對手。)


C++ 語言用的人是少(對比 Java),但絕不是沒有(github 熱度排名常年穩居前幾個)。事實上 C++ 語言現在可能更傾向於專家級語言(其實新手也能用的,只要避免一些常見錯誤):操作系統,遊戲引擎,Photoshop 等大軟體都是 C++ 寫的。因為它更接近計算機本質。

C++ 可以做到一切 Java 能做到的事情(不考慮開發費用的話),但反過來可不一定了。

舉例子:絕大多數 Java 虛擬機都是 C/C++ 寫的。

我不是說 Java 不好,雖然我是一個 C++ 程序員但是我借鑒過優秀的 Java 類庫,如果有需要我也會使用 Java。

每種語言都有它的適用場合,應用範圍,長處,短處。所以實際上 Java 和 C++ 在我看來根本沒有什麼可比性。在語言實現層面,兩者在歷史進程中相互有過借鑒和學習。所以 Java 和 C++ 程序員也應該和睦共處。但如果有同學說 Java 代替 C++ 一類的言論,我們就要好好討論討論了。


所以呢?

刨根問底得到的「言下之意」往往沒有那麼冠冕堂皇。

這和七大姑八大姨在你填志願的時候說「XX 專業就業前景非常好」一樣:所以呢?所以工作好找呀。所以呢?所以大學學得一般也能找份不錯的工作呀。所以呢?所以大學時候可以偷懶呀……

每個人考慮問題有不同的角度,這無可厚非,甚至觀點本身是否成立都不重要。你需要選擇的是,要不要跟他一樣考慮問題。


相應工作崗位缺少不代表沒人用

最起碼最新的UE4是拿CPP寫的


讓他吹


為什麼google, facebook用c++構建核心code base, 金融高頻自動化交易公司,遊戲行業也都是c++獨霸, windows 什麼寫的(也是c++)?為什麼不用java, python ?

其關鍵在於c++提供了最好的開發效率和性能的平衡, 軟體公司的核心競爭力需要用一種效率特別高的編程語言來積累和沉澱並且通過時間來指數放大。

c++是最接近機器語言並提供high level抽象的高級語言,所以如果團隊技術水平過硬,從底層向上層層打造高質量高性能的庫, 通過多年的技術積累後,在此基礎上構建的應用才會有競爭優勢。

寫大型的軟體可以理解為蓋大樓, 底層的東西質量越好,建上層的東西就會更容易, 如果每一層都精雕細琢,將來就可以蓋別人難以企及的大樓。 但是如果底層就效率不高,漏洞百出,這個大樓必然蓋不了很高。


你說得對,我選擇Rust

你說得對,我選擇Haskell

你說得對,我選擇Javascript

你說得對,我選擇Go


果然,java吹就是可憐,井底之蛙。Cobol,Fortran,delphi,都有大把人在用,等這些猿語都完全沒人用了,再來談論大C++的存亡。不過,建議學生時期,確實不要在C++花費精力,這鬼東西幾乎就是無底洞,投入多少精力都填不飽。關鍵是性價比真心不高,當你沉浸在C++世界裡,將會錯失很多很多更有價值更有意思的話題,不如學習什麼Haskell,scheme等更具學術味道的猿語,語法熟悉之後,一下子就越過C++種種繁瑣的細節,馬上就可以進入更本質的PL學習了。至於java、C#、go等,就更不必花心思了,因為它們就是拿起來就能用的工具,學都不必學。

C++當然不是功能最強大的猿語,更與優雅美妙無關,從誕生到現在,一直就在不停地爭吵中前進,龐雜的語法表示,都快讓人懷疑已經沒法再給其硬塞新的語法點了,表面亂七八糟語言特性的堆積,但是好像又有主線一樣。就個人觀點來看,C++對面向對象的編程支持是最完整的,所有面向對象的idea,都可以在C++中一一實現。從最基本的java式的靜態類型面向對象,到go式的非侵入式介面,com式的動態介面,object c的消息發送(原教旨面向對象),以及Python式的動態類型,所有能想到的形形式式的面向對象範式,巨細無遺,大C++全部都直接支持,直接的意思,就是其語法使用很簡潔,不同於C語言的那種很low的對面向對象的模擬。更重要的是,大C++在搞這些範式的同時,還能最大程度的享受類型安全的好處

至於函數式編程,雖然C++可以搞搞,但是鑒於其在這一塊上表現的垃圾語法,不提也罷。另外,由於垃圾廢物標準委員會的一些過於象牙塔的學術追求,對C++語法做了太多完全沒有必要的限制以及吹毛求疵的類型要求,搞得有些代碼的寫法無端端就毫無必要的繁瑣。

總體而言,大C++實在是很特別得要命的猿語,頗具存在的意義。只可惜猿猴不爭氣,後面大概率要葬送在這些廢物猿猴的手裡


客觀上說,我覺得他說的沒啥大問題

c++用好的人的水平很高,但是這條路很難走,當然你願意的話誰也不會攔著你

我也是10年前從端游入行的,當時c++在遊戲開發是一霸,在完美的日子成天還是vim+gdb做伺服器開發,不過現在可以說是百花齊放了,java,erlang,go什麼都有

我目前也是java吹,特別是有stream以後的java,個人感覺非常方便,java的很多東西都是有標準的,拿來就用,c++網路庫恐怕有一萬個吧,java用netty就行。我現在是java+c#+lua+erlang多一點。c++已經幾年不碰了,也不打算再去碰了,原因是沒有這個需求,也不大有精力了。

從找工作來說,c++對人的要求更高,職位更少,可預見的是以後職位會繼續下降

c++是很好的,不過但願它不是你大腦的中二狂歡,這條路不好走


找個語言排行榜來壓壓驚~~~

TIOBE - The Software Quality Company?

www.tiobe.com


你首先得明確你們的專業是什麼,還得明白你學c++/Java是用來做什麼。如果你們專業學的是Java,並且你不明確你要用c++做什麼,那的確c++用的人越來越少,而學習Java比較容易入門。


你認真學C++不就是了嗎,有本事就和室友打個賭,你學C++畢業之後去騰訊,他去阿里,或者如果你們看不上這兩個,可以換成微軟這種。

他真的喜歡java,看不上C++,但是他java學的很好,程序寫的很好,而你C++什麼東西都做不出來,還想給C++正名,只是白白惹人笑話罷了。


一般這種水平的就沒必要爭了,我宿舍里曾經發生過很多神論:微軟的Windows Server操作系統和SQL Server資料庫很爛,自己都不用;軍事上日本比中國強……;MySQL必須念mysercle,念My S Q L的都是土鱉等等一些神論

第一個論點我當時水平不夠,沒懟回去;第二點是另外兩個室友在掙,我作為一個軍盲,譏笑他們兩個軍盲在瞎吹;第三點,我作為當時宿舍里編程水平最高的一個,繼續念My S Q L。

現在想想天天爭一些這玩意有什麼用,不過人性如此。哪怕是知乎這個地方,還是有一群人天天爭那個語言好用,那個框架好用,我作為一個渣渣,覺得他們說的居然都有道理。不過我一直覺得,光爭來爭去有什麼意思,把成績拿出來打臉多爽。我的代碼庫有多少個公司在使用/我的工資是年薪幾百萬/我在XX城市車房全有,不比天天證這些破事有意思嗎


這個問題很好回答。

如果 你的室友,現在已經學會了c++20之前的所有語法,並且精通了。

可以參加到任何豬廠或者鵝廠的項目組裡,比如吃雞或者王者裡面,

年終獎開120月。。。

那麼他會覺得c++沒用了嗎?

當然,假如 他有2個選擇的機會,

一個是java通,一個是c++通,也就是說,

他是選擇生下來就已經精通c++,還是生下來就已經精通java呢?


C++ 是一門很流行的語言,你覺得你的室友可能不清楚么?我不妨大膽推斷,他猛吹 Java,歪曲事實也要貶低 C++ 的唯一原因就是,他想貶低的不是 C++,而是你;他想抬高的不是 Java,而是他自己。

你懟不過他的原因是你的水平暫時還沒比他高太多,抓不住他的重點。我的建議是,接下來的兩個月,先粗淺的學幾門語言,把語言的特性搞清楚,別被一些語法糖和基礎的特性嚇到;再簡單讀讀設計模式,函數式編程,元編程這類東西,把複雜程序設計弄明白,入門一些流行框架。不用深入,等他再開口,你兩句話就能把它懟回去。


你跟他說,讓他把手機摔了,因為裡面有C++寫的代碼


推薦閱讀:

TAG:C | CC | C標準 | 大學室友 |