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

轉(zhuǎn)載自什么才算是真正的編程能力匙铡?
作者:IT程序獅

知乎上看到一題主的發(fā)問:

還在讀書图甜,也在實(shí)驗(yàn)室?guī)兔ψ隽诵〇|西,自己也搭過幾個(gè)網(wǎng)站鳖眼。在周圍人看來似乎好像我很厲害黑毅,做了那么多東西,但是我發(fā)現(xiàn)這些東西雖然是我做的钦讳,但是實(shí)際上我手把手自己寫的代碼卻并沒有多少矿瘦,很多都是用開源的東西,我寫的代碼無非是把別人的東西整合下愿卒,類似于膠水一樣的工作缚去。 我之前所認(rèn)為的編程是全手動(dòng)一行一行敲代碼,但是現(xiàn)在我發(fā)現(xiàn)哪怕是工程上也有很多人是復(fù)制黏貼來解決問題的琼开,并且提倡不要重復(fù)造輪子易结。 但是靠谷歌和復(fù)制別人的輪子,雖然我做出了很多東西柜候,可是我并不覺得自己能力上有提升搞动,倒是利用搜索引擎的能力的確提升了不少。而學(xué)校里另外一波搞ACM的人渣刷,他們每天刷題練算法鹦肿,或許倒是的確提升了點(diǎn)編程能力,但是對(duì)工程幾乎一竅不通辅柴。 所以我現(xiàn)在就很困惑箩溃,所謂的編程能力到底是什么,我該如何提升自己的編程能力碌嘀?

在眾多回答者中碾篡,劉賀的回答得到了眾多網(wǎng)友的肯定。他通過計(jì)算機(jī)科學(xué)的理論和系統(tǒng)知識(shí)開始闡述觀點(diǎn)筏餐,并提出了提高系統(tǒng)編程能力的一些方法和建議开泽。或許以下的回答魁瞪,你能找到一些啟發(fā)穆律。

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

計(jì)算機(jī)科學(xué)有兩類根本問題。一類是理論:算法旅薄,數(shù)據(jù)結(jié)構(gòu)辅髓,復(fù)雜度泣崩,機(jī)器學(xué)習(xí),模式識(shí)別洛口,等等等矫付。一類是系統(tǒng):操作系統(tǒng),網(wǎng)絡(luò)系統(tǒng)第焰,分布式系統(tǒng)买优,存儲(chǔ)系統(tǒng),游戲引擎挺举,等等等等杀赢。

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

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

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

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

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

系統(tǒng)編程能力體現(xiàn)在把已有的代碼拿來并變成更好的代碼,體現(xiàn)在把沒用的代碼拿來并變成有用的代碼啃擦,體現(xiàn)在把一個(gè)做好的輪子拿來能畫出來輪子的設(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)就像在自己手頭的錢一樣祷安,它們不是萬能的姥芥,但不懂是萬萬不行的。

怎么提高系統(tǒng)編程能力呢汇鞭?土辦法:多造輪子凉唐。就像學(xué)畫畫要畫雞蛋一樣,不是這世界上沒有人會(huì)畫雞蛋霍骄,但畫雞蛋能馴服手指台囱,感受陰影線條和筆觸。所以读整,自己多寫點(diǎn)東西吧簿训。寫個(gè)編譯器?渲染器米间?操作系統(tǒng)煎楣?web服務(wù)器?web瀏覽器车伞?部件都一個(gè)個(gè)換成自己手寫的择懂,然后和已有的現(xiàn)成部件比一比,看看誰的性能好另玖,誰的易用性好困曙?好在哪兒表伦?差在哪兒?為什么慷丽?

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

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

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

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

以上。嗯谅河。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末咱旱,一起剝皮案震驚了整個(gè)濱河市确丢,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌吐限,老刑警劉巖鲜侥,帶你破解...
    沈念sama閱讀 216,692評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異诸典,居然都是意外死亡描函,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門狐粱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來舀寓,“玉大人,你說我怎么就攤上這事脑奠』” “怎么了?”我有些...
    開封第一講書人閱讀 162,995評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵宋欺,是天一觀的道長(zhǎng)轰豆。 經(jīng)常有香客問我,道長(zhǎng)齿诞,這世上最難降的妖魔是什么酸休? 我笑而不...
    開封第一講書人閱讀 58,223評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮祷杈,結(jié)果婚禮上斑司,老公的妹妹穿的比我還像新娘。我一直安慰自己但汞,他們只是感情好宿刮,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,245評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著私蕾,像睡著了一般僵缺。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上踩叭,一...
    開封第一講書人閱讀 51,208評(píng)論 1 299
  • 那天磕潮,我揣著相機(jī)與錄音,去河邊找鬼容贝。 笑死自脯,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的斤富。 我是一名探鬼主播膏潮,決...
    沈念sama閱讀 40,091評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼满力!你這毒婦竟也來了戏罢?” 一聲冷哼從身側(cè)響起屋谭,我...
    開封第一講書人閱讀 38,929評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎龟糕,沒想到半個(gè)月后桐磁,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,346評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡讲岁,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,570評(píng)論 2 333
  • 正文 我和宋清朗相戀三年我擂,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片缓艳。...
    茶點(diǎn)故事閱讀 39,739評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡校摩,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出阶淘,到底是詐尸還是另有隱情衙吩,我是刑警寧澤,帶...
    沈念sama閱讀 35,437評(píng)論 5 344
  • 正文 年R本政府宣布溪窒,位于F島的核電站坤塞,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏澈蚌。R本人自食惡果不足惜摹芙,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,037評(píng)論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望宛瞄。 院中可真熱鬧浮禾,春花似錦、人聲如沸份汗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,677評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽杯活。三九已至匆帚,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間轩猩,已是汗流浹背卷扮。 一陣腳步聲響...
    開封第一講書人閱讀 32,833評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工荡澎, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留均践,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,760評(píng)論 2 369
  • 正文 我出身青樓摩幔,卻偏偏與公主長(zhǎng)得像彤委,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子或衡,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,647評(píng)論 2 354

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