談一談C語言和C++兩者之間的關系,學習C++之前要不要先學C語言?
【文 / 張賜榮】
C語言和C++兩者之間究竟有什么關系?學習編程到底應該學哪個?
C++中國人常 讀作"C 加加",是"C Plus Plus"的簡稱。
顧名思義,C++是在 C 的基礎上增加新特性,玩出了新花樣,所以叫"C Plus Plus",舉個不是很恰當的例子,就好像 iPhone 6S 和 iPhone 6、Win10 和 Win7 的關系。
C 語言是 1972 年由美國貝爾實驗室研制成功的,在當時算是高階語言,它的很多新特性都讓組合語言程式員羡慕不
已,就像今天的 Go 語言,剛出生就受到追捧。C 語言也是”時髦“的語言,後來的很多軟件都用 C 語言開發,包括 Windows、Linux 等。
然而隨着電腦性能的飛速提高,硬件設定與幾十年前已有天壤之別,軟件規模也不斷增大,很多軟件的體積都超過 1G,例如 PhotoShop、Visual Studio 等,用 C 語言開發這些軟件就顯得非常費力了,這時候 C++就應運而生了。
C++ 主要在 C 語言的基礎上增加了物件導向和泛型的機制,提高了開發效率,以適用於大中型軟件的編寫。
C++與 C 的血緣關系
早期並沒有”C++“這個名字,而是叫做“C with class (帶類的 C)”。”帶類的 C“是作為 C 語言的一個擴展和補充出現的,目的是提高開發效率,如果你有 Java Web 開發經驗,那么你可以將它們的關系與 Java 和 JSP 的關系類比。
這個時期的 C++非常粗糙,僅支持簡單的物件導向程序設計,也沒有自己的編譯器,而是通過一個預處理程式(名字叫 cfront),先將 C++代碼”翻譯“為 C 語言代碼,再通過 C 語言編譯器合成最終的程式。
隨着 C++的流行,它的語法也越來越強大,已經能夠很完善的支持物件導向程序設計和泛型程序設計。但是一直也沒有誕生出新的 C++編譯器,而是對原來 C 編譯器不斷擴展,讓它支持 C++的新特性,所以我們通常稱為 C/C++ 編譯器,因為它同時支援 C 和 C++,例如 Windows 下的微軟編譯器(cl.exe),Linux 下的 GCC 編譯器。
也就是說,你寫的 C、C++代碼都會通過一個編譯器來編譯,很難說 C++是一門獨立的語言,還是對 C 的擴展。
關於 C/C++的學習
從“學院派”的角度來說,C++支持面向過程程序設計、物件導向程序設計和泛型程序設計,而 C 語言僅支持面向過程程序設計。
就面向過程程序設計而言,C++和 C 幾乎是一樣的,所以學習了 C 語言,也就學習了 C++的一半,不需要從頭再來。
沒有任何程序設計基礎的讀者,建議先從 C 語言學起,不要貪多嚼不爛。等你熟悉了 C 語言,能編寫出上百行的代碼,就對程序設計有些概念了,這個時候再去了解 C++究竟在 C 語言基礎上增加了什么,你就站在了一定的高度。
有程序設計基礎的讀者,相信你自己已經能做出正確的判斷。