依據我有限的生命經驗,以下是我所看過的,對於程式有興趣的新手,常常忽略掉而沒有培養 (訓練) 的三種能力。
1. 英打能力
一個人有沒有程式自學能力,我認為是建立在有沒有英打能力這件事情之上。看過許多人對程式有興趣,但是就是不練英打,寧願看著鍵盤打字,或是兩隻食指敲打鍵盤。
這是一個很基本的效率問題。我如果能在單位時間內打英文的速度比你快,就代表著我的學習速度比你還要高。當你看著 documentation 還在打 hello world 的 print 的時候,我已經收到回饋,往下一個部分邁進了。
推薦使用 typingweb.com 練習,這個網站幫你規劃好如何練習打字,只要照著上面的單元一個一個練習,一個禮拜就能收到成效。這個投資是最基本的,也是收益最大的一個。
2. 閱讀英文 Error message 的能力
新手第二個需要訓練的能力,就是閱讀英文 error message 的能力。這邊的 error message 泛指從 compiler 或是 interpreter 發出的任何錯誤訊息。
例如說這段程式碼發出的訊息:
1 2 3 4 5 |
>>> d = {‘foo’: 10, ‘bar’: 20} >>> d[‘tar’] Traceback (most recent call last): File “<stdin>”, line 1, in <module> KeyError: ‘tar’ |
代表著 tar
這個 key 不存在。
或是這個:
1 2 3 4 5 |
>>> l = [1, 2, 3, 4, 5] >>> l[5] Traceback (most recent call last): File “<stdin>”, line 1, in <module> IndexError: list index out of range |
代表 index 5
超出範圍。
或是:
1 2 3 4 5 6 |
main.c: In function ‘main’: main.c:2:5: warning: implicit declaration of function ‘printf’ [–Wimplicit–function–declaration] printf(“%d\n”, 10); ^~~~~~ main.c:2:5: warning: incompatible implicit declaration of built–in function ‘printf’ main.c:2:5: note: include ‘<stdio.h>’ or provide a declaration of ‘printf’ |
代表 printf 沒有顯式宣告。
這些錯誤訊息都是維護這個語言的高手們精雕細琢出來的 (跟你保證絕對是這樣,連一個字會出現歧義都要打起來了),目的是要能夠清楚的告知使用者錯誤的地方在那邊。如果真的看不懂,把關鍵字句丟到 Google 上面,通常就能夠得到答案。
3. 閱讀英文資料的能力
最後一個基礎能力就是:閱讀英文資料的能力。
前面提到的 error message,拿第二個當例子丟到 Google 裏面的話會得到這樣的結果:Search : Python IndexError: list index out of range
- Python: IndexError: list index out of range Error – Stack Overflow
- Python: IndexError: list index out of range – Stack Overflow
- python – IndexError: list index out of range – Stack Overflow
- 陽光宅男的擴音器: 用Python也能輕鬆玩自然語言處理(1.2)
- IndexError: list index out of range | Codecademy
- 14/19: “IndexError: list index out of range” 2 篇文章 2015年6月2日
- Help! Error: list index out of range 2 篇文章 2014年5月28日
- IndexError: list assignment index out of range 2 篇文章 2014年5月28日
- python2.7 IndexError: list index out of range · Issue #14 · openai
幾乎都是英文資料,這就是為什麼要學會閱讀英文資料,不必全部都懂,但是至少要讓自己習慣查詢以及閱讀英文資料。許多第一手的資料與報導也是英文先出的,愈逃避英文資料,就代表跟現況愈脫節。
Leave a Reply