學習C++之前一定要先學習C語言嗎?先有雞還是先有蛋呢?

初學編程的小夥伴應該都會遇到這個疑問吧?

因爲最近總是有小夥伴問這個問題,所以今天在這裏統一以文章的形式回答大家。都是乾貨,認真閱讀哦~

 

C++ 讀作“C加加”,是“C Plus Plus”的簡稱。

顧名思義,C++ 是在C語言的基礎上增加新特性,玩出了新花樣,所以叫“C Plus Plus”,就像 iPhone 8P 和 iPhone 8、Win10 和 Win7 的關係。

從語法上看,C語言是 C++ 的一部分,C語言代碼幾乎不用修改就能夠以 C++ 的方式編譯,這給很多初學的小夥伴帶來了不小的困惑,學習 C++ 之前到底要不要先學習C語言呢?

對於這個問題,我保持中立。

但是初學者直接學習 C++ 確實會非常吃力,Hold 不住,尤其是對計算機內存不太理解的情況下,C++ 是學不懂的。

C++ 是一門靈活多變、特性豐富的語言,同時也意味着比較複雜,不易掌握。

不過可以明確地說:

學了C語言就相當於學了 C++ 的一半,從C語言轉向 C++ 時,不需要再從頭開始,接着C語言往下學就可以,所以強烈建議先學C語言再學 C++。

 

☆ C++和C語言的血緣關係 ☆

現在看來,C++ 和C語言雖然是兩門獨立的語言,但是它們卻有着扯也扯不清的關係。

早期並沒有“C++”這個名字,而是叫做“帶類的C”。

“帶類的C”是作爲C語言的一個擴展和補充出現的,它增加了很多新的語法,目的是提高開發效率。

如果小夥伴有 Java Web 開發經驗,那麼可以將它們的關係與 Servlet 和 JSP 的關係類比。

這個時期的 C++ 非常粗糙,僅支持簡單的面向對象編程,也沒有自己的編譯器,而是通過一個預處理程序(名字叫 cfront),先將 C++ 代碼”翻譯“爲C語言代碼,再通過C語言編譯器合成最終的程序。

隨着 C++ 的流行,它的語法也越來越強大,已經能夠很完善的支持面向過程編程、面向對象編程(OOP)和泛型編程,幾乎成了一門獨立的語言,擁有了自己的編譯方式。

我們很難說 C++ 擁有獨立的編譯器,例如 Windows 下的微軟編譯器(cl.exe)、Linux 下的 GCC 編譯器、Mac 下的 Clang 編譯器(已經是 Xcode 默認編譯器,雄心勃勃,立志超越 GCC),它們都同時支持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++編程學習交流俱樂部,傳送通道:【

還有編程學習文件(源碼,零基礎教程,項目實戰教學視頻),歡迎初學者和正在進階中的小夥伴們!

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