
結論:
(1)如果你是 計算機科班,大一學生,不需要立即找作業,想提高自己,那我的建議是: 把手上有關java 的書籍全部扔掉,換成C++ 的幾本經典書籍,
(2)如果你是想找作業,建議學習Java,畢竟以后想提升自己的時候,還是可以再學習C++ 的,
(3)如果你是外面培訓班出生,沒有科班背景,基礎不扎實,Sorry,目前階段你可能還配不上C++,
你如果選擇C++,那C++ 的難度與JAVA 比,那應該不在一個層次,因為C++ 作者及委員會 想給你帶來足夠的抽象能力,讓你可以抽象這個世界; 給你足夠的自由與控制硬體的能力,及零開銷的高性能, 特別是現代C++ 的發展, 可以帶來更多的組合,靈活方便,可以寫出非常精簡,有美感的代碼,這些導致了C++ 語法繁雜,學習曲線漫長,
但是學習C++ 同樣會給你帶來很多收益(前提是學好的情況下):
(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語言編程學習基地
分享(原始碼、專案實戰視頻、專案筆記,基礎入門教程)
歡迎轉行和學習編程的伙伴,利用更多的資料學習成長比自己琢磨更快哦!
編程學習書籍:

編程學習視頻:

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/238392.html
標籤:其他
