初識(shí)C語(yǔ)言@2008年
大一的時(shí)候就開(kāi)設(shè)了C語(yǔ)言的課程,當(dāng)時(shí)沒(méi)有電腦。想著就是一門語(yǔ)言嘛,那就是要多背誦了。但是我的英語(yǔ)也學(xué)的不怎么滴,于是乎,我拿著C語(yǔ)言的教課書,默記,甚至跑到學(xué)校的后山大聲朗讀背誦。學(xué)期末考試,66分,后面的編程題完全不知道怎么下筆……在學(xué)習(xí)一門相似的東西的時(shí)候,能否能夠借用你相似經(jīng)驗(yàn),需要看兩方面的因素:
- 他們本質(zhì)是否相似。
- 另外一項(xiàng)技能你學(xué)的怎么樣。
他們本質(zhì)類似嗎?一個(gè)是與人交流的語(yǔ)言,另一個(gè)是和機(jī)器相關(guān)的操作,一個(gè)可以很模糊,有很多種選擇,另一個(gè)確實(shí)很精確,少個(gè)分號(hào),都不行。人類語(yǔ)言更多的目的是為了交流彼此的想法,計(jì)算語(yǔ)言的目的是為了編程。他們的本質(zhì)是很不同的。和編程類似的東西,我一直找不到一個(gè)合適的比喻,4年以后看到格雷厄姆(黑客與畫家作者,也是YC創(chuàng)業(yè)之父)對(duì)編程的比喻,他認(rèn)為編程和畫畫最為相似。我雖然沒(méi)有學(xué)習(xí)過(guò)畫畫,但是隨著經(jīng)驗(yàn)的增加,最真實(shí)的編程過(guò)程的確和畫畫很像,在一個(gè)草稿上不斷的修改。
英語(yǔ)通過(guò)背的方式學(xué)的也并不怎么樣,人們都是借鑒優(yōu)秀的經(jīng)驗(yàn),想想但是我借用劣勢(shì)的經(jīng)驗(yàn),腦子真是進(jìn)水了。
依然記得學(xué)C語(yǔ)言的第一節(jié)課,老師就說(shuō)這們課是你們以后吃飯的本領(lǐng),怎么做,五個(gè)字“多練多動(dòng)手”。貌似理解了道理,沒(méi)有按照這個(gè)道理去做,和左耳進(jìn)右耳出沒(méi)有什么區(qū)別。
了解C語(yǔ)言@2010年
那年夏天我認(rèn)為自己失戀了,心里很難過(guò),想找過(guò)途徑發(fā)泄。寫下說(shuō)說(shuō)“吃飯為了活著,活著為了編程”。在后面連續(xù)的15天時(shí)間里面拿著C語(yǔ)言課本,看一遍程序,而且是要看明白,不懂的地方去查,去問(wèn)一定要明白,合上書本,在電腦上寫一邊,遇到錯(cuò)誤,上網(wǎng)搜索解決方法,踩過(guò) “;”、編寫錯(cuò)誤、數(shù)組大小、字符大小等坑,慢慢爬出來(lái)。那暑假的15天時(shí)間,就是按照“吃飯為了活著,活著為了編程”這個(gè)標(biāo)準(zhǔn)過(guò)得,經(jīng)過(guò)這么一段時(shí)間真正學(xué)會(huì)了C語(yǔ)言的語(yǔ)法。除此之外還有幾句話一直在心里回蕩
- “編程先不問(wèn)為什么,先要知道是什么”
- 只有自己做一邊,才知道自己是漏掉什么的情況下“看會(huì)的”……
理解并會(huì)用C語(yǔ)言@2012年
12年找工作又系統(tǒng)地看了一遍C語(yǔ)言課本這是基礎(chǔ),接著看《程序員面試寶典》,這本書給了很多企業(yè)面試的例子,企業(yè)之所以會(huì)面試這些問(wèn)題,很大部分原因是人們常犯,面試的例子便是知識(shí)的精華,尤其對(duì)于C語(yǔ)言這種使用性很強(qiáng)的學(xué)問(wèn)上。當(dāng)時(shí)看的時(shí)候有很多看不懂,并非語(yǔ)法不懂,而是內(nèi)存和習(xí)慣用法上。找工作的時(shí)候還算順利,進(jìn)了華為.
在入職之后的三個(gè)月里面才真正的會(huì)用C語(yǔ)言。那個(gè)時(shí)候,大家競(jìng)賽這使用C語(yǔ)言做 OJ(在線評(píng)測(cè)題)。這階段,不僅僅是看你對(duì)語(yǔ)法的理解,更重要的是,你怎么使用C語(yǔ)言去解決一個(gè)又一個(gè)問(wèn)題。不斷的解決問(wèn)題的過(guò)程中,再也不覺(jué)得C語(yǔ)言陌生了,感覺(jué)對(duì)C語(yǔ)言的認(rèn)識(shí)達(dá)到了非常熟悉的程度。
知識(shí)不是學(xué)會(huì)的,而是用會(huì)的,用著用著就會(huì)了。
內(nèi)化C語(yǔ)言 @ 2012-2016
這個(gè)階段使用C語(yǔ)言,不僅僅是能夠?qū)懗隹梢允褂贸绦?,更需要做的的是寫出大家都看得懂的程序。衡量代碼不是代碼多復(fù)雜,而是面對(duì)一個(gè)復(fù)雜的問(wèn)題找到一個(gè)簡(jiǎn)單易行的解決辦法。這個(gè)時(shí)候考慮的很多問(wèn)題超出語(yǔ)言本身,代碼架構(gòu)的設(shè)計(jì),系統(tǒng)資源的使用,開(kāi)發(fā)計(jì)劃的因素,合作開(kāi)發(fā)人員的能力,跟蹤交付等等。這個(gè)時(shí)候的沒(méi)有意識(shí)到自己在用C語(yǔ)言寫代碼,而C語(yǔ)言是我的一種表達(dá)方式。