The day the routers died (2)
當在車上的上網速度比在家裡還快時.... 搭配 Google Android 發佈影片,更明顯感覺世界真的在變化
當在車上的上網速度比在家裡還快時.... 搭配 Google Android 發佈影片,更明顯感覺世界真的在變化
很久很久以前 我還能記得 當我的筆記型電腦能在別處連線...
竊以為周蟒中文程式語言的四不一沒有是:
一不:不強求完全的中文編程
過猶不及,絕大多數的程式語言是使用英文。周蟒中文程式語言的目標是協助使用者透過中文程式語言學習程式語言,進而接觸世界上大部份的程式語言,而不是脫離現實世界。
二不:不用中文數字或運算符號 (加,減,乘,除 +, - ,*, /...)
程式語言中使用到數字與運算符號,並不僅只於常用的整數或四則運算符號。
三不:不用文言文
程式語言是人與電腦溝通的語言,電腦只懂得平鋪直敘的邏輯。所以我們也不用掉書袋,直接用白話溝通。
四不:不用中文標點符號
由於周蟒是完全兼容 Python 程式語言的中文程式語言,而將中文的標點對應到英文標點的歧異不少,反而會造成寫作與辨識的困擾。統一使用英文標點並不影響閱讀,對以後學習其他英文程式語言也不致造成額外障礙。
一沒有:沒有大括號 {}
周蟒是 Python 程式語言加上中文支援的中文程式語言,而 Python 程式語言本身就是使用結構化的程式區塊來代替以大括號判定程式區塊的語言。也符合中文使用習慣。
pycon 2007 裡的 presentation 提到測試金字塔,由下而上將測試歸為三類:
單元測試,功能測試,應用測試。
程式測試需要很多的單元測試,一些功能測試,少量的應用測試。
具有某個程度的單元測試可以保證代碼質量。
周蟒是我第一個包含完整測試的開源專案。然而周蟒也不是一開始就寫了測試用例.
我的經驗是 "先能跑,再求好"。在一開始先讓功能能跑,之後再想法改善或改寫。
周蟒改善或改寫的過程中,unittest, doctest (單元測試,功能測試), 與 example test (應用測試) 就是主要保證功能穩定的方式。
我覺得加入測試是我在開發周蟒過程中做出的最好決定。 當周蟒程式超過 15k 後, 已經進入難以將整份 code 短時間一次 Review 的階段。 這時我決定花時間為周蟒加入一部分測試用例。 我發現這麼作提昇了整個小程式的 ' 解析度 '-- nosetests 的報表告訴我:每個簡單的功能都運行。
當我在周蟒加入了某數量的測試用例後,周蟒的開發方式就有了質變。
由於可以提前由自動測試獲得功能結果,讓周蟒的開發方式變得更大膽 , 我可以放心地大膽試驗各種新功能,並隨時能透過測試確認新功能對架構帶來的影響。 也得以在早期版本中即輕鬆地透過大規模的重構來增加架構的彈性。
用幾次就丟的程式 / 腳本當然沒加入測試的價值. 然而要維持一份可維護的程式,加入測試是很好的方式.
Guido 最近在他的 Blog 發佈一個文章連結: "Python: Myths about Indentation", 這篇文章很好地解釋了對 Python 語言縮排的迷思。