學C語言和C++它有毛關系嗎?

20200810234426.png

這是最近一周時間幾個讀者小伙伴所提的問題挎挖,我順手截了兩個圖这敬。

image
image

實不相瞞航夺,這類問題之前也經(jīng)辰抖洌看到,但是我忘了截圖了阳掐。

每次遇到這種問題始衅,看起來很簡單冷蚂,但是打字一時半會還真說不清,想想今天周末了汛闸,寫一篇文章來統(tǒng)一聊聊吧蝙茶,如果小伙伴們有不同看法,也歡迎批評指正诸老,評論區(qū)見隆夯。

image

本文在開源項目:https://github.com/hansonwang99/JavaCollection 中已收錄,里面包含不同方向的自學編程路線别伏、面試題集合/面經(jīng)蹄衷、及系列技術文章等,資源持續(xù)更新中...


C語言和C++到底是什么關系厘肮?

首先C++C語言本來就是兩種不同的編程語言愧口,但C++確實是對C語言的擴充和延伸,并且對C語言提供后向兼容的能力类茂。對于有些人說的C++完全就包含了C語言的說法還是有點別扭的耍属。

C++一開始被本賈尼·斯特勞斯特盧普(Bjarne Stroustrup)發(fā)明時,起初被稱為“C with Classes”巩检,即「帶類的C」厚骗。很明顯它是在C語言的基礎上擴充了類class等面向?qū)ο蟮奶匦院蜋C制。但是后來經(jīng)過一步步修訂和很多次演變(如下圖所示)兢哭,最終才形成了現(xiàn)如今這個支持一系列重大特性的龐大編程語言溯捆。

image

就像經(jīng)典書籍《Effective C++》一開頭就說的,現(xiàn)如今我們提到C++厦瓢,都應該視其為一個龐大的「語言聯(lián)邦」提揍,最起碼包含如下幾個重要的組成部分:

  • 面向過程編程
  • 面向?qū)ο缶幊?/strong>
  • 泛型編程
  • 元編程
  • 函數(shù)式編程
  • STL標準庫

這其中的第一部分「面向過程編程」,正是C++提供的向后兼容C語言的部分煮仇,所以你能看到市面上在售的大部分講C++編程的書劳跃,一開始前幾個章節(jié)基本都是在講「面向過程編程」的內(nèi)容,包括但不限于:數(shù)據(jù)類型浙垫、變量刨仑、運算符、表達式夹姥、語句杉武、判斷、循環(huán)辙售、函數(shù)轻抱、指針等等這些內(nèi)容。


不學C語言能直接學C++嗎旦部?

還是像前面所說祈搜,C++編程語言的第一大重要組成部分就是「面向過程編程」较店,而這正是C語言老大哥的領域。即使沒有學過C語言容燕,一上來就直接學習C++的小伙伴梁呈,應該也難逃『面向過程』這一部分的內(nèi)容。因為市面上在售的大部分講C++編程的書蘸秘,開始的章節(jié)都在講「面向過程編程」的內(nèi)容官卡。

從理論上來說,學C++并不一定非得學C語言醋虏,但是有C語言底子再去學C++往往更具優(yōu)勢味抖,最起碼「面向過程編程」這一部分內(nèi)容能夠輕車熟路。

但是遺憾的是灰粮,即使是《C++ Primer》這種700多頁厚的權威C++書籍仔涩,開頭也只有很少一部分在講「面向過程編程」,所以對于面向過程這一部分的講述是肯定沒有專門講C語言的書籍剖析得細致和全面的粘舟,不然也不會有這種重點側(cè)重于指針相關的《C和指針》等這類書籍的出現(xiàn)了熔脂。

所以個人建議是在學C++之前,C語言的基礎還是盡量要夯實柑肴,肯定是有幫助的霞揉。


C學得好的,學習C++是否更具優(yōu)勢晰骑?

是的适秩。

最起碼學C++時,里面的「面向過程」這一部分內(nèi)容可以說輕車熟路了硕舆。


C++能替代C語言嗎秽荞?

既然C++這么強大,包含這么多模塊和范式抚官,而且也幾乎包含了C語言面向過程這一部分的內(nèi)容扬跋,那為啥還要學C語言呢?都直接學習C++它不香嘛凌节?

是的钦听,C++很強大沒錯,但那些強大的范式和機制本身帶來的包袱就不輕倍奢,也確實給學習者造成了不小的負擔朴上,甚至勸退了很多人。

而反觀C語言卒煞,C語言本身就是一個把能力痪宰、性能效率學習成本權衡得非常極致的一種編程語言,以至于大學階段必開的程序設計課程里基本都有C語言的身影酵镜。

而且C語言的應用領域極度廣泛碉碉,上到操作系統(tǒng)底層的原生接口柴钻,下到普通的應用層開發(fā)淮韭,C語言都有著不小的功勞。以至于這么多年來贴届,在Tiobe編程語言排行榜里靠粪,C語言都是居高位不下。

image

而且2020開年C語言重回巔峰王座毫蚓,一舉奪得「2019年度編程語言」占键。雖然這只是一個看起來很無聊的排名,但多多少少能說明一些事情元潘。

image

所以無論是過去畔乙,現(xiàn)在,甚至是未來翩概,近50歲的C語言老將軍依然永不為奴牲距。

image

只有C++這種面向?qū)ο蟮恼Z言才適合大型項目嗎?

C++的出現(xiàn)的確是為了更方便地開發(fā)大型應用程序钥庇,畢竟面向?qū)ο缶幊汤锏暮芏嘀匾枷牒蜋C制都對大型項目和復雜系統(tǒng)所要求的項目工程化牍鞠、代碼復用性/擴展性/可維護性等提供了強大的支撐。

但是擺在眼前的事實告訴我們评姨,即便是C語言难述,也照樣可以構建出極其復雜的系統(tǒng)和軟件。上到Linux這種曠世偉大的操作系統(tǒng)內(nèi)核吐句,小到被各個公司重度依賴的Redis胁后、Nginx等開源軟件或框架,都是C語言的代表作品嗦枢。

所以有時候我們不得不承認的是择同,大家所說的抽象能力更多的是看寫這個程序的人,而并非編程語言本身净宵。


小 結

好啦敲才,扯得有點多了,總結一下就是:

  • C語言和C++是兩個不同的編程語言择葡,只不過內(nèi)容上有一定的重疊紧武;
  • C語言是一門很強大的編程語言,我覺得有機會還是要學一下敏储;
  • 一般來說阻星,有了C語言的基礎,上手C++也會更快;
  • C++C各有各的選用考慮和應用場景妥箕,并沒有誰更好一說滥酥,學不學看自己的興趣和自身技術發(fā)展的考量

書籍推薦

最后聊一聊學習C語言和C++的書籍吧。

個人覺得如果想系統(tǒng)學習這兩門語言畦幢,最好還是得看一下經(jīng)典的書籍坎吻。

關于C語言學習書籍,最最權威的當然是C語言的發(fā)明者Dennis M. Ritchie所著的《The C Programming Language》(它也有中文版的)宇葱,除此之外《C Primer Plus》也很系統(tǒng)全面瘦真。

關于C++的學習書籍,最權威的當屬C++的發(fā)明者Bjarne Stroustrup大佬所著的《The C++ Programming Language》黍瞧,但是很明顯這本書不適合初學者诸尽,更加適合的還得是《C++ Primer》,也很系統(tǒng)全面印颤。至于再深入可以繼續(xù)閱讀諸如《Effective C++》您机、《STL源碼剖析》、《深度探索C++對象模型》等書籍年局。

這些書讀完际看,成神之路便可由此開啟。

本文在開源項目:https://github.com/hansonwang99/JavaCollection 中已收錄某宪,里面包含不同方向的自學編程路線仿村、面試題集合/面經(jīng)、及系列技術文章等兴喂,資源持續(xù)更新中...


每天進步一點點

慢一點才能更快

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蔼囊,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子衣迷,更是在濱河造成了極大的恐慌畏鼓,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件壶谒,死亡現(xiàn)場離奇詭異云矫,居然都是意外死亡茵肃,警方通過查閱死者的電腦和手機恐疲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來庙洼,“玉大人陨界,你說我怎么就攤上這事巡揍。” “怎么了菌瘪?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵腮敌,是天一觀的道長。 經(jīng)常有香客問我,道長糜工,這世上最難降的妖魔是什么弊添? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮捌木,結果婚禮上油坝,老公的妹妹穿的比我還像新娘。我一直安慰自己钮莲,他們只是感情好免钻,可當我...
    茶點故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布彼水。 她就那樣靜靜地躺著崔拥,像睡著了一般。 火紅的嫁衣襯著肌膚如雪凤覆。 梳的紋絲不亂的頭發(fā)上链瓦,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天,我揣著相機與錄音盯桦,去河邊找鬼慈俯。 笑死,一個胖子當著我的面吹牛拥峦,可吹牛的內(nèi)容都是我干的贴膘。 我是一名探鬼主播,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼略号,長吁一口氣:“原來是場噩夢啊……” “哼刑峡!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起玄柠,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤突梦,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后羽利,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體宫患,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年这弧,在試婚紗的時候發(fā)現(xiàn)自己被綠了娃闲。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡匾浪,死狀恐怖皇帮,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情户矢,我是刑警寧澤玲献,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響捌年,放射性物質(zhì)發(fā)生泄漏瓢娜。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一礼预、第九天 我趴在偏房一處隱蔽的房頂上張望眠砾。 院中可真熱鬧,春花似錦托酸、人聲如沸褒颈。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽谷丸。三九已至,卻和暖如春应结,著一層夾襖步出監(jiān)牢的瞬間刨疼,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工鹅龄, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留揩慕,地道東北人。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓扮休,卻偏偏與公主長得像迎卤,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子玷坠,可洞房花燭夜當晚...
    茶點故事閱讀 43,472評論 2 348