什么才算是真正的編程能力?

還在讀書(shū),也在實(shí)驗(yàn)室?guī)兔ψ隽诵〇|西,自己也搭過(guò)幾個(gè)網(wǎng)站。在周圍人看來(lái)似乎好像我很厲害,做了那么多東西,但是我發(fā)現(xiàn)這些東西雖然是我做的,但是實(shí)際上我手把手自己寫(xiě)的代碼卻并沒(méi)有多少,很多都是用開(kāi)源的東西,我寫(xiě)的代碼無(wú)非是把別人的東西整合下,類似于膠水一樣的工作。

我之前所認(rèn)為的編程是全手動(dòng)一行一行敲代碼,但是現(xiàn)在我發(fā)現(xiàn)哪怕是工程上也有很多人是復(fù)制黏貼來(lái)解決問(wèn)題的,并且提倡不要重復(fù)造輪子。

但是靠谷歌和復(fù)制別人的輪子,雖然我做出了很多東西,可是我并不覺(jué)得自己能力上有提升,倒是利用搜索引擎的能力的確提升了不少。而學(xué)校里另外一部分在搞ACM的人,他們每天都在刷題練算法,但單憑我個(gè)人的感受感覺(jué)他們似乎對(duì)工程上有些東西并不了解,或許算法的能力才算是實(shí)打?qū)嵉木幊棠芰???膠水"的能力和整合輪子的能力算不算編程能力呢?

所以我現(xiàn)在就很困惑,所謂的編程能力到底是什么,我該如何提升自己的編程能力?

非常好的一個(gè)問(wèn)題。這可能是我在知乎見(jiàn)到過(guò)的問(wèn)編程有關(guān)的問(wèn)題中問(wèn)得最好的一個(gè)了。我非常喜歡這個(gè)問(wèn)題。

計(jì)算機(jī)科學(xué)有兩類根本問(wèn)題。一類是理論:算法,數(shù)據(jù)結(jié)構(gòu),復(fù)雜度,機(jī)器學(xué)習(xí),模式識(shí)別,等等等。一類是系統(tǒng):操作系統(tǒng),網(wǎng)絡(luò)系統(tǒng),分布式系統(tǒng),存儲(chǔ)系統(tǒng),游戲引擎,等等等等。

理論走的是深度,是在追問(wèn)在給定的計(jì)算能力約束下如何把一個(gè)問(wèn)題解決得更快更好。而系統(tǒng)走的是廣度,是在追問(wèn)對(duì)于一個(gè)現(xiàn)實(shí)的需求如何在眾多的技術(shù)中設(shè)計(jì)出最多快好省的技術(shù)組合。

搞ACM的人,只練第一類。像你這樣的更偏向于第二類。其實(shí)挺難得的,但很可惜的是第二類能力沒(méi)有簡(jiǎn)單高效的測(cè)量考察方法,不像算法和數(shù)據(jù)結(jié)構(gòu)有ACM競(jìng)賽,所以很多系統(tǒng)的苗子都因?yàn)槿鄙偌?lì)和正確引導(dǎo)慢慢就消隱了。

所以比爾蓋茨才會(huì)說(shuō),看到現(xiàn)在學(xué)編程的人經(jīng)常都把編程看作解各種腦筋急轉(zhuǎn)彎的問(wèn)題,他覺(jué)得很遺憾。

做系統(tǒng),確實(shí)不提倡“重復(fù)發(fā)明輪子”。但注意,是不提倡“重復(fù)發(fā)明”,不是不提倡“重新制造”。恰恰相反的,我以為,系統(tǒng)的編程能力正體現(xiàn)在“重新制造”的能力。

能把已有的部件接起來(lái),這很好。但當(dāng)你恰好缺一種關(guān)鍵的膠水的時(shí)候,你能寫(xiě)出來(lái)嗎?當(dāng)一個(gè)已有的部件不完全符合你的需求的時(shí)候,你能改進(jìn)它嗎?如果你用的部件中有bug,你能把它修好嗎?在網(wǎng)上繁多的類似功能的部件中,誰(shuí)好誰(shuí)壞?為什么?差別本質(zhì)嗎?一個(gè)開(kāi)源代碼庫(kù),你能把它從一個(gè)語(yǔ)言翻譯到另一個(gè)語(yǔ)言嗎?從一個(gè)平臺(tái)移植到另一個(gè)平臺(tái)嗎?能準(zhǔn)確估計(jì)自己翻譯和移植的過(guò)程需要多少時(shí)間嗎?能準(zhǔn)確估計(jì)翻譯和移植之后性能是會(huì)有提升還是會(huì)有所下降嗎?

系統(tǒng)編程能力體現(xiàn)在把已有的代碼拿來(lái)并變成更好的代碼,體現(xiàn)在把沒(méi)用的代碼拿來(lái)并變成有用的代碼,體現(xiàn)在把一個(gè)做好的輪子拿來(lái)能畫(huà)出來(lái)輪子的設(shè)計(jì)藍(lán)圖,并用道理解釋出設(shè)計(jì)藍(lán)圖中哪些地方是關(guān)鍵的,哪些地方是次要的,哪些地方是不容觸碰的,哪些地方是還可以改進(jìn)的。

如果你一點(diǎn)不懂理論,還是應(yīng)該學(xué)點(diǎn)的。對(duì)于系統(tǒng)性能的設(shè)計(jì)上,算法和數(shù)據(jù)結(jié)構(gòu)就像在自己手頭的錢一樣,它們不是萬(wàn)能的,但不懂是萬(wàn)萬(wàn)不行的。

怎么提高系統(tǒng)編程能力呢?土辦法:多造輪子。就像學(xué)畫(huà)畫(huà)要畫(huà)雞蛋一樣,不是這世界上沒(méi)有人會(huì)畫(huà)雞蛋,但畫(huà)雞蛋能馴服手指,感受陰影線條和筆觸。所以,自己多寫(xiě)點(diǎn)東西吧。寫(xiě)個(gè)編譯器?渲染器?操作系統(tǒng)?web服務(wù)器?web瀏覽器?部件都一個(gè)個(gè)換成自己手寫(xiě)的,然后和已有的現(xiàn)成部件比一比,看看誰(shuí)的性能好,誰(shuí)的易用性好?好在哪兒?差在哪兒?為什么?

更聰明一點(diǎn)的辦法:多拆輪子。多研究別人的代碼是怎么寫(xiě)的。然而這個(gè)實(shí)踐起來(lái)經(jīng)常很難。原因:大部分工業(yè)上用的輪子可能設(shè)計(jì)上的思想和技術(shù)是好的,都設(shè)計(jì)和制造過(guò)程都很爛,里面亂成一團(tuán),讓人乍一看毫無(wú)頭緒,導(dǎo)致其對(duì)新手來(lái)說(shuō)非常難拆。這種狀況其實(shí)非常糟糕。所以,此辦法一般只對(duì)比較簡(jiǎn)單的輪子好使,對(duì)于復(fù)雜的輪子,請(qǐng)量力而行。

輪子不好拆,其實(shí)是一個(gè)非常嚴(yán)重的問(wèn)題。重復(fù)發(fā)明輪子固然是時(shí)間的浪費(fèi),但當(dāng)輪子復(fù)雜而又不好拆的時(shí)候,尤其是原來(lái)造輪子的人已經(jīng)不在場(chǎng)的時(shí)候,重新發(fā)明和建造輪子往往會(huì)成為無(wú)奈之下最好的選擇。這是為什么工業(yè)界在明知道重復(fù)發(fā)明/制造輪子非常不好的情況下還在不斷重復(fù)發(fā)明/制造輪子的根本原因。

程序本質(zhì)是邏輯演繹的形式化表達(dá),記載的是人類對(duì)這個(gè)世界的數(shù)字化理解。不能拆的輪子就像那一篇篇丟了曲譜的宋詞一樣,能讀,卻不能唱。

鄙人不才,正在自己研究怎么設(shè)計(jì)建造一種既好用又好拆的輪子。您沒(méi)那么幸運(yùn),恐怕是等不到鄙人的技術(shù)做出來(lái)并發(fā)揚(yáng)光大了。在那之前,多造輪子,多拆好拆的小輪子,應(yīng)該是提高編程能力最好的辦法了。

以上。嗯。

(文章屬個(gè)人觀點(diǎn),與本人工作雇主無(wú)關(guān)。)

作者:劉賀

鏈接:https://www.zhihu.com/question/31034164/answer/50423838

來(lái)源:知乎

著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,237評(píng)論 6 537
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,957評(píng)論 3 423
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事?!?“怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 177,248評(píng)論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 63,356評(píng)論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,081評(píng)論 6 410
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 55,485評(píng)論 1 324
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,534評(píng)論 3 444
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 42,720評(píng)論 0 289
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,263評(píng)論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,025評(píng)論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,204評(píng)論 1 371
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,787評(píng)論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,461評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 34,874評(píng)論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 36,105評(píng)論 1 289
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,945評(píng)論 3 395
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,205評(píng)論 2 375

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

  • 伯樂(lè)在線小編注:本文綜合整理自知乎同名問(wèn)答帖。題主的問(wèn)題補(bǔ)充如下: 還在讀書(shū),也在實(shí)驗(yàn)室?guī)兔ψ隽诵〇|西,自己也搭過(guò)...
    cmlong_閱讀 142評(píng)論 0 0
  • 轉(zhuǎn)載自什么才算是真正的編程能力?作者:IT程序獅 知乎上看到一題主的發(fā)問(wèn): 還在讀書(shū),也在實(shí)驗(yàn)室?guī)兔ψ隽诵〇|西,自...
    Super_鄧帥閱讀 204評(píng)論 0 1
  • 編程能力是一種解決問(wèn)題的能力。如果問(wèn)題沒(méi)能被很好地解決,知道再多也沒(méi)用。 編程能力是一種運(yùn)用機(jī)器解決問(wèn)題的能力。首...
    切切歆語(yǔ)閱讀 430評(píng)論 0 0
  • 在書(shū)面表達(dá)上: 別人的文章很通順,我的文字只有類似我這樣的人才懂:“這叫少有的內(nèi)涵” 為了表述清楚我的敘事...
    小宗兒閱讀 220評(píng)論 0 0
  • 走了很久很久,擦擦額頭上的汗,天空中的日頭依舊那么蒼白。周邊依舊是一望無(wú)際的沙漠。我沒(méi)有水。卻并不渴。也不擔(dān)心沒(méi)水...
    Deer_Elaine閱讀 236評(píng)論 0 0