【Python】零、學習經驗分享

0 序

本文緣起於和一位同事交流Python中,希望我能開個課程分享下心得和經驗,正好我也想整理下自己所學的資料和代碼工具,就決定梳理幾篇文章。

我畢業於廈門理工學院數學與應用數學(統計方向)專業,大一下開始接觸編程,相當於花了一年學習C語言,一年學習C++,一年學習算法,有參加過ACM算法競賽,最好成績是在上海和隊友拿到亞洲區域賽銅獎。大學畢業後在中國鐵塔做了半年Excel,用VBA做數據自動化處理。2016年回到母校和計算機學院的王大寒老師一起做模式識別方面的科研工作,主要是使用C++,有時候也要用到Matlab,2017年上半年在北京中科院自動化所訪問學習。因爲很多原因,退出科研領域,2017年8月來快樂學習做LaTeX。
很快我就發現LaTeX工作中存在非常多可以自動化的地方,就邊學Python3邊做起相關自動化工作,持續到現在。

我自認爲技術水平介於初級與中級之間吧,還有英語等等方面不足,在撰寫本文時很多也是現學現賣。在ACM和中科院,見識過很多大牛,真的是人外有人,天外有天,我們還是要stay hungry stay foolish。也正因爲一個人的力量是渺小的,經歷和見識總是有限,經常會有思維盲點的存在,旁觀者清,在這裏也歡迎大家對文章的各種補充、建議和批評。

故不登高山,不知天之高也;不臨深溪,不知地之厚也;不聞先王之遺言,不知學問之大也。

因爲我的主要工作是LaTeX的原因,潛意識裏會比較偏向文檔處理方面的技術介紹。圍繞Python相關技術,也會分享一些普適性的學習方法理論。文章僅代表個人觀點,後文不再累述強調,會直接描述見解,不再加詞綴“我認爲”。

作者:陳坤澤

郵箱:[email protected]

1 學習動機

我的學習觀:
在這裏插入圖片描述

凡事皆有因緣,有的人是對Python有興趣,想了解不同語言之間的區別,感悟編程之美而來學習Python,用來做一些自己覺得有趣的事情;有的人是看好Python的前景,爲了事業,更廣闊的發展出路而來學習Python;有的人只關心某個具體問題,想用Python儘快寫一個自動化腳本解決問題。

動機不存在分別,大家的目的不同罷了。但基礎、目標不同,適合的學習資料和方法,是有區別的,不存在最好的資料和方法,就像不存在最好的編程語言,適合自己的就是最好的。就算是同一個人,在不同的時間點目標也可能會產生變化,具體問題具體分析,我們要學會與時俱進,靈活變通。

區別和分別:萬事萬物都是有區別、差別的,這是緣起上的不同;分別是指人內心增加出來好壞高低等觀念、概念。

任何選擇都有得失,Python有優點也有缺點,我們要做的不是要把Python變完美,而是通過對Python充分的瞭解,發揮其特長,避開其不足。

選擇的過程,可以把眼光放長遠一些。有些事情半衰期很短,例如打遊戲,可以很快就得到收益,非常爽,但是過幾天這種感覺就消逝了,並不能帶來長遠的利益。而學習Python,當下的收益並不大,但這種收益會持續很久,不斷的在你的人生中給你的工作學習帶來便利。(參考文:你做了多少高收益值、長半衰期的事?
[外鏈圖片轉存失敗(img-cpcrvnO9-1565403240754)(http://i1.fuimg.com/582188/c3e0c52fcae3ae26.png)]

半衰期短收益低的事讓別人做,例如把一張圖片的文字公式內容錄出來。半衰期短收益高的事自己找兼職做,例如排版其實比錄入容易的多,相對市場價錄入一頁13元排版一頁6元,排版性價比太高了。而我們自己,應該是把精力放在管理決策,技術研發上。一件事情手動做可能只要3個小時,寫自動化程序要一週,但以後所有類似的問題都可以通過程序解決了,遠比一直都花3個小時去解決,長遠累積效益高的多。我們也不要小看一些半衰期長但收益低的事,多瞭解一些學習方法、人文素養,看起來沒有直接帶來什麼利益,其實長遠的潛移默化所帶來的價值是不可估量的。

2 獲取資料

主要途徑有:

  1. 百度、谷歌:
    • 百度能比較方便地搜索到中文資料,學習門檻較低,對於英語不好的可以優先嚐試,先對某個陌生知識點有基本瞭解,再用谷歌搜索英文資料,往往會更權威系統,而且很多偏僻技術問題,只有通過英文搜索才找得到答案。
    • 要注意使用一些搜索技巧,能大大提高精度:
      [外鏈圖片轉存失敗(img-0EOS7mfK-1565403240754)(http://i1.fuimg.com/582188/dd21b5cb5ea22afd.png)]
    • 有個小技巧,大家可以先搜“圖片”而不是網頁,通過看圖片來進入相關網頁,往往找到的資料質量更高。很多知識其實一圖勝千言 ,能畫出一張高度總結歸納圖片的文章,質量都不會太差。
      [外鏈圖片轉存失敗(img-idQF4cJn-1565403240755)(http://i1.fuimg.com/582188/19dd349730faf5b9.png)]
  2. 垂直網站:一個行業發展成熟,一定會有相應的垂直網站,甚至APP。在相關網站上去找資料,會比百度谷歌效率高得多。
  3. 博客、書籍、官方文檔:
    • 我們可能只是因爲某個小問題而搜到一篇博客,如果發現博客質量非常高,一個作品體現了其作者的人品,可以試着去了解下作者的其他作品,往往也有很多非常優秀的內容值得一讀。公衆號、論壇、網站等等也是同理,這個道理看似簡單,但我們大量的優質學習資料來源往往都是通過這種途徑獲得的。
    • 博客一般知識點比較零散,要系統的學習的話最好是看書,看書也比較容易制定學習目標,堅持下去,對知識點也有系統的認識。有些網站“博客”是有目錄整理,體系規劃的,也可以理解爲是“書籍”類資源。
    • 官方文檔:很多官方文檔是開發者寫的,他們對底層實現原理是最瞭解的,一些偏僻的bug、知識點,往往只有官方文檔纔有寫。
    • Learn X in Y minutes,這個網站我翻譯爲“21分鐘從入門到放棄”,有各種編程語言、軟件的快速入門資料。
    • 伯樂在線github,有各種編程語言的擴展庫、書籍資料大全。
    • 有些資料找不全、找不到,還可以嘗試淘寶
  4. 音視頻等多媒體資源:
    • 音頻:網易雲音樂有些電臺,平時聽一些科普類、歷史類訊息可以瞭解相關文化。IT工作人士平時眼睛用的比較多,可以睡前閉目養神聽段音頻。
      • 劉延棟 軟件那些事兒,有相應同名公衆號可以看文本。作者比較不正經,廢話較多,不過這樣更接地氣吧~
      • 吳京平 科學史評話
      • 風格非常多,你喜歡什麼類型的基本都搜的有,不要侷限於我推薦的技術資料。網易雲課堂等很多網站也有音頻學習資料,可以科學規劃自己的時間,避免用眼疲勞
    • 視頻:
      • 現在有很多收費教學視頻,我的建議是先看一些免費視頻,有需要再買一些百元的課程,千元的還是慎重,其實學習主要還是靠自己花時間下去,而不是投入了多少錢和收集了多少優質資料。
      • 推薦可以變速播放的網站,例如慕課網B站。加速播放往往對我們的消化吸收沒有太大影響,特別是基礎好的,而且一個視頻如果要重複看的話,加速功能會帶來很大的便利。
      • 網易公開課網易雲課堂上面優質課程也是挺多的。
        • 朱丹 超級搜索術,怎麼搜索資料、整理資料。
        • 谷小城, 表格之道,站在數據規範化的角度教Excel,很多Excel問題根源本質是數據格式不規範。
      • B站也有很多科技、學習類視頻的,並不只是二次元~~B站的用戶比較有趣,邊學課程邊看彈幕挺有意思的,讓學習過程充滿樂趣,而且無廣告。同類資源B站有的話我都是優先在B站看。推薦一些不錯的up主:
    • app:例如有很多英語學習的App,ipad也有一個“算法動畫圖解”的應用用來學習數據結構與算法,非常生動形象。
  5. 社交途徑
    • 如果身邊有牛人,直接向牛人請教要怎麼學習當然是最快的~~不過要記住別人只會指導一個方向,具體的學習都是靠自己的。
    • 如果身邊沒有,可以瞭解該領域內的牛人,通過郵箱、知乎、微博等等手段去聯繫,一般真正的大牛脾氣都很好的,只要你拋出的問題是有價值的,都會很熱情的回覆指導。
    • qq羣等社交平臺,也能詢問一些比較偏僻網上很難找到資料的問題。一些qq羣文件有些資料積澱也可以閱讀了解。

總之,只要動機足夠強烈,方法總比問題多,總能找到解決問題需要的資源的,不要輕易說“沒有資料,沒辦法”。

3 學習方法

吾嘗終日而思矣,不如須臾之所學也;吾嘗跂而望矣,不如登高之博見也。登高而招,臂非加長也,而見者遠;順風而呼,聲非加疾也,而聞者彰。假輿馬者,非利足也,而致千里;假舟楫者,非能水也,而絕江河。君子生非異也,善假於物也。

這裏的學習方法主要是指一些工具、以及固定的套路、學習模式,跟第2步的“獲取資料”和第4步的“整理分享”有一定重合,介於“信息輸入”和“信息輸出”中間的“信息處理”。不同的學習任務,需要的工具神器不同(Python編程需要給力的IDE開發調試工具,LaTeX需要文本差異對比、文件整理工具),就不展開,簡單說一些較通用的。

  1. OneNote,騰訊文檔(有目錄欄方便系統性文章書寫),有道雲(可以插入附件)等筆記軟件。喜歡用markdown寫筆記的,圖牀可以考慮貼圖庫
  2. 找資料的時候,我一般習慣先在虫部落快搜找有沒有相關的微信文章、知乎答案,這裏的文章一般比百度出來的質量好些。以及搜關鍵詞相關的圖片,看到比較直觀易懂的圖片,再索引到對應網址,這類資料一般圖文並茂,更便於理解。大概瞭解中文資料情況後,再搜索閱讀英文資料和讀官方文檔。
  3. 百度翻譯等翻譯工具:能自動識別輸入的是中文還是英文,還支持複製圖片,自動識別裏面的文本哦,也是一個很好用的OCR工具。還有有道詞典軟件,chrome瀏覽器可以擴展翻譯插件等,都是閱讀英文資料時的利器。
  4. 堅果雲(免費版功能已經足夠大部分普通用戶的使用),可以在多人、多臺電腦、手機、平板等實時同步數據。可以把桌面同步了,這樣在不同電腦幾乎可以無縫銜接工作。
  5. 學習一門新語言的時候,我會進行 對比學習,思考同一個功能在不同編程語言裏面分別是如何實現的,例如用自己熟悉的c++去理解py代碼:
    [外鏈圖片轉存失敗(img-6yTumACH-1565403240755)(http://i1.fuimg.com/582188/00eee0f0a27fdbcb.png)]
    世間萬物很多道理都是相通的,不僅是編程語言之間,其實語文、英語、數學符號、編程語言都是關於信息溝通傳遞的學問。我們學過的每一個技能都不會白學,抓住知識背後的本質規律,以不變應萬變,通過類比能更好地理解新事物。有個TRIZ,是關於創造發明的內在規律和原理的方法學,有興趣的可以去了解下。
  6. 最好的休息,不是睡覺,而是切換大腦。可以試着在學習與運動,理科和文科,輸入和輸出等不同的狀態間切換。

4 整理分享

4.1 用自己的語言重新組織

資料收藏誤區:只囤不用,久積成病。還不如重新上網搜索。
一定要對資料用自己的語言重新組織。有個非常好的鍛鍊自己知識歸納,語言組織,記憶力的方法,就是每半天和朋友喫飯的時候,互相分享這半天在做什麼,講到能讓對方聽懂。朋友職業沒有限制,只要對方願意聽,都不是障礙。
[外鏈圖片轉存失敗(img-gsrizi8T-1565403240756)(http://i2.tiimg.com/582188/17f511ced5efa872.png)]

4.2 分類整理

[外鏈圖片轉存失敗(img-Mc4KK530-1565403240756)(http://i2.tiimg.com/582188/31bb81b9a705fa36.png)]
學習工作中遇到的問題,好似是獨立零散的一個個點,其實都是有邏輯因果關係的,用線串起來,就會形成一個很有條理的面、立體,這就具備了宏觀、系統思維。

藉助思維導圖軟件進行系統分類整理,可以參考知乎該問題個人知識管理如何做好分類管理,便於後面的學習利用?中李石的回答。

通過分類、歸納整理,雖然看似沒有原創的新發現,但博採衆長,我們就能做到:

青,取之於藍,而青於藍;冰,水爲之,而寒於水。

4.3 寫筆記!寫筆記!寫筆記!分享筆記

這個我就不多說什麼了,劉未鵬大大下述兩篇文章總結的非常詳細了,強烈推薦很多不喜歡寫筆記、分享筆記的夥伴認真讀一下。劉未鵬有一本《暗時間》,是講學習方法的,也十分推薦一讀。

  1. 劉未鵬,爲什麼你應該(從現在開始就)寫博客,BetterExplained,2009.2
  2. 劉未鵬,書寫是爲了更好的思考,BetterExplained,2009.2

4.4 眼前的終點只是另一個未知的起點

整理歸納,並寫筆記分享後,似乎這個知識點就學完了。其實我們要真正理解一個概念,往往是螺旋式上升,反覆迭代的一個過程。一本好書,每一次讀都會有新的收穫。不要想着什麼東西都只學一遍就夠了。

另一方面,當我們解決一個問題後,往往會發現背後蘊含着更多的問題和疑惑。這是一個循環,我們又再次回到第1步的“學習動機”。一個好的問題,可能會讓我們與更多志同道合的朋友相遇,會發現更多優質的學習資料和工具神器,會發現這個世界更多的美。科技不是線性發展的,未來不會在過去的延長線上,而是技術爆炸,我們人的學習能力、技術能力、精神世界又何嘗不是“爆炸”式地成長呢?

我並不算很有天賦,用了一年來學C語言,一年學習C++基礎。但是我大四學LaTeX的時候,只用一週讀完了劉海洋的書,工作的時候又用一週學會了Python的基本語法。

所以,我們也不用畏懼問題,學無止境,活到老學到老。稍事整頓,思考我們爲何選擇這條路,迴歸初心,踏上新的旅程。

Reference

  1. 荀子,《勸學》,先秦
  2. 朱丹,超級搜索術,網易公開課,2018.5
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章