其實寫程式和小時候學寫字很像,小時候父母總是要我們多寫字,因為字如果不用寫的話是記不住的 (英文字也不例外),每個人自從開始閱讀及寫字以來,至少都累積了數百萬字的抄寫經驗了吧,所以除非沒有寫過或鮮少寫過的字不會以外,常用的 5000 多字應該都會寫。自己寫也有個好處,透過筆和紙可以輔助記憶,所以很多人都習慣在背書時用手抄的方式,多抄幾次就可以記起來了。不過,如果從一開始都沒有用筆寫過字的話,就算讀了很多書,也未必會寫字。
這篇文章是寫給有下列症狀的初學者看的:
- 看了很多書,但從沒有動手寫過一行程式碼,然後到處要人教的初學者。
- 在論壇上貼了一堆理由說要人教,人家給了參考文章和範例程式,但仍然學不起來的初學者(範例)。
其實寫程式和小時候學寫字很像,小時候父母總是要我們多寫字,因為字如果不用寫的話是記不住的 (英文字也不例外),每個人自從開始閱讀及寫字以來,至少都累積了數百萬字的抄寫經驗了吧,所以除非沒有寫過或鮮少寫過的字不會以外,常用的 5000 多字應該都會寫。自己寫也有個好處,透過筆和紙可以輔助記憶,所以很多人都習慣在背書時用手抄的方式,多抄幾次就可以記起來了。不過,如果從一開始都沒有用筆寫過字的話,就算讀了很多書,也未必會寫字。
寫程式也有相同的情況,當你買了一本初學用書 (即使是聖經本),但如果你只有從頭到尾翻過,叫你上機馬上寫一段 Hello World,可能你還是寫不出來,理由很簡單.就和學習寫字一樣,從來沒有寫過一行程式的人,就算閱讀了十幾本好書,但實務上機了還是寫不出來,當然你也可以說用硬背的,但程式語言的指令非常多,而且真正運用的時候,組合是千變萬化,而且程式基本上很難背誦,就算給你背下來了,那你要如何應付它的變化?但指令的用法是例外,那是寫程式的根本,也是專業之一,至少常用的部份要背下來。另外,透過實際上機的方式寫程式,有另一項特別的好處,當相同或相似的程式寫多了,會自然而然的在腦中建立指令的地圖,下次要用的時候很快就會想到了,這方法不限於指令,像是某些功能的特定作法,或是 Class Library 的操作等等都可以,久而久之,這樣的方式會慢慢的累積成感覺 (sense),一旦寫程式的感覺形成了,那也代表你的進階之路也不遠了。
但很多初學者往往都有一種毛病,就是跟別人問了一大堆推薦用書,買回家看後卻仍然學不好,其中有一部份原因就是不動手,實驗 (lab) 性的實作是讓功力進步的唯一法則,不論你是在抄人家的範例程式,或是思考自己的程式功能都一樣,而且實際寫程式學習的速度會比只看書學習的速度要快非常多,透過實際動手,也可以讓腦中的藍圖和對照表建立的更快,而這也代表你的功力提升了。 (PS: 我在前面的文章中提到一定要大量寫程式,也是為了這個)
所以,請務必記住:程式是用寫的,不是用看的。如果你也有這種只動眼不動手的學習心態,請趕快改掉,然後馬上上機打開你的程式工具來寫程式。
參考資料:
- 論壇的發問。
- 範例程式碼,是最佳的兩面刃。