1. 程式人生 > >為什麼大家都覺得學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++,如果單純從學習的角度考慮學習下面向物件整體概念,先讓自己有個大致的瞭解。然後慢慢的切入到最後的泛型程式設計,再到設計模式。
(小編推薦一個學C語言/C++的學習群:788649720,入群即送C/C++全套學習資料,滿滿的乾貨!)
前些日子有個學習C/C++程式設計的小夥伴,跟我聊到說已經換程式語言了,換成java了,說到C++看到後面直接就沒法進行下去了,越看越迷糊。為什麼大家都覺得C/C++難學? C/C++到底難在哪?
在這裡插入圖片描述

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

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

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


多少初學者倒在運算子的過載上,再加上覆蓋概念這麼一折騰,更加不知道東西南北了。C++在語法設計上儘量模板化,整合性。又有多少人對模板類,類模板,模板函式,函式模板,這些概念性的東西暈暈乎乎的。總之一句話C++語法細節太多,太繁雜不適合作為入門語言來使用。
(小編推薦一個學C語言/C++的學習群:788649720,入群即送C/C++全套學習資料,滿滿的乾貨!)

二 面向物件程式設計概念講起來容易,但是真正理解還需要實際專案來徹底明白

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

面向物件的一個特性就是封裝性,就是把一些細節封裝成一個物件,外邊想直接呼叫直接先例項化,排除一些障礙。

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

多型是在繼承基類的基礎上完成的,因為類內容不可能完全一樣,除了用共用的一部分還需要實現自己的特性就是多型的實際體現了,多樣化 ,本身這幾個概念在沒有任何實際場景對映的情況下很難直接理解到位。
在這裡插入圖片描述
三. C++直接可以操作的專案,一般來講比較難,不適合初學者使用

學了C++主要在遊戲開發,系同級別框架開發,或者嵌入式方面開發,相對來說入手比較難。初學者做個專案練手可能會需要一個適應期。很多架構師對C++倒是推崇備至,有些人甚至喊出了C++夠學一輩子的。博大精深,非常有意思。初學者可能感受最多的就是他繁雜的語法細節,以及暈乎乎的程式設計思想,而且相比別的程式語言,貌似工作機會還不是很多。
(小編推薦一個學C語言/C++的學習群:788649720,入群即送C/C++全套學習資料,滿滿的乾貨!)
筆者根據多年從業經驗總結出來的C++的一些點,可能不一定很準確,從業時間越長越覺得這門語言相當有意思,如同一壺老酒放的時間越長越有味道。
在這裡插入圖片描述
當然在這並不是打擊初學者,C++就是老虎了,碰不得,摸不得,更多是提醒初學者這門語言有多少特性。在學的過程中應當有哪些注意事項。還是那句話選擇那種語言並不重要,
這些是C/C++能做的
伺服器開發工程師、人工智慧、雲端計算工程師、資訊保安(黑客反黑客)、大資料 、資料平臺、嵌入式工程師、流媒體伺服器、資料控解、影象處理、音訊視訊開發工程師、遊戲伺服器、分散式系統、遊戲輔助等。