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