DEV Community

Neil
Neil

Posted on

[觀念] 把 Python 教材當成課本在讀並不會使你打好程式基礎

你在查字典的時候會一頁一頁研究每個字來學習語言?當然不會。

你在看雜誌的時候會一頁一頁翻以防漏掉任何細節?當然不會。

你在賣場裡找尋特定的商品時,會一排一排的查看每一條走道嗎?當然不會。

那麼你在學習Python時為何拿起書本就是一章一章的往後讀?為什麼你要仔細研究每一個容器裡的每個細節?為什麼你要把書本上的每一個範例程式都用手動的方式敲進檔案裡執行?

然後你得到的結果是,有時候學一學一個下午就過去了,但只學會一個觀念或只搞懂一個題目,效率極低。導致耗費太多時間在這上面而無法做其他事,隔天就只會想耍癈去忙別的事。

或者有時候明明覺得程式碼打的跟書本上、影片裡的完全一模一樣,但還是得到很多錯誤,修正很久整個心情都很煩躁,發現自己對寫程式漸漸失去耐心。

其實面對書本或網路上的影片,我們在心中要把它們當作工具書來看待,就像是你面對字典的態度一樣。目的在快速找尋我們想要的部分,即時地應用在我們想解決的問題上,結束後就立刻把它們收起來。

所以在學習時我們所採取的策略就是要去概覽每一章節的主題和架構,知道它們談論的範圍,對於每一項語言的特性有個大致上的理解即可。就好像新認識一個朋友一樣,你會先產生對他的第一印象,知道他是外向的還是內向的?打扮是新潮還是保守?興趣為何?等後來深交之後便會慢慢認識其他令你感到意外的面向。

我們學習語言時也跟這個過程很像,一個像Python這樣包山包海的程式語言,程式庫這麼多這麼龐大,我們不可能一次就將它學會。就好像你第一次認識這個朋友時,如果你連珠炮式的一直問他問題,想充分認識這個人,那麼你一定會把他嚇跑!

但是你說,這樣子我好像沒有學到任何東西的感覺呀!?沒關係,因為一本書它的目的是儘可能的把你會遇到問題的面向全都列給你看。你在正式工作時所會用到的通常只是冰山一角,不會全都用上。如果你花了很多時間在用不到的主題或細節上,那麼將會浪費你許多寶貴的時間。

我建議的讀書方式是,當你拿起一本書時只需快速的瀏覽前面的幾個重點章節,像是變數、條件、迴圈、函式⋯等基礎知識,而且只用「看」的就好,不需練習、不需筆記,有個印象就好,然後就開始寫程式。

當你寫程式時,你會需要一些解決問題的工具和方法。這時你就可以憑印象來回想剛才所讀的章節裡,有哪些可能的工具和方法可以幫助我解決眼前的這個問題?有哪個範例跟這段程式碼很像可以拿來參考的?這時因為你的需求明確,你回頭去翻找時就會很有效率,而且你的大腦會啟動特定的模式來加強本次的學習,不但加深印象,也能融會本次所學到的技巧。

最後,才是筆記時間。花個少少5分鐘的時間、不用多,只需5分鐘!把你這次所學到最重要的事情記錄下來,像是心得、技巧、方法。如果可能,萃取一小段你覺得最重要的程式碼,大概10行以內,以供未來快速參考使用。這樣你不旦學會了寫一個小程式,還能建立個人程式的知識庫,長久下來寫程式的速度也會愈來愈快,解題能力也會愈來愈強。

現在你知道學習Python時看書的方法,它不像以前在學校學習數學、歷史那樣,它們是一章一節環環相扣,前面的基礎沒打好之前不能往下一章前進。Python 不是這樣的,或者說任何程式語言都不是這樣的。你所要改變的是觀念,把Python的書本當成字典或手冊來看待,遇到不會的地方才跳進去查找。

你還會想像以前那樣,十年寒窗苦讀,想盡辦法把書本上的字句都刻進腦海裡,像苦行僧那樣一字一字的敲進範例程式,以為這就是增加程式功力的唯一方式?結果花了幾個月都還卡在前面的基礎章節?然後疑惑為什麼寫程式這麼難?

還是你會開始改變觀念,將書本或影片上的範例當作是工具箱,依照需求快速精準的找到所需的片段,以騰出更多時間來學習其他技能?

如果這個方法有幫助到你、有解決你的痛苦,也歡迎在下方留言讓我知道!

Top comments (0)