為什麼大家都怕學C++?
文章推薦指數: 80 %
現在很多人都覺得C++學起來相當的費勁,特別是對剛入門的,看到最後直接就沒法看下去了,抽象的邏輯太多了,越看越迷糊,最後也就選擇了放棄。
筆者看到很多大學開設的第一門程式語言就是C++,如果單純從學習的角度考慮學習下面向對象整體概念,先讓自己有個大致的了解。
然後慢慢的切入到最後的泛型編程,再到設計模式。
前些日子有個學習C++編程的小夥伴,跟我聊到說已經換程式語言了,換成java了,說到C++看到後面直接就沒法進行下去了,越看越迷糊。
為什麼大家都覺得C++難學? C++到底難在哪?
一. 基礎語法細節繁雜,特別是在編譯時候,折騰半天才能編過去
很多老程式設計師談起C++都會覺得這門語言博大精深,越學越覺得有味道,但是對於初學者學習的初期需要建立一個自信心,初期需要有點小小的成就感,才會有繼續進行下去的信心。
這也是為什麼不建議初學者開始選擇比較難語言學習的原因。
一個浪濤把那點信心拍在沙灘上,來回折騰幾次估計距離放棄不遠了。
C++在面向對象語言裡面的語法複雜度算是最高的了,常見的java語言相比C++已經簡單了許多,主要指的是語法細節方面。
C++在編譯時候做了很多的限制,設計思想上在編譯上多下功夫,儘量不要把問題帶到運行過程中。
玩過C語言的都會覺得C++編譯起來講究太多,C語言編譯起來只要不是致命性的錯誤基本上都能編譯過。
有多少初學者倒在運算符的重載上,再加上覆蓋概念這麼一折騰,更加不知道東西南北了。
C++在語法設計上儘量模板化,集成性。
又有多少人對模板類,類模板,模板函數,函數模板,這些概念性的東西暈暈乎乎的。
總之一句話C++語法細節太多,太繁雜不適合作為入門語言來使用。
二 面向對象編程概念講起來容易,但是真正理解還需要實際項目來徹底明白
很多人都覺得面向對象語言,概念理解起來很容易,但是在實際場景中真要把這些理論化的東西,落地化很難。
面向對象語言在設計之初想的就是改進面向過程語言的邏輯條理性不強的問題。
因為面向過程代碼隨意性比較大,如果不是對框架有所了解的人,代碼很難實現基本的模塊化。
面向對象的一個特性就是封裝性,就是把一些細節封裝成一個對象,外邊想直接調用直接先實例化,排除一些障礙。
繼承性就是針對面向過程中重複實現代碼這一缺陷而專門設計的,已經寫好多代碼,或者實現的特性,再次使用的時候,直接繼承過來能用的直接用上,有些方法不需要專門再去實現一遍。
多態是在繼承基類的基礎上完成的,因為類內容不可能完全一樣,除了用共用的一部分還需要實現自己的特性就是多態的實際體現了,多樣化 ,本身這幾個概念在沒有任何實際場景映射的情況下很難直接理解到位。
三. C++直接可以操作的項目,一般來講比較難,不適合初學者使用
學了C++主要在遊戲開發,系同級別框架開發,或者嵌入式方面開發,相對來說入手比較難。
初學者做個項目練手可能會需要一個適應期。
很多架構師對C++倒是推崇備至,有些人甚至喊出了C++夠學一輩子的。
博大精深,非常有意思。
初學者可能感受最多的就是他繁雜的語法細節,以及暈乎乎的編程思想,而且相比別的程式語言,貌似工作機會還不是很多。
筆者根據多年從業經驗總結出來的C++的一些點,可能不一定很準確,從業時間越長越覺得這門語言相當有意思,如同一壺老酒放的時間越長越有味道。
當然在這並不是打擊初學者,C++就是老虎了,碰不得,摸不得,更多是提醒初學者這門語言有多少特性。
在學的過程中應當有哪些注意事項。
還是那句話選擇那種語言並不重要,重要的是自己覺得合適。
如果對編程感興趣,想了解更多的編程知識,解決編程問題,以及入門指導,幫你解決編程中遇到的困惑,請關注本頭條號,大家一起學習,一起進步,一起熬夜加班。
小白入門編程學習路線圖
編程是個很有趣的事情,它會帶給程式設計師無窮無盡的快樂,隨著計算機的普及,越來越多的同學都選擇踏上編程之路,那作為一個初學者,學習編程要如何入門,相信這個問題也在困擾著很多人...小編小姐姐在這...
如何正確入門C/C++學習領域?
【推薦的學習書籍】1>C Primer Plus中文版2> C++ Primer Plus中文版【推薦的學習方式】1> 認真把推薦的C/C++書籍看完並理解80%以上的內容。2> 在看書的過程中...
菜鳥學C,各種問題讓你懵逼 初學者最容易遇到的問題解惑
都知道C語言很強大,這個強大一是來自其功能,第一次出名就很牛逼的編出了UNIX系統,然後跟著UNIX這個明星,於是自己的影響一路飆升,二是C語言不但能夠寫UNIX的作業系統,而且編寫LINUX...
小白如何自學C/C++——一個系統的學習路線及學習思路
對這方面感興趣或者想學習C/C++的可以加群:558502932,大家一起學習交流如今,在這個信息高度發達的時代,越來越多的人去學習軟體編程,也有越來越多的人學習程式語言,但是學習程式語言的第一...