你知道為什么要學習C語言嗎倒脓?

?為什么要學習撑螺、使用C語言?為什么要學習一個可能比自己都歲數(shù)大的編程語言呢崎弃?我不知道大家有沒有思考過這個問題甘晤。? ? ? ?選擇一門編程語言,“為什么而學”這個目的是最重要的饲做,目的不明確就沒法學好线婚。這也是為什么很多學生朋友在大學里必修C語言卻覺得沒學明白的原因。因為學習的目的不明確盆均,學習當然也沒有動力塞弊。還有一個原因是C語言是工程實踐性很強的語言,它不是來自某個研究所某個大學學院泪姨,而是實實在在從項目需要中產(chǎn)生游沿,伴隨著Unix的興起而流行,語義簡明清晰肮砾,功能強大而不臃腫诀黍,簡潔而又不過分簡單,實在是居家旅行工作學習必備之良友仗处。? ? ?


C語言相比C++的優(yōu)點之一就是蔗草,一是一二是二咒彤,不會在私底下產(chǎn)生一些莫名其妙的額外產(chǎn)物。用C++做個例子咒精,比如這樣一個函數(shù)原型void PassWithClassValue(COneClass clsParam1)镶柱,稍微了解C++的朋友都會知道,如果你沒有實現(xiàn)COneClass的拷貝構(gòu)造函數(shù)模叙,編譯器會好心的幫你實現(xiàn)一個歇拆,而且在調(diào)用這個函數(shù)PassWithClassValue的時候,偷偷地調(diào)用拷貝構(gòu)造函數(shù)產(chǎn)生一個臨時對象作為參數(shù)傳遞范咨,對于某些情況故觅,比如編寫操作系統(tǒng)這類必須優(yōu)化性能的情景下,這些自以為是的東西是非常邪惡的事情渠啊。C語言本身只提供必要的語言特性输吏,其它復雜一點功能如文件處理、數(shù)學計算等等都以庫函數(shù)方式提供替蛉,甚至連malloc贯溅、free這種“必須有”的功能,也是以標準庫函數(shù)的方式提供躲查,而不是作為C語言核心出現(xiàn)它浅。在偉大的著名的無所不包的《K&R》開頭部分就提到了,for其實可以通過while來完成镣煮,只不過for可以寫的更簡潔姐霍,言外之意,對于C語言for其實不是必要的典唇。跑題一點說镊折,在其它程序語言中Lua可以說繼承了C語言簡潔的設計哲學,甚至連continue這種幾乎必備的關(guān)鍵字都一直拒絕加入,在Lua的maillist以及wiki里都提到過continue這個問題,Lua語言維護者認為continue對于Lua而言不是必要的斩启,也不考慮在后續(xù)版本中添加這個關(guān)鍵字。這種簡潔哲學也讓C語言的可移植性与纽、便攜性特別優(yōu)秀,也使得很多嵌入式系統(tǒng)依然使用C語言作為主要編程工作語言塘装。??


?Java語言有一個口號:“一次編寫急迂,處處運行”,就是跨平臺這個噱頭蹦肴。實際上C語言從早期開始就幾乎達到了“一次編寫僚碎,處處編譯”,在ANSI在1989年統(tǒng)一了C語言標準以后(稱之為C89)阴幌,只要特定平臺上的編譯器完整實現(xiàn)了C89標準勺阐,而且你的代碼沒有使用某些特殊的擴展(GCC以及微軟都有自己的編譯器特定擴展)卷中,那么代碼一定可以編譯通過,再實現(xiàn)一下操作系統(tǒng)相關(guān)的函數(shù)庫渊抽,C語言的移植就是很簡單的事情蟆豫。可以用Lua作為例子懒闷,Lua本身是完全遵循C89標準十减,沒有使用任何特定擴展,這也保證了有C語言編譯器的平臺愤估,都可以編譯使用Lua帮辟。可以編譯運行C語言的硬件平臺可以從A排到Z玩焰,真是非常有意思的事情由驹。? ? ? ?C語言也是一個比較少見的應用領(lǐng)域極為廣泛的語言。比如編寫操作系統(tǒng)這種高難問題昔园,只有C++蔓榄、匯編語言可以做到。C語言可以編寫服務器端軟件如Apache蒿赢、Nginx润樱,或者編寫GUI程序渣触,如GTK羡棵。大多數(shù)程序語言的第一版是通過C語言實現(xiàn),借助前面提到的“一次編寫處處編譯”嗅钻,最大的保證了這些程序語言的可移植性皂冰。在Web開發(fā)領(lǐng)域,C語言的應用相對較少养篓,這也是一種取舍的結(jié)果秃流,Web開發(fā)需要使用PHP、Ruby柳弄、Python這樣的動態(tài)語言舶胀,可以快速上線快速修改,可以最大程度滿足用戶時時變化的需求碧注,這也是C語言的弱項嚣伐。如果把程序語言的應用領(lǐng)域從硬件到管理軟件、Web程序做一個很粗略從下到上的排列萍丐,C語言適合領(lǐng)域是比較底層靠近硬件的部分轩端,而新興語言比較偏重于高層管理或者Web開發(fā)這種相對貼近最終用戶的領(lǐng)域。比較流行的混合開發(fā)模式是使用C語言編寫底層高性能部分代碼或后臺服務器代碼逝变,而使用動態(tài)語言如Python做前端開發(fā)基茵,充分發(fā)揮它們各自的優(yōu)勢力量奋构。? ? ? ?提到C語言的缺點,常常是它缺少這種或者那種特性拱层,比如有人建議加入GC弥臼,有人建議加入并行或者并發(fā)支持,有人提到?jīng)]有一個比較完整的類似C++的異常策略根灯。這些特性有的可以通過引入第三方庫來實現(xiàn)醋火,但C語言的設計哲學其實決定了它不會像C++那樣“非常強大”。即使引入了某些人期望的特性箱吕,依然會是某些人喜歡某些人不喜歡的情形芥驳,現(xiàn)在的功能對于C語言應用領(lǐng)域來說已經(jīng)夠用,其它特性可以通過特定程序語言實現(xiàn)茬高,并且通過C API與C語言編寫的程序進行交互兆旬。任何一個工匠都不可能只使用一個工具完成他的工作,不同工具結(jié)合起來才能更快更好的完成任務怎栽。堅持就是勝利? ? ? ? ?提到C API丽猬,也稍微介紹一下,我們知道windows操作系統(tǒng)的api也好熏瞄,Linux的系統(tǒng)api也好脚祟,或者是想給Ruby、Python編寫擴展模塊强饮,C語言形式的函數(shù)定義都是唯一的選擇由桌。C語言就好像是一個中間層或者是膠水,如果想把不同編程語言實現(xiàn)的功能模塊混合使用邮丰,C語言是最佳的選擇行您。? ? ? ? ?

提了這么多關(guān)于C語言的好處,那么學習C語言是否適合就看你自己的判斷了剪廉,例如要進行一個嵌入式項目娃循,或者需要進行服務器端開發(fā),或者寫一個性能相關(guān)的組件等等斗蒋,C語言都是比較好用的選擇捌斧。另外也可以在C++的使用過程中有意的使用C語言的思考方式,汲取C語言簡潔明快清晰地設計思路泉沾,對編程設計水平會有很大的提高捞蚂。小編就分享到這里了,不要以為C語言優(yōu)勢就只有這些了爆哑,其實還有很多洞难,我在這里就不一一列舉了,大家之后自己也會有發(fā)現(xiàn)的。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末队贱,一起剝皮案震驚了整個濱河市色冀,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌柱嫌,老刑警劉巖锋恬,帶你破解...
    沈念sama閱讀 222,464評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異编丘,居然都是意外死亡与学,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,033評論 3 399
  • 文/潘曉璐 我一進店門嘉抓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來索守,“玉大人,你說我怎么就攤上這事抑片÷逊穑” “怎么了?”我有些...
    開封第一講書人閱讀 169,078評論 0 362
  • 文/不壞的土叔 我叫張陵敞斋,是天一觀的道長截汪。 經(jīng)常有香客問我,道長植捎,這世上最難降的妖魔是什么衙解? 我笑而不...
    開封第一講書人閱讀 59,979評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮焰枢,結(jié)果婚禮上蚓峦,老公的妹妹穿的比我還像新娘。我一直安慰自己医咨,他們只是感情好枫匾,可當我...
    茶點故事閱讀 69,001評論 6 398
  • 文/花漫 我一把揭開白布架诞。 她就那樣靜靜地躺著拟淮,像睡著了一般。 火紅的嫁衣襯著肌膚如雪谴忧。 梳的紋絲不亂的頭發(fā)上很泊,一...
    開封第一講書人閱讀 52,584評論 1 312
  • 那天,我揣著相機與錄音沾谓,去河邊找鬼委造。 笑死,一個胖子當著我的面吹牛均驶,可吹牛的內(nèi)容都是我干的昏兆。 我是一名探鬼主播,決...
    沈念sama閱讀 41,085評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼妇穴,長吁一口氣:“原來是場噩夢啊……” “哼爬虱!你這毒婦竟也來了隶债?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,023評論 0 277
  • 序言:老撾萬榮一對情侶失蹤跑筝,失蹤者是張志新(化名)和其女友劉穎死讹,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體曲梗,經(jīng)...
    沈念sama閱讀 46,555評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡赞警,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,626評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了虏两。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片愧旦。...
    茶點故事閱讀 40,769評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖定罢,靈堂內(nèi)的尸體忽然破棺而出忘瓦,到底是詐尸還是另有隱情,我是刑警寧澤引颈,帶...
    沈念sama閱讀 36,439評論 5 351
  • 正文 年R本政府宣布耕皮,位于F島的核電站,受9級特大地震影響蝙场,放射性物質(zhì)發(fā)生泄漏凌停。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,115評論 3 335
  • 文/蒙蒙 一售滤、第九天 我趴在偏房一處隱蔽的房頂上張望罚拟。 院中可真熱鬧,春花似錦完箩、人聲如沸赐俗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,601評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽阻逮。三九已至,卻和暖如春秩彤,著一層夾襖步出監(jiān)牢的瞬間叔扼,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,702評論 1 274
  • 我被黑心中介騙來泰國打工漫雷, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留瓜富,地道東北人。 一個月前我還...
    沈念sama閱讀 49,191評論 3 378
  • 正文 我出身青樓降盹,卻偏偏與公主長得像与柑,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,781評論 2 361

推薦閱讀更多精彩內(nèi)容