2023夏季程式學習

空閒生活除了追劇讀雜書慢跑,好像也得來搞個什麼看起來很正經高尚的活動,才麻痺自我感覺良好地過得不至於太廢。經過幾年摸索,有二件事可能最適合孤僻的我:一是學樂器二是學電腦程式語言,而且一年四季的時間分配剛好是以冬春/夏秋為界。無法同時並行是因為能力天賦有限,在幾番來回試驗實作後的推論是:溽熱夏季適合學習程式;舒爽冬天則宜與音符為伴。

話說去年夏天嘗試著再度挑戰 CS50,最終止步在第八週左右(特別是習題寫不出來)。不過今年夏被在練琴又遇上瓶頸之際,自 7月底又重來再試著學 python。這回感覺自己比之去年還是稍有進步,不必全部重頭來過,因此在挑選線上課程時,決定從中級程度入手。

一開始上的是《Intermediate Python for Non-Programmers》,講師借由複習 python OOP, try exception, function, file read/write 等子題的重點複習,引領進行 API, Web Scrapping, Todo App 等實作,我覺得受益不少,也建立出興趣和信心。

再接下來是開始利用 codewars 反覆練習各種基本技巧,一個月下來大概等級 7~ 8 kyu 的習題都能攻克,但對更進一步的難度則反映出自己在演算法知識、程式安排設計觀念經驗的不足。因此從九月份開始註冊學習 Udemy 上頗受好評的 Python 中級課程 —— Python 3 Deep Dive

這套線上課程看起來叫好叫座,除了 Part One 還有另外三部曲,全部加起來近百支講座影片時間估計要花上 150小時,實在讓人有點卻步。目前上了二週左右,進度來到 Part One Section Three,它的課程內容偏向介紹底層的 python 結構原理,協助學員了解釐清許多資料類型與功能運用異同之美。相較坊間大多數課程重在讓學習者急忙速成地模仿弄出”實作”的東西,Deep Dive 則反覆深入地討論為什麼會這樣為什麼會那樣。例如我以前很不解為什麼要知道 memory allocation,解題用最樸素土法就好了,反正運算過程是電腦去跑,答案結果正確就OK了,時間長速度慢不要緊吧?但隨著 codewars 習題越作越多,再觀摩別人的解法,開始意識到:不行,我必須想辦法升級功力,不然始終只能停留 7~ 8 kyu 無法進步。

過去自己在練習程式問題時,往往會為符合答案甚致為了”遷就”各種極端案例,代碼寫得很支零破碎歪七扭八。但這兩三週接觸 Deep Dive 下來,慢慢有點體會到代碼執行結果會和自己原本預期之間落差的原因到底是什麼,有些是 python 本身底層設計的邊界,有些是電子位元0與1的區間,當然更多是自己的天真無知。如果一直是半調子地不理解不知道這東西,寫出來的東西當然就會東洴西湊改來改去。

後來發現有台灣網友召集糾伙一起學習,還有人好心地分享自己的上課筆記 https://vip.studycamp.tw/c/python-deep-dive/98 且看自己這回能堅持多久。