摘要:正是前人的努力,我們現(xiàn)在的編程才會(huì)如此的容易。讀懂他人代碼算法如果別人是大牛,數(shù)學(xué)學(xué)得很好,很多數(shù)學(xué)公式,很多遞歸,如果自己沒有一定的數(shù)學(xué)基礎(chǔ),可能就暈了,這個(gè)時(shí)候,數(shù)學(xué)的基本功可能就會(huì)在這里發(fā)揮作用了。
作者:caoglish
原文鏈接:http://t.cn/RKcyGX3
來源:知乎
原因:你使用編程來解決問題的時(shí)候,基本上最終的東西是代碼,但是編程的知識(shí)太廣,總有你不會(huì)的,總有你不了解的,總有你記不住的。這個(gè)時(shí)候,有文檔作為資料參考,就可以快速把別人的經(jīng)驗(yàn)知識(shí)轉(zhuǎn)化為自己的生產(chǎn)力和自己的代碼。
查詢閱讀文檔是可以分成很多部分。主要是以下幾個(gè)部分:
教程文檔
技術(shù)參考文檔
第一手的英語文檔
代碼例子
教程文檔,是手把手教會(huì)你如何使用這個(gè)編程技術(shù)的重要文檔之一,是入門技術(shù)的重要教學(xué)資料,如果這個(gè)都不會(huì)看,那么就已經(jīng)喪失了自學(xué)編程技術(shù)的能力了。
技術(shù)參考文檔,一般來說 API 的技術(shù)文檔我們說的比較多,很多 API 都沒有教程給出,要靠自己查詢文檔,再根據(jù)需求特點(diǎn)來使用 API 。這個(gè)相對(duì)教程文檔更加枯燥。而且這個(gè)水平我認(rèn)為還分幾種情況(當(dāng)然有能力自己編寫一個(gè),不靠文檔的情況不在這里的考慮范圍之內(nèi)):
知道哪個(gè) API 符合需求
知道哪個(gè) API 接近自己需求,但需要進(jìn)行數(shù)據(jù)轉(zhuǎn)換
不知道有沒有 API 符合自己需求的,但能找到一個(gè)API 接近自己需求的
不知道有沒有 API 符合自己需求的,也不知道怎么找的
英語能力這里有另外一個(gè)基本功,就是英語能力。如果英語能力好,再結(jié)合英語版的教程文檔和英語版技術(shù)參考文檔,那么這項(xiàng)基本功會(huì)對(duì)你的編程水平提供很大的幫助。
讀第一手英語資料也是很重要的。我最愿意讀的文檔資料是 PHP 的官網(wǎng)和 jQuery 的官網(wǎng)。PHP 的官網(wǎng)的文檔非常有意思,不但自己寫詳細(xì)的 API 說明,有例子,底下還有很多用戶在提供很多相關(guān)的信息和使用 API 的技巧。英語資料的好處是細(xì)致,理解簡(jiǎn)單,而且更新快,甚至你可以和寫文檔的人進(jìn)行交流。
數(shù)學(xué)原因:編程到處都是數(shù)學(xué)的表現(xiàn)形式。就算你不懂?dāng)?shù)學(xué),但當(dāng)你編碼了,就是在做數(shù)學(xué)做的事情。
電腦其實(shí)就是數(shù)學(xué)的現(xiàn)實(shí)產(chǎn)物,方方面面都有著數(shù)學(xué)的元素在里面,有人說了,數(shù)學(xué)是藍(lán)瓶的最大值,這點(diǎn)我很認(rèn)同。正是前人的努力,我們現(xiàn)在的編程才會(huì)如此的容易。但不代表數(shù)學(xué)現(xiàn)在不重要,編程就不要數(shù)學(xué)了。在編程中,處處可以看到數(shù)學(xué)的東西在里面。如果有了數(shù)學(xué)基礎(chǔ),這些東西理解起來就會(huì)更加容易。先說說,編程基礎(chǔ)中的數(shù)學(xué):
函數(shù) / 方法,數(shù)學(xué)就有函數(shù)概念 y=f(x) ,f 就是函數(shù),x 就是輸入,y 就是輸出
邏輯布爾值,if 和 while 都需要有一定的邏輯判定,而數(shù)學(xué)的邏輯學(xué)在這里就很有用了
數(shù)學(xué)運(yùn)算,這個(gè)和數(shù)學(xué)就一樣了
遞歸,也有一套自己的數(shù)學(xué)法則
而數(shù)學(xué)應(yīng)用的地方就更多了:
2d / 3d 矢量制圖繪畫
加密解密算法
視頻圖片壓縮算法
文件壓縮算法
物理引擎
那么學(xué)好數(shù)學(xué)有什么好處呢:
理解
比如現(xiàn)在流行的函數(shù)式編程,就是數(shù)學(xué)中的函數(shù)積分的概念,如果數(shù)學(xué)學(xué)好的話,函數(shù)式里面的調(diào)用,運(yùn)算,組合等概念就會(huì)非常容易理解了。
轉(zhuǎn)化
把一些算法轉(zhuǎn)化成代碼,像 RSA 的數(shù)學(xué)加密解密算法,都是先有理論,然后有人用代碼實(shí)現(xiàn)的。把數(shù)學(xué)算法看懂,轉(zhuǎn)化成可以應(yīng)用的代碼或是 API 。
優(yōu)化
一些算法其實(shí)用數(shù)學(xué)公式就可以完成,而不需要邏輯流程。最近的有一個(gè)例子就很明顯了,我編寫了兩個(gè)比特單位轉(zhuǎn)化程序,第一次是用 while 和 if 寫成的,第二次是用數(shù)學(xué)公式寫成的,數(shù)學(xué)的優(yōu)化特性就在里面顯示出來了。
邏輯
編程中充滿了邏輯,邏輯不好就無法編程。正是由于編程中邏輯很多很重要,所以好好學(xué)習(xí)數(shù)學(xué)的邏輯運(yùn)算,會(huì)對(duì)編程特別有幫助。因?yàn)榭梢酝ㄟ^運(yùn)算,簡(jiǎn)化你的邏輯條件,使得程序更高效,也可能更加容易讀懂,邏輯更加清晰。
分析
有了數(shù)學(xué)工具,可以進(jìn)行數(shù)據(jù)分析,進(jìn)行數(shù)據(jù)挖掘。當(dāng)然也可以對(duì)代碼本身進(jìn)行分析,分析其時(shí)間復(fù)雜度和空間復(fù)雜度,作為參考,進(jìn)行更好的代碼優(yōu)化。
原因:讀代碼不產(chǎn)生任何代碼,如果不能很好的理解現(xiàn)有代碼,又如何改進(jìn)代碼,修正錯(cuò)誤呢?
讀代碼是一件非常困難的事情,甚至可能比寫代碼還困難。很多人更喜歡自己重寫,也不愿意去讀別人的代碼。但是實(shí)際工作中,可能更多的是維護(hù)舊代碼,公司也沒有時(shí)間和資源去支持你編寫新的代碼。而學(xué)習(xí)編程,更多的是在讀別人代碼過程中去學(xué)習(xí)。
所以在編程過程中讀懂代碼卻真的是一項(xiàng)非常重要,卻容易忽視的能力。
讀懂自己過去的代碼
是不是有這樣的經(jīng)歷,代碼放6個(gè)月后自己去讀,可能都不知道當(dāng)時(shí)為啥這樣寫。最好自己慢慢調(diào)試,最終明白自己當(dāng)年寫這段代碼的思路是啥了。先讀懂自己過去的代碼,試著優(yōu)化重構(gòu),提高過去代碼質(zhì)量,就是提高了自己代碼能力了。
讀他人代碼思路
自己寫的都可能不記得思路了,那么從頭開始看別人寫的代碼就更加困難了。
讀別人代碼,更多的是了解思考,為什么別人那么寫,為什么這樣寫的好處。理清思路,畫出流程圖,可能會(huì)更好的理解他人的代碼。
學(xué)習(xí)他人的優(yōu)秀代碼結(jié)構(gòu)
學(xué)習(xí)別人的代碼結(jié)構(gòu),看看別人如何使用數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)模式的。這樣可以轉(zhuǎn)化成自己的知識(shí)。
讀懂他人代碼算法
如果別人是大牛,數(shù)學(xué)學(xué)得很好,很多數(shù)學(xué)公式,很多遞歸,如果自己沒有一定的數(shù)學(xué)基礎(chǔ),可能就暈了,這個(gè)時(shí)候,數(shù)學(xué)的基本功可能就會(huì)在這里發(fā)揮作用了。
破解糾錯(cuò)
如果讀懂了別人的代碼,發(fā)現(xiàn)代碼有問題,有漏洞,可以破解,可以糾錯(cuò),然后把漏洞通知作者,也是提高自己能力的方法之一。當(dāng)然在對(duì)付自己過去的代碼時(shí)候,也會(huì)發(fā)現(xiàn)破綻,只有讀懂了代碼,才能進(jìn)行修復(fù)或者改進(jìn)。
更多內(nèi)容歡迎關(guān)注 LeanCloud通訊微信號(hào)文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/112253.html
摘要:正是前人的努力,我們現(xiàn)在的編程才會(huì)如此的容易。讀懂他人代碼算法如果別人是大牛,數(shù)學(xué)學(xué)得很好,很多數(shù)學(xué)公式,很多遞歸,如果自己沒有一定的數(shù)學(xué)基礎(chǔ),可能就暈了,這個(gè)時(shí)候,數(shù)學(xué)的基本功可能就會(huì)在這里發(fā)揮作用了。 作者:caoglish原文鏈接:http://t.cn/RKcyGX3來源:知乎 查詢和閱讀文檔能力 原因:你使用編程來解決問題的時(shí)候,基本上最終的東西是代碼,但是編程的知識(shí)太廣,總...
摘要:正是前人的努力,我們現(xiàn)在的編程才會(huì)如此的容易。讀懂他人代碼算法如果別人是大牛,數(shù)學(xué)學(xué)得很好,很多數(shù)學(xué)公式,很多遞歸,如果自己沒有一定的數(shù)學(xué)基礎(chǔ),可能就暈了,這個(gè)時(shí)候,數(shù)學(xué)的基本功可能就會(huì)在這里發(fā)揮作用了。 作者:caoglish原文鏈接:http://t.cn/RKcyGX3來源:知乎 查詢和閱讀文檔能力 原因:你使用編程來解決問題的時(shí)候,基本上最終的東西是代碼,但是編程的知識(shí)太廣,總...
摘要:正是前人的努力,我們現(xiàn)在的編程才會(huì)如此的容易。讀懂他人代碼算法如果別人是大牛,數(shù)學(xué)學(xué)得很好,很多數(shù)學(xué)公式,很多遞歸,如果自己沒有一定的數(shù)學(xué)基礎(chǔ),可能就暈了,這個(gè)時(shí)候,數(shù)學(xué)的基本功可能就會(huì)在這里發(fā)揮作用了。 作者:caoglish原文鏈接:http://t.cn/RKcyGX3來源:知乎 查詢和閱讀文檔能力 原因:你使用編程來解決問題的時(shí)候,基本上最終的東西是代碼,但是編程的知識(shí)太廣,總...
摘要:天入門三門編程語言,有可能嘛,尤其是對(duì)沒有基礎(chǔ)的同學(xué)來說對(duì)于想學(xué)好的編程的人來說,無論從哪一門語言開始入手,語言的本身其實(shí)并不是我們最應(yīng)該的關(guān)心的,至少不是作為一個(gè)初學(xué)者首先關(guān)心的。 7天入門三門編程語言,有可能嘛,尤其是對(duì)沒有基礎(chǔ)的同學(xué)來說?對(duì)于想學(xué)好的編程的人來說,無論從哪一門語言開始入手,語言的本身其實(shí)并不是我們最應(yīng)該的關(guān)心的,至少不是作為一個(gè)初學(xué)者首先關(guān)心的。 網(wǎng)絡(luò)上,網(wǎng)友們爭(zhēng)...
摘要:天入門三門編程語言,有可能嘛,尤其是對(duì)沒有基礎(chǔ)的同學(xué)來說對(duì)于想學(xué)好的編程的人來說,無論從哪一門語言開始入手,語言的本身其實(shí)并不是我們最應(yīng)該的關(guān)心的,至少不是作為一個(gè)初學(xué)者首先關(guān)心的。 7天入門三門編程語言,有可能嘛,尤其是對(duì)沒有基礎(chǔ)的同學(xué)來說?對(duì)于想學(xué)好的編程的人來說,無論從哪一門語言開始入手,語言的本身其實(shí)并不是我們最應(yīng)該的關(guān)心的,至少不是作為一個(gè)初學(xué)者首先關(guān)心的。 網(wǎng)絡(luò)上,網(wǎng)友們爭(zhēng)...
閱讀 1836·2021-09-23 11:21
閱讀 697·2019-08-30 15:55
閱讀 831·2019-08-29 15:40
閱讀 528·2019-08-29 12:56
閱讀 3157·2019-08-26 12:00
閱讀 3552·2019-08-23 18:24
閱讀 2245·2019-08-23 17:08
閱讀 1636·2019-08-23 17:03