我對C語言的拙劣看法

扯買房實(shí)在不擅長绎速,咱門還是來聊程序吧。

A焙蚓,B纹冤,C洒宝,D,E萌京,F(xiàn)雁歌,G大鵬說,我《都選C》知残,我是不知道大鵬是不是也寫過代碼靠瞎,他居然清楚C的重要性。對我來說求妹,C語言應(yīng)該可以算得上是世界上最偉大的編程語言乏盐。全中國口氣最大的程序員,業(yè)界稱之為“垠神”制恍,曾經(jīng)發(fā)過文章吐槽過業(yè)界各種主流的編程語言(對Java父能,的Python稍微寬容一些),他說Go語言設(shè)計有錯誤净神,Ruby是垃圾何吝,JavaScript是垃圾中的垃圾。但我看他對C語言卻沒發(fā)表過什么負(fù)面言論鹃唯。

C語言

之前參加Go大會爱榕,演講的人許多都在說受不了C語言了,它動不動就爆內(nèi)存坡慌,為了提高系統(tǒng)穩(wěn)定性與可維護(hù)性他們把原有的邏輯用Go語言重寫了一遍黔酥,這應(yīng)該是一個正確的策略,并不是C語言不適合大項(xiàng)目八匠,而是要掌控好這門編程語言實(shí)在太困難絮爷,一個公司很難保證招聘的所有員工都牛逼到考慮到如此之多的內(nèi)存管理情況,難免引入一些有內(nèi)存泄露隱患的代碼梨树,與其在這里面死磕還不如換一種更好掌控的語言,這或許更符合公司的發(fā)展需要岖寞。

C語言沒有垃圾回收抡四,需要自己去管理內(nèi)存釋放內(nèi)存,而這點(diǎn)對于現(xiàn)代程序員來說確實(shí)有點(diǎn)難以接受仗谆。除此之外語法過度嚴(yán)謹(jǐn)指巡,定義方法之前都需要預(yù)先聲明,指針操作難以理解這種種麻煩事也導(dǎo)致了C語言的市場份額(應(yīng)該這樣說)漸漸被其他語言所占去隶垮。不過我覺得以上種種麻煩事也是C語言的魅力之處吧藻雪。它能讓我們可以更加直觀地與計算機(jī)系統(tǒng)打交道,讓我們可以更加清晰地了解到一個程序運(yùn)行的時候發(fā)生了什么事情狸吞,我們哪些方面需要系統(tǒng)的接口支持勉耀,我們能夠清楚自己需要分配多少內(nèi)存空間等等等等指煎。

1. 我們往往忽略了它的存在

對于許多計算機(jī)系的同學(xué)來說C語言可能就是噩夢,以至于他們遇到Java的時候就如同找到一根救命的稻草便斥。經(jīng)濟(jì)快速發(fā)展的今天C語言似乎漸漸失去了昔日的榮光至壤,在語言排行榜上的第一名的位置已經(jīng)讓給了Java,游戲領(lǐng)域C++已經(jīng)占有了一席之地枢纠,Web領(lǐng)域像街,Ruby,Go晋渺,Python镰绎,JavaScript這些語言各自占著不同比例的“市場份額”。那問題來了木西,C語言是否還有市場跟狱?。

讓我們透過現(xiàn)象來看看更本質(zhì)一點(diǎn)的東西户魏,目前承載著我們生活的大部分技術(shù)其實(shí)都跟C語言脫不了關(guān)系驶臊。比如,Python叼丑,Ruby這些流行編程語言的解析器关翎,目前使用最廣泛的服務(wù)端操作系統(tǒng)--Linux的內(nèi)核,以及我們目前用得最多的版本管理系統(tǒng)Git鸠信,他們都是大神們用C語言編寫而成纵寝,只是我們平時看不到C的存在罷了。或許它已經(jīng)被編譯成二進(jìn)制代碼星立,可以直接在命令行直接運(yùn)行爽茴,或許有些人給你提供了友好的用戶界面,讓你們看不到在背后默默支撐他們的人绰垂∈易啵或許有人用它實(shí)現(xiàn)了其他更加高級的編程語言(如Ruby,Python劲装,Lua)胧沫,讓你沉迷于這些語言的語法糖的時候忘記了它的解析器是由誰來實(shí)現(xiàn)。

如此看來就有點(diǎn)像是前端開發(fā)跟后端開發(fā)的關(guān)系那樣占业,個人覺得后端工程師往往需要承擔(dān)比前端更加大的工作壓力绒怨,他們編寫的代碼支撐著我們系統(tǒng)最關(guān)鍵的部分,但是人們往往只能關(guān)注到他們能夠直接觸碰的東西(可供用戶使用的UI界面)谦疾,卻忘記了為了支撐他們所見的這個頁面背后默默運(yùn)行著的服務(wù)端代碼南蹂。C語言實(shí)現(xiàn)了許多主流語言的解析器,而我們基于這些編程語言實(shí)現(xiàn)了很多了不起的網(wǎng)站念恍,App六剥,而它自己(C語言)卻漸漸淡出了人們的視線在背后默默運(yùn)行著晚顷。

2. 你可以學(xué)會它

C語言難,是真的難仗考,他是很多大學(xué)教計算機(jī)課程的“守門”語言音同,為何說是守門語言?大學(xué)老師美其名曰:“用它來嚇跑那些對在計算機(jī)領(lǐng)域混水摸魚的人(說得好像他自己不是在摸魚似的)秃嗜∪ň”這確實(shí)有點(diǎn)用,說實(shí)在這也嚇走了一些人锅锨,我自己也被它嚇跑過叽赊。

C語言是難,但個人覺得并沒有老師說得那么玄乎必搞,如果真如老師所說理解不了指針的人就不適合干這行的話必指,那我早就該轉(zhuǎn)行了,事實(shí)是每個人的智力水平不一樣恕洲,有些人只是接收得慢而已塔橡,憑什么要因?yàn)檫@些老師的幾句話就打退堂鼓?

它沒有垃圾回收還有異常處理霜第,我們需要自己去分配內(nèi)存葛家,它甚至連對象都沒有。以至于很多人都黑那些學(xué)C語言的人找不到對象(好吧泌类,這點(diǎn)我承認(rèn)癞谒,所以我現(xiàn)在更多在寫Ruby)。C語言看起來更像是手動擋的汽車刃榨,雖然比起自動擋的汽車有點(diǎn)難以把控弹砚,但熟練之后的那種操作感還有成就感是無與倫比的。這也導(dǎo)致了我在大三別人都在苦學(xué)Java的時候選擇了C跟Linux枢希,只是就業(yè)機(jī)會堪憂只能暫時放下了桌吃,最后為了不隨Java的大流投入了動態(tài)語言的懷抱。如今看來甚好晴玖,學(xué)習(xí)了動態(tài)語言之后更加明白了C的重要性读存,以及Java的非絕對必要性,哪怕現(xiàn)在我用C語言就只能寫出"Hello World"也沒關(guān)系呕屎,只要用心,愿意花時間研究敬察,C語言并沒有想象中那么難秀睛,你一定可以掌控它。

3. 這東西有什么用莲祸?

學(xué)C語言可以找到什么樣的工作蹂安?又是一個尷尬的問題椭迎,我要是知道答案當(dāng)初我可能就不會跑去學(xué)Python了。我大學(xué)時候碰過壁田盈,我以為如果我學(xué)會了C語言在外面一定可以找到好工作畜号。后來我發(fā)現(xiàn)我錯了,好不容易去了一家聲稱招C語言的公司實(shí)習(xí)允瞧,去了之后他們讓我學(xué)C#简软,工作兩個星期后跟他們老總接觸之后發(fā)現(xiàn),原來他們是分不清C跟C#的區(qū)別述暂。

Kidding

以前據(jù)說嵌入式領(lǐng)域會用到C語言痹升,不過好像這個領(lǐng)域也被Python,C++這些語言占領(lǐng)得差不多了畦韭。C語言會不會演變成像Lisp那樣只適合用來做教學(xué)語言了疼蛾?

之前聽過有些大神說過

寫Lisp你很難找到相關(guān)的工作,但是它能讓你成為一個更好的程序員艺配。

現(xiàn)在看來這句話用在C語言上也挺合適的

寫C你很難找到相關(guān)的工作察郁,但是它能讓你成為一個更好的程序員。

據(jù)我觀察转唉,函數(shù)式編程是越來越流行了黑竞,如今Java據(jù)說都支持一些Lambda相關(guān)的東西了缕粹,Clojure,Elixir這些編程語言也漸漸火起來了,Ruby熬粗,Python,JavaScript這些語言幾乎統(tǒng)治了Web開發(fā)的半壁江山驴一。后起之秀Go聲稱要擊敗C語言踊淳,把C語言能做的事情都做一遍。確實(shí)如今的C語言已經(jīng)沒有當(dāng)年的那么無敵了镶苞,出現(xiàn)了許許多多的替代品喳坠,或者衍生品。但我覺得作為一個存活了幾十年的語言茂蚓,它自有它過人之處壕鹉,作為一個系統(tǒng)級編程語言,它簡單卻難以掌控聋涨。

當(dāng)然也可能并沒有如上所說的那么玄乎晾浴,更多的是覺得學(xué)這個東西有什么卵用,只能用來擼擼算法題牍白。哈哈脊凰,如果持有這種想法的同學(xué),您還是繼續(xù)寫Java比較好一些茂腥。畢竟Java即可以用來擼算法題也可以用來找工作狸涌。不過個人更傾向于C語言切省,或許我自己也是追求“手動擋”操作感的那類人吧,想想你可以在黑窗口上帕胆,打開一個輕量級的文本編輯器朝捆,編寫相關(guān)的代碼,可以自己精確分配內(nèi)存空間懒豹,直接往某個內(nèi)存里面塞你想要的東西芙盘,當(dāng)你塞的東西放不下的時候,程序會告訴你內(nèi)存爆了歼捐,這個時候你得去思考自己塞了什么不應(yīng)該塞的東西進(jìn)去何陆。個人覺得這或許也是動態(tài)語言所不能給予的編程體驗(yàn)吧。

學(xué)C語言確實(shí)很難找到相關(guān)的工作豹储,除非你是資深專家贷盲,但它讓我們更直接地與操作系統(tǒng)打交道,讓我們對內(nèi)存分配剥扣,線程調(diào)度這些概念有更清晰的理解巩剖。了解這些東西或者說磨練這方面的意識對于日常的工作可能沒有什么直接的幫助,但我始終相信掌握C并借此了解更多底層的東西钠怯,可以讓你在這條路上走得更遠(yuǎn)佳魔,也更開心。

4. 尾聲

Hacker

以上是本人對C語言的一些看法晦炊,或許有些片面(還望指正)鞠鲜。越來越多的語言妄想取代它的地位。但個人覺得無論這些語言再先進(jìn)他們也無法完全取代C語言在許多程序員心目中的地位断国,特別是優(yōu)秀的程序員贤姆。而C語言最終會走上Cobol那樣消亡的道路呢,還是會走上不朽之路呢稳衬?我們拭目以待霞捡,但我個人覺得會是后者。

Happy Coding and Writing!!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末薄疚,一起剝皮案震驚了整個濱河市碧信,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌街夭,老刑警劉巖砰碴,帶你破解...
    沈念sama閱讀 211,423評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異板丽,居然都是意外死亡衣式,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,147評論 2 385
  • 文/潘曉璐 我一進(jìn)店門檐什,熙熙樓的掌柜王于貴愁眉苦臉地迎上來碴卧,“玉大人,你說我怎么就攤上這事乃正∽〔幔” “怎么了?”我有些...
    開封第一講書人閱讀 157,019評論 0 348
  • 文/不壞的土叔 我叫張陵瓮具,是天一觀的道長荧飞。 經(jīng)常有香客問我,道長名党,這世上最難降的妖魔是什么叹阔? 我笑而不...
    開封第一講書人閱讀 56,443評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮传睹,結(jié)果婚禮上耳幢,老公的妹妹穿的比我還像新娘。我一直安慰自己欧啤,他們只是感情好睛藻,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,535評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著邢隧,像睡著了一般店印。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上倒慧,一...
    開封第一講書人閱讀 49,798評論 1 290
  • 那天按摘,我揣著相機(jī)與錄音,去河邊找鬼纫谅。 笑死炫贤,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的系宜。 我是一名探鬼主播照激,決...
    沈念sama閱讀 38,941評論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼盹牧!你這毒婦竟也來了俩垃?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,704評論 0 266
  • 序言:老撾萬榮一對情侶失蹤汰寓,失蹤者是張志新(化名)和其女友劉穎口柳,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體有滑,經(jīng)...
    沈念sama閱讀 44,152評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡跃闹,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,494評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片望艺。...
    茶點(diǎn)故事閱讀 38,629評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡苛秕,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出找默,到底是詐尸還是另有隱情艇劫,我是刑警寧澤,帶...
    沈念sama閱讀 34,295評論 4 329
  • 正文 年R本政府宣布惩激,位于F島的核電站店煞,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏风钻。R本人自食惡果不足惜顷蟀,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,901評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望骡技。 院中可真熱鬧鸣个,春花似錦、人聲如沸哮兰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽喝滞。三九已至阁将,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間右遭,已是汗流浹背做盅。 一陣腳步聲響...
    開封第一講書人閱讀 31,978評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留窘哈,地道東北人吹榴。 一個月前我還...
    沈念sama閱讀 46,333評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像滚婉,于是被迫代替她去往敵國和親图筹。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,499評論 2 348

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

  • TITLE: 編程語言亂燉 碼農(nóng)最大的煩惱——編程語言太多让腹。不是我不學(xué)習(xí)远剩,這世界變化快! 有時候還是蠻懷念十幾骇窍、二...
    碼園老農(nóng)閱讀 5,300評論 2 35
  • 一瓜晤、異同對比選擇1、Python和ruby的相同點(diǎn): * 都強(qiáng)調(diào)語法簡單腹纳,都具有更一般的表達(dá)方式痢掠。python是縮...
    沃倫蓋茨閱讀 4,139評論 2 24
  • 書名:《代碼的未來》作者:松本行弘(Yukihiro Matsumoto)譯者:**周自恒 **本試讀章節(jié)摘自:『...
    Shyujikou閱讀 1,392評論 0 10
  • 本文把程序員所需掌握的關(guān)鍵知識總結(jié)為三大類19個關(guān)鍵概念驱犹,然后給出了掌握每個關(guān)鍵概念所需的入門書籍,必讀書籍足画,以及...
    dle_oxio閱讀 11,087評論 6 244
  • 其實(shí)雄驹,我在游泳尤其是自游泳方面,積累的有效鍛煉總時長要遠(yuǎn)遠(yuǎn)多于我在英語锌云,碼字和早起等事情上各自的踐行總時長荠医。也就是...
    大崔同學(xué)的簡書閱讀 1,111評論 0 0