知乎神回覆:若是必定要在C++和Java中選擇,應該選擇哪種?

結論:java

(1)若是你是 計算機科班,大一學生,不須要當即找工做,想提升本身,那個人建議是: 把手上有關java 的書籍所有扔掉,換成C++ 的幾本經典書籍。 程序員

(2)若是你是想找工做,建議學習Java,畢竟之後想提高本身的時候,仍是能夠再學習C++ 的。數據庫

(3)若是你是外面培訓班出生,沒有科班背景,基礎不紮實,Sorry,目前階段你可能還配不上C++。編程

你若是選擇C++,那C++ 的難度與JAVA 比,那應該不在一個層次。由於C++ 做者及委員會 想給你帶來足夠的抽象能力,讓你能夠抽象這個世界; 給你足夠的自由與控制硬件的能力,及零開銷的高性能。  特別是現代C++ 的發展,  能夠帶來更多的組合,靈活方便,能夠寫出很是精簡,有美感的代碼。這些致使了C++ 語法繁雜,學習曲線漫長。設計模式

  可是學習C++ 一樣會給你帶來不少收益(前提是學好的狀況下):promise

(1)你會變得自信,在有C++ 基礎上,學習go 1天,java的學習也就2-3天,  學習rust 也很快,一個月吧,再練習下就能夠寫代碼了。固然我說的只是基礎語法的學習。  學習這幾門語言時,你就會感受好輕鬆。 微信

(2)本身的抽象思惟能力會帶來提高,抽象思惟是計算機領域最重要與基礎的能力。另外不少人吐槽C++ 程序員比較呆板,古董,且不懂設計模式。那是由於你沒有研究過好的C++的開源代碼,好比Folly, Wangle,mongogdb 。特別提下Folly 的promise/future 設計, 是C++的大牛 寫的, 基本上把每一行源碼都看懂了,寫的真好。併發

(3)經過學習C++ , 能夠學習到不少通用的知識,這些知識也是能夠遷移的。  C++ 的oop及資源全部權與生命週期管理, C++的異常處理, C++的泛型設計,C++的元編程,C++的異步編程及Lock-Free 設計等.在學習Lock-Free 過程當中,你會發現併發程序設計與數據庫中的併發控制的思想很是相似, 好比: Lock-Free 中的Hazard Pointer 裏面 不就有MVCC 的思想麼, CAS-loop 操做不就是一種樂觀的思想麼。  異步

另外若是你觸及到內存一致性模型的本質的話,你頗有可能會去讀lamport 的經典paper<Time Clocks and the Ordering of Events in a Distributed System> ,對之後學習分佈式系統頗有好處。  我在學習C++ 的過程當中,是先走了一遍基礎,而後逐個擊破,並輔助必定的實踐,花了大量時間,不敢說學的比較好,只能說我在看一些優秀的開源代碼時,內心沒有畏懼感了,由於有能力能夠深刻到任何代碼細節。分佈式

這裏特別提一下C++ 的Lock-Free 程序設計:

我學習C++ ,是工做了多年以後,感受最燒腦的是Lock-Free 程序設計,  爲了學習這貨,看了不少內存一致性模型相關的paper,把看了一遍(千萬不要看中文版,且不要看網上的一些文章),應該是理解的很是透徹,並輔以實踐,我是看的brpc 中相關Lock-Free 設計及Folly 源碼。  這裏提下java : java 的內存一致性模型與C++同根同源,在java 中,不少人可能只知道volatile,可是volatile 開銷太大,在這點上C++ 又給了你足夠的靈活性與不一樣性能的選項。

另外有人diss 了 <C++ Primer 第五版 > 這本書。我以爲做爲C++ 入門書籍很是好,主要是翻譯的比較好。  可是相關地方,若是你想把知識點連成線的話,須要本身拓展和總結下。

固然,若是你想把C++ 學的好點, 至少要看5-6 本經典書,並賦予實踐。

Anyway ,  it's only up to you !

連接:https://www.zhihu.com/question/20736151/answer/1553066228

來源:知乎做者triump

另外本人是一名CC++的程序員,若是你想更好的提高你的編程能力,好好學習C/C++編程知識的話!那麼你很幸運~

C語言C++編程學習交流圈子,QQ羣1090842465點擊進入】微信公衆號:C語言編程學習基地

分享(源碼、項目實戰視頻、項目筆記,基礎入門教程)

歡迎轉行和學習編程的夥伴,利用更多的資料學習成長比本身琢磨更快哦!

編程學習書籍:

編程學習視頻:

相關文章
相關標籤/搜索