c++培訓學習
時間:2019-06-28 00:00:00
來源:信盈達
作者:信盈達
都說Javascript是世界上最受誤解的語言,其實C++何嘗不是?,F(xiàn)在網(wǎng)上流傳的錯誤的C++學習方法一抓就是一大把。很多人在學習C++的過程中也走了許多彎路,浪費了不少時間。我自己也是。走了不少彎路。所以在碼農(nóng)的世界中,java逐漸有了統(tǒng)一江湖的味道。昔日的霸主C++雖面臨失寵,卻一直堅守著自己的傳統(tǒng)領(lǐng)域。若干年前,初學編程的人還會糾結(jié)于偏向java還是偏向C++。隨著java技術(shù)的快速發(fā)展和web應用的興起,這個問題已經(jīng)很長時間沒有人提起了。
C++的語法靈活豐富,支持底層調(diào)用,是大多數(shù)操作系統(tǒng)的編程語言,也是游戲開發(fā)和圖像處理領(lǐng)域的首選。然而正因為它靈活多變的語法,以及對使用者編程素養(yǎng)的高要求,決定了它不能像java一樣迅猛發(fā)展。 你可能不是C++的擁躉。但如果你想深刻地理解編程的技術(shù),讓自己編寫的程序變得更高效,更優(yōu)雅,C++相關(guān)書籍值得花時間去讀一讀。
在學習C++的人當中,為什么會存在這么多錯誤認識?原因主要有三個,一是C++語言的細節(jié)太多。二是一些著名的C++書籍總在(不管有意還是無意)暗示語言細節(jié)的重要性和有趣。三是現(xiàn)代C++庫的開發(fā)哲學必須用到一些犄角旮旯的語言細節(jié)(但注意,是庫設計,不是日常編程)。這些共同塑造了C++社群的整體心態(tài)和哲學。
單是第一條還未必能夠成氣候,其它語言的細節(jié)也不少(盡管比起C++起來還是小巫見大巫),就拿javascript來說,作用域規(guī)則,名字查找,closure,for/in,這些都是細節(jié),而且其中還有違反直覺的。但許多動態(tài)語言的程序員的理念我猜大約是學到哪用到哪罷。但C++就不一樣了,學C++之人有一種類似于被暗示的潛在心態(tài),就是一定要先把語言核心基本上吃透了才能下手寫出漂亮的程序。這首先就錯了。這個意識形成的原因在第二點,C++書籍。市面上的C++書籍不計其數(shù),但有一個共同的缺點,就是講語言細節(jié)的書太多——《C++ gotchas》,《Effective C++》,《More Effective C++》,但無可厚非的是,C++是這樣一門語言:要拿它滿足現(xiàn)代編程理念的需求,尤其是C++庫開發(fā)的需求,還必須得關(guān)注語言細節(jié),乃至于在C++中利用語言細節(jié)已經(jīng)成了一門學問。比如C++模板在設計之初根本沒有想到模板元編程這回事,更沒想到C++模板系統(tǒng)是圖靈完備的,這也就導致了《Modern C++ Design》和《C++ Template Metaprogramming》的驚世駭俗。
學習最佳編碼實踐比學習C++更重要??磧?yōu)秀的代碼也比埋頭用差勁的編碼方式寫垃圾代碼要有效。直接、清晰、明了、KISS地表達意圖比玩編碼花招要重要…像C/C++這種系統(tǒng)級語言,在學習的過程中必須要涉及到一些底層知識,如內(nèi)存管理、編譯連接系統(tǒng)、匯編語言、硬件體系結(jié)構(gòu)等等等等知識(注意,這不包括過分犄角旮旯的語言枝節(jié))。這些東西也就是所謂的內(nèi)功了(其實最最重要的內(nèi)功還是長期學習所磨練出來的自學能力)。
所以說。C++零基礎(chǔ)初學者學習C++,不要糾結(jié)該怎么學好,其實學習沒有什么捷徑,就是多練習,敲代碼。有時間的時候就跟著老師學習,這樣就少走彎路。不必有時候為了一個問題想了半天,還不得解決明白。