<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          關(guān)于編程學(xué)習(xí)的一些思考 | 歡迎投稿

          共 5804字,需瀏覽 12分鐘

           ·

          2021-06-28 15:07



          生物信息學(xué)習(xí)的正確姿勢(第三版)


          NGS系列文章包括NGS基礎(chǔ)、轉(zhuǎn)錄組分析 Nature重磅綜述|關(guān)于RNA-seq你想知道的全在這ChIP-seq分析 ChIP-seq基本分析流程單細(xì)胞測序分析 (重磅綜述:三萬字長文讀懂單細(xì)胞RNA測序分析的最佳實踐教程 (原理、代碼和評述))DNA甲基化分析、重測序分析、GEO數(shù)據(jù)挖掘典型醫(yī)學(xué)設(shè)計實驗GEO數(shù)據(jù)分析 (step-by-step) - Limma差異分析、火山圖、功能富集等內(nèi)容





          較早時發(fā)表的生物信息之程序?qū)W習(xí)闡述了我自己學(xué)習(xí)程序的歷程,這次學(xué)習(xí)下廈大統(tǒng)計系Dwzb同學(xué)關(guān)于編程的一些思考,關(guān)鍵兩點:輸入和輸出;即是程序的輸入和輸出,也是知識的輸入和輸出,更是腦力的輸入和輸出。讀進來的知識是別人的,能寫出的東西才是自己的。有出有進,才能細(xì)水長流,匯成江河。


          生信學(xué)習(xí)學(xué)的是什么?常識!


           
          作者: Dwzb , 公眾號Python愛好者社區(qū)專欄作者 ,授權(quán)轉(zhuǎn)載 
          廈門大學(xué)統(tǒng)計專業(yè)學(xué)生
          知乎專欄:https://zhuanlan.zhihu.com/Data-Analysis


          很久以來,我一直都有這樣兩個困惑:


          • 統(tǒng)計專業(yè)學(xué)習(xí)編程應(yīng)該系統(tǒng)學(xué)習(xí)還是遇到問題再找答案

          • 要不要寫博客?寫博客對自己的編程水平有多大提升?把自己的技術(shù)全部分享出去是不是會被超越?


          最近我才把這兩個問題徹底想清楚,而且這兩個問題的根源在同一個地方,寫在這里和大家分享一下。


          首先我來回答一下這兩個問題:


          • 第一,其實系統(tǒng)學(xué)習(xí)和現(xiàn)查都是可以的,兩條路徑都可以成為大神,并沒有哪條路徑是捷徑的說法,just do it! (PS:我個人傾向于系統(tǒng)學(xué)習(xí))

          • 第二,要寫博客,提升非常大,也不會被超越


          為什么是這個答案呢?因為編程語言掌握的好不好,完全在于你付出的時間多不多,會不會思考總結(jié),而不在于你學(xué)習(xí)的途徑。只有解決了足夠多的報錯,并進行總結(jié)歸納,你對這個編程語言才會有基本的直覺,這個直覺比任何顯式的知識都重要,但卻常常為人所忽略


          下面是我的理由。


          系統(tǒng)學(xué)習(xí)還是遇到問題再找答案


          我相信這個困惑是比較普遍的


          • 對于主張系統(tǒng)學(xué)習(xí)的人來說,他們沒有掌握這個用法是不敢直接去做項目的,總會覺得心里沒底,遇到什么bug解決不了怎么辦,所以他們總會在做之前先對這個東西有一個比較系統(tǒng)的認(rèn)識,我就是這樣。但是這又會帶來一個問題,那就是系統(tǒng)了解要花費大量的時間,而且學(xué)過的東西很容易忘記;最重要的是,即使系統(tǒng)學(xué)習(xí)過,做項目的時候還是會遇到之前沒想過的問題。

          • 對于主張遇到問題再找答案的人來說,他們會遇到找不到答案的情況,當(dāng)你在毫無了解的情況下,在搜索時有時連該輸入什么關(guān)鍵詞都不知道。還有一種情況是,明明有現(xiàn)成的方法,你卻不知道,自己造輪子還造不出來,陷入絕望中。


          兩種人都羨慕對方的優(yōu)勢,同時又畏懼按照對方那么做而產(chǎn)生的弊端,于是陷入迷茫。我在學(xué)習(xí)生信的系列書籍中一提到過我自己的一點理解。


          這時,我們?nèi)绻芤庾R到下面這點,就不會有迷茫的感覺了。


          要想成為其他人眼中的編程高手,無論走哪一條路,都是行得通的,但是都有兩個前提:要花費大量時間精力、要思考總結(jié)。


          相信更多的人會主張邊做邊查,所以先說這一點。我見過這樣做成為大神的人,也見過因為這樣而被一個小bug卡住半天的人,他們的區(qū)別在哪里?在編程上花的時間精力不一樣,對編程的興趣不一樣。


          • 大神遇到bug會搞清楚它產(chǎn)生的原因,保證以后不會再犯,每遇到一個bug都積累一次經(jīng)驗。甚至他們會通過這個問題思考出一些新的問題,完善這方面的知識體系,積土成山。長此以往,他們的知識體系也會非常完整,對待bug有自己的一套解決方案。

          • 而小白則只要能跑出結(jié)果不報錯就滿足了,他們甚至不知道結(jié)果是不是自己想要的,更不會去深究、擴展這方面的技術(shù)細(xì)節(jié)。編程對他們來說是噩夢,沒有bug就謝天謝地,無論做了多少項目,他們依然是小白(而且他們可能會逃避這種項目,做的也沒有大神多)。


          我們可以看到,大神良性循環(huán),小白惡性循環(huán),逐漸走到兩個極端。生活中的編程大神幾乎不會問編程問題,而小白問的問題你只要百度一下就能幫他找到答案了。這是肯不肯思考總結(jié)的差別、肯不肯花時間精力的差距。所以只要肯思考總結(jié)花精力,邊做邊查的弊端是可以完美解決的。


          接下來,我們來討論系統(tǒng)學(xué)習(xí)的情況。系統(tǒng)學(xué)習(xí)中也會出現(xiàn)上面提到的大神和小白。這點拿我自己的經(jīng)歷來說就可以了。


          我在學(xué)習(xí)python的時候,廖雪峰老師的教程我看過不下5遍,每一次我都不怎么敲代碼就覺得自己已經(jīng)會了,之后也沒去用,一段時間之后就全都忘記了,之后我又會去看一遍,然后又忘記,如此循環(huán)往復(fù)。直到后來我真的去敲代碼了,用的比較多了,才逐漸熟悉python的語法的。


          后來我有指導(dǎo)過女朋友入門python,也是看的廖雪峰老師的網(wǎng)站。她之前沒怎么接觸過編程,但是學(xué)python的時候每一行代碼都會自己敲一遍,現(xiàn)在已經(jīng)掌握的不錯了。不過從當(dāng)時她問我的問題上來看,我深刻地認(rèn)識到,正確的代碼就擺在那里,你還是會敲錯,新手總是會犯在我看來非常低級的錯誤,但是每個人都會經(jīng)歷那個階段。不去敲代碼,一個低級錯誤在你眼中可能就是不可逾越的高山。


          我舉這個例子是想說,系統(tǒng)學(xué)習(xí)的一個弊端在于你學(xué)的東西可能在短時間內(nèi)用不到,于是非常容易忘記。這種情況無法避免,但是這并不一定說明你的時間是浪費掉了的。如果你學(xué)習(xí)的時候只是看別人的代碼就以為自己懂了,那么你的時間確實是浪費掉了。但是如果你是邊敲著代碼,有時還會思考出一些新的問題,并去尋找解決方法的話,這個時間完全沒有浪費掉。下面我來解釋一下二者的區(qū)別。


          在我們敲代碼的時候,掌握的并不只是當(dāng)前代碼的知識,而且還有一些潛移默化的、你自己可能都沒有意識到的收獲。可以這么說,我們看教程、看幫助文檔學(xué)習(xí)一個個函數(shù)、語法、數(shù)據(jù)類型的時候,收獲最大的不是了解了這些東西,而是你寫代碼調(diào)試的過程。所以如果你只是在看,或者復(fù)制粘貼運行,沖著那些具體的“知識”去的,那就完全失去了這段時間學(xué)習(xí)的意義。


          我還是拿自己的親身經(jīng)歷來舉例。當(dāng)初我學(xué)習(xí)R語言時,幾乎看遍了dplyr data.table ggplot2等包的幫助文檔中的所有函數(shù),不僅運行了他們的示例代碼,而且不斷思考實際中會需要怎么用,實際中需要什么功能。讀者可以從下面3點中看出這樣做的好處


          • 我思考函數(shù)在實際中應(yīng)用的時候,經(jīng)歷了自己編寫、報錯、查找答案的過程。這個過程其實和其他人做項目時的過程沒有什么區(qū)別,只不過一個是項目中遇到問題,一個是自己給自己提問題,都可以起到鍛煉編程能力的效果。如果說做項目可以遇到自己想不到的問題,從而更大豐富自己的經(jīng)驗;那么我要說幫助文檔中的例子、函數(shù)中形形色色的參數(shù)經(jīng)常非常富有啟示性,可以達(dá)到開拓視野的作用。

          • 自己寫代碼、解決問題的過程可以讓這塊知識更難忘記,即使忘記也能留下比較清晰的痕跡,隨便查一下就可以馬上熟悉。

          • 第三個非常重要的點我稱之為信仰。你相信自己的代碼一定能正常運行,相信一個bug可以順利解決,相信看這個資源可以學(xué)到你想要的東西,這些是我所說的信仰,這些信仰是從編程中潛移默化獲得的,也是最有價值的部分。舉幾個例子

          1. 對代碼的信仰。假設(shè)你剛學(xué)會使用爬蟲抓取10個頁面的信息,現(xiàn)在讓你抓取1萬個頁面的信息,你心里虛不虛。你想可以把原來循環(huán)中的10改成10000,但是又不敢確定它能正常運行。運行一會兒發(fā)現(xiàn)果然報錯,然后你找到了解決問題的辦法,設(shè)置了代理ip,再啟動爬蟲,你心里還是虛的。果然,又報錯了,可能頁面增多解析時需要處理特例,修改后再運行.....心里虛就是沒有信仰的表現(xiàn),因為沒有成功實現(xiàn)過,就怕解決了一個問題又來一個,問題多了心態(tài)就崩了,尤其是在這個任務(wù)是很急迫的時候。

          2. 遇到bug時的信仰。在剛剛接觸編程的時候,我就聽說過stackoverflow這個網(wǎng)站是非常好的,幾乎你遇到的所有編程問題都可以再這個網(wǎng)站上找到答案。當(dāng)時我也去看了一下,看到那些寥寥幾個贊的回答,心中大不以為然。直到后來編程越來越多,我才逐漸認(rèn)識到,真的是幾乎所有問題都有人實現(xiàn)碰到過并在這個網(wǎng)站上討論。我認(rèn)為這是一種信仰的建立,長期查找才能建立起這些途徑信仰,這可以讓你遇到新問題時知道應(yīng)該怎么找答案,甚至相信什么樣的問題到哪里一定能找到答案,這樣你在遇到bug或者需要了解新問題時幾乎不會有焦慮感,對編程不會有挫敗感,反而有解決問題的快感。

          3. 資源的信仰。我們經(jīng)常看到,一篇文章列出了各種書籍、pdf、視頻資源,人們往往趨之若鶩,最后絕大多數(shù)都只是收藏下來再也不會翻看。其中的根本原因在于他們對這些推薦的資源沒有信仰,就算別人吹的天花爛墜,自己沒有親自看一下依然不會完全相信這是非常好的資源,沒有這種信仰自然就沒有驅(qū)動,不說當(dāng)前沒有學(xué)這個的需求,即使之后有這個需求也想不起來這個時間收藏過這個東西了。

          4. 博客的信仰。學(xué)習(xí)編程很多時候是看網(wǎng)上的博客學(xué)習(xí)的,長期接觸一些博客也會對一些博客產(chǎn)生信仰,比如愿意無條件接受某個公眾號的文章一定是精品。對于我來說,遇到一個bug我喜歡去stackoverflow這樣的問答社區(qū),當(dāng)需要系統(tǒng)掌握一塊知識(比如字符編碼)的時候,我就會去尋求博客。當(dāng)搜索引擎不能幫我挑選出優(yōu)質(zhì)文章的時候,我一般會搜“字符編碼伯樂在線”,因為在我的印象中伯樂在線的文章沒有一篇水文。看,當(dāng)你看到我這么說的時候,你肯定對伯樂在線有點好奇,但是你肯定只是想去確認(rèn)一下是不是真如我所說,甚至?xí)J(rèn)為我在打廣告,而不會建立和我一樣的信仰。而當(dāng)你親自看過才有可能建立這個信仰。


          系統(tǒng)學(xué)習(xí)對于建立信仰非常有幫助,因為這個時候不像做項目有個截止時間催著你,你可以盡情享受各種報錯和找答案的過程,逐漸培養(yǎng)自己的信仰。信仰也是一種直覺,是潛移默化的收獲,也是我們在討論競爭力時常常忽略的一點。但是獲得信仰的前提也是要主動去查、主動去試,花費時間精力思考總結(jié)。


          總結(jié)


          看完上面的論述后,再回過頭來看邊做邊查和系統(tǒng)學(xué)習(xí)的困惑,應(yīng)該豁然開朗了。無論哪種方式,要想在編程方面達(dá)到很高的水平,都需要付出大量的精力,沒有捷徑可以走,只有一直在寫代碼,一直總結(jié),才可以成為大神。區(qū)別只在于這個人是不是想成為大神了。


          而邊做邊查和系統(tǒng)學(xué)習(xí)這兩種學(xué)習(xí)方法則是因人而異,首先看你習(xí)慣哪一種,其次看你能不能接觸到項目。


          這一點擴展到是否要寫博客的問題上也很清楚了。


          以我自己寫博客的經(jīng)歷來看,寫博客能極大促進自己思考,解決以往會回避的問題。因為我以前學(xué)習(xí)可能會糊弄自己,但是現(xiàn)在我不能糊弄讀者,這應(yīng)該算是一種責(zé)任。


          以前我看別人博客學(xué)習(xí)的方式是,跟著博客的思路學(xué)習(xí)那些函數(shù)、用法等;而且學(xué)了一篇我就覺得掌握了80%的東西,就認(rèn)為自己已經(jīng)掌握了。


          而現(xiàn)在我看別人的博客從來不跟著他的思路,我會按照自己要寫的文章的思路進行學(xué)習(xí)。一個知識點我要寫成一篇文章,需要進行下面這些步驟


          • 首先模棱兩可的概念我需要查清楚了才能寫下來

          • 然后我會思考關(guān)于這個知識點我曾經(jīng)遇到過的所有有關(guān)的問題,全部列出來

          • 對于我列出來的點,可能有一些東西只是處于知道的層次我要查資料搞清楚

          • 然后關(guān)于這個知識點,我要看網(wǎng)上的文章都寫了哪些東西,是否有一些我之前沒有接觸到的點

          • 整理好所有的點之后,我要排列先后順序、組織哪些點放在一起講、用什么樣的示例等,還要用通俗易懂的語言講出來

          • 最后我寫出來的文章必須是網(wǎng)上能找到的教程中最全面,還要是能看懂的


          可以看到,我通過寫博客來掌握知識,就會力求掌握該領(lǐng)域100%的知識。這樣做我很明顯發(fā)現(xiàn),我學(xué)過的東西真的沒有那么容易忘記,而且復(fù)習(xí)起來很快,這應(yīng)該也是跑那些困難的程序帶來的信仰。


          所以說寫博客對自己編程水平的提升是非常顯著的。當(dāng)然,寫那種復(fù)制粘貼官網(wǎng)代碼,毫不重新組織思路的博客是沒有什么幫助的。


          最后只剩下一個問題:寫的這么辛苦的博客,被別人看了會被超越嗎?


          我相信這個問題的根源在于,覺得別人會比自己更快地學(xué)會這些知識,自己的努力完全就是在給他人做嫁衣。


          那么我們不談別人能不能看全你所有文章的問題,也不談他是不是走馬觀花不自己寫代碼運行,就看那些知道該怎么學(xué)的人非常精致地扒著你的博客來學(xué)的人。


          就算有人能做到這一點,他也不會輕易超過你,因為他這么精致地學(xué)習(xí),即使有你的博客做輔助,也是要花費大量的時間的,這個時間不亞于你當(dāng)初學(xué)習(xí)的時間。我們舉一個例子,你在博客中說如果這個參數(shù)換成某某,結(jié)果就大不相同,讀者自己嘗試。你這么寫肯定是嘗試過了,他如果不自己再嘗試一下,只是知道了,并不會產(chǎn)生和你一樣的對這個參數(shù)的信仰。這一點的外在表現(xiàn)是,他在跟別人說這個參數(shù)的時候,不會有自信說一定會得到這個結(jié)果,只敢說應(yīng)該會,因為他自己沒有試過,有時候相同的代碼在不同機子上結(jié)果就是不一樣(有時用的不同IDE就會不一樣)。


          更何況他沒有自己組織邏輯的過程,思考也不會比你更深入。你什么都在博客里解決了,也喪失了自己去查資料的機會,在信仰這方面的收獲就缺失了。


          最后還是那句話,顯式知識的學(xué)習(xí)不如潛移默化的提升更有價值,當(dāng)你的信仰建立起來,學(xué)什么知識都是手到擒來。編程能力是要靠大量時間堆積起來的。開始寫博客吧!(歡迎投稿)


          如果覺得本文有幫助希望點個贊支持一下!


          授權(quán)轉(zhuǎn)載自:Python愛好者社區(qū)

          Python


          往期精品(點擊圖片直達(dá)文字對應(yīng)教程)


          后臺回復(fù)“生信寶典福利第一波”或點擊閱讀原文獲取教程合集


          瀏覽 24
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  少妇被后入 | 在线a黄网站 | 亚洲色播爱爱爱 | 国产日韩一级片 | 夜夜骑青青草夜夜嗨 |