爲什麼大家都覺得學C/C++編程難,但是學校都是從這些基礎開始學習呢?

C語言是面向過程的,而C++是面向對象的

C和C++的區別:

C是一個結構化語言,它的重點在於算法和數據結構。C程序的設計首要考慮的是如何通過一個過程,對輸入(或環境條件)進行運算處理得到輸出(或實現過程(事務)控制)。

C++,首要考慮的是如何構造一個對象模型,讓這個模型能夠契合與之對應的問題域,這樣就可以通過獲取對象的狀態信息得到輸出或實現過程(事務)控制。 所以C與C++的最大區別在於它們的用於解決問題的思想方法不一樣。之所以說C++比C更先進,是因爲“ 設計這個概念已經被融入到C++之中 ”。

C與C++的最大區別:在於它們的用於解決問題的思想方法不一樣。之所以說C++比C更先進,是因爲“ 設計這個概念已經被融入到C++之中 ”,而就語言本身而言,在C中更多的是算法的概念。那麼是不是C就不重要了,錯!算法是程序設計的基礎,好的設計如果沒有好的算法,一樣不行。而且,“C加上好的設計”也能寫出非常好的東西。

現在很多人都覺得C/C++學起來相當的費勁,特別是對剛入門的,看到最後直接就沒法看下去了,抽象的邏輯太多了,越看越迷糊,最後也就選擇了放棄。筆者看到很多大學開設的第一門編程語言就是C/C++,如果單純從學習的角度考慮學習下面向對象整體概念,先讓自己有個大致的瞭解。然後慢慢的切入到最後的泛型編程,再到設計模式。

前些日子有個學習C/C++編程的小夥伴,跟我聊到說已經換編程語言了,換成java了,說到C++看到後面直接就沒法進行下去了,越看越迷糊。爲什麼大家都覺得C/C++難學? C/C++到底難在哪?

一. 基礎語法細節繁雜,特別是在編譯時候,折騰半天才能編過去

很多老程序員談起C++都會覺得這門語言博大精深,越學越覺得有味道,但是對於初學者學習的初期需要建立一個自信心,初期需要有點小小的成就感,纔會有繼續進行下去的信心。這也是爲什麼不建議初學者開始選擇比較難語言學習的原因。一個浪濤把那點信心拍在沙灘上,來回折騰幾次估計距離放棄不遠了。

C++在面嚮對象語言裏面的語法複雜度算是最高的了,常見的java語言相比C++已經簡單了許多,主要指的是語法細節方面。C++在編譯時候做了很多的限制,設計思想上在編譯上多下功夫,儘量不要把問題帶到運行過程中。玩過C語言的都會覺得C++編譯起來講究太多,C語言編譯起來只要不是致命性的錯誤基本上都能編譯過。

有多少初學者倒在運算符的重載上,再加上覆蓋概念這麼一折騰,更加不知道東西南北了。C++在語法設計上儘量模板化,集成性。又有多少人對模板類,類模板,模板函數,函數模板,這些概念性的東西暈暈乎乎的。總之一句話C++語法細節太多,太繁雜不適合作爲入門語言來使用。

二 面向對象編程概念講起來容易,但是真正理解還需要實際項目來徹底明白

很多人都覺得面嚮對象語言,概念理解起來很容易,但是在實際場景中真要把這些理論化的東西,落地化很難。面嚮對象語言在設計之初想的就是改進面向過程語言的邏輯條理性不強的問題。因爲面向過程代碼隨意性比較大,如果不是對框架有所瞭解的人,代碼很難實現基本的模塊化。

面向對象的一個特性就是封裝性,就是把一些細節封裝成一個對象,外邊想直接調用直接先實例化,排除一些障礙。

繼承性就是針對面向過程中重複實現代碼這一缺陷而專門設計的,已經寫好多代碼,或者實現的特性,再次使用的時候,直接繼承過來能用的直接用上,有些方法不需要專門再去實現一遍。

多態是在繼承基類的基礎上完成的,因爲類內容不可能完全一樣,除了用共用的一部分還需要實現自己的特性就是多態的實際體現了,多樣化 ,本身這幾個概念在沒有任何實際場景映射的情況下很難直接理解到位。

三. C++直接可以操作的項目,一般來講比較難,不適合初學者使用

學了C++主要在遊戲開發,系同級別框架開發,或者嵌入式方面開發,相對來說入手比較難。初學者做個項目練手可能會需要一個適應期。很多架構師對C++倒是推崇備至,有些人甚至喊出了C++夠學一輩子的。博大精深,非常有意思。初學者可能感受最多的就是他繁雜的語法細節,以及暈乎乎的編程思想,而且相比別的編程語言,貌似工作機會還不是很多。

筆者根據多年從業經驗總結出來的C++的一些點,可能不一定很準確,從業時間越長越覺得這門語言相當有意思,如同一壺老酒放的時間越長越有味道。

當然在這並不是打擊初學者,C++就是老虎了,碰不得,摸不得,更多是提醒初學者這門語言有多少特性。在學的過程中應當有哪些注意事項。還是那句話選擇那種語言並不重要,重要的是自己覺得合適。

這些是C/C++能做的

服務器開發工程師、人工智能、雲計算工程師、信息安全(黑客反黑客)、大數據 、數據平臺、嵌入式工程師、流媒體服務器、數據控解、圖像處理、音頻視頻開發工程師、遊戲服務器、分佈式系統、遊戲輔助等

新手們剛剛開始學習的時候不要好高騖遠,從最基礎的C語言開始,認真走好每一步的基礎,只有踏實的一步一步走來,才能進階的更好更高。想要進階更多的可以關注我的主頁,學習更多。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章