Skip to main content

· 2 min read

竊以為周蟒中文程式語言的四不一沒有是:

一不:不強求完全的中文編程

過猶不及,絕大多數的程式語言是使用英文。周蟒中文程式語言的目標是協助使用者透過中文程式語言學習程式語言,進而接觸世界上大部份的程式語言,而不是脫離現實世界。

二不:不用中文數字或運算符號 (加,減,乘,除 +, - ,*, /...)

程式語言中使用到數字與運算符號,並不僅只於常用的整數或四則運算符號。

三不:不用文言文

程式語言是人與電腦溝通的語言,電腦只懂得平鋪直敘的邏輯。所以我們也不用掉書袋,直接用白話溝通。

四不:不用中文標點符號

由於周蟒是完全兼容 Python 程式語言的中文程式語言,而將中文的標點對應到英文標點的歧異不少,反而會造成寫作與辨識的困擾。統一使用英文標點並不影響閱讀,對以後學習其他英文程式語言也不致造成額外障礙。

一沒有:沒有大括號 {}

周蟒是 Python 程式語言加上中文支援的中文程式語言,而 Python 程式語言本身就是使用結構化的程式區塊來代替以大括號判定程式區塊的語言。也符合中文使用習慣。

· 3 min read

pycon 2007 裡的 presentation 提到測試金字塔,由下而上將測試歸為三類:

單元測試,功能測試,應用測試。

程式測試需要很多的單元測試,一些功能測試,少量的應用測試。

具有某個程度的單元測試可以保證代碼質量。

周蟒是我第一個包含完整測試的開源專案。然而周蟒也不是一開始就寫了測試用例.

我的經驗是 "先能跑,再求好"。在一開始先讓功能能跑,之後再想法改善或改寫。

周蟒改善或改寫的過程中,unittest, doctest (單元測試,功能測試), 與 example test (應用測試) 就是主要保證功能穩定的方式。

我覺得加入測試是我在開發周蟒過程中做出的最好決定。 當周蟒程式超過 15k 後, 已經進入難以將整份 code 短時間一次 Review 的階段。 這時我決定花時間為周蟒加入一部分測試用例。 我發現這麼作提昇了整個小程式的 ' 解析度 '-- nosetests 的報表告訴我:每個簡單的功能都運行。

當我在周蟒加入了某數量的測試用例後,周蟒的開發方式就有了質變。

由於可以提前由自動測試獲得功能結果,讓周蟒的開發方式變得更大膽, 我可以放心地大膽試驗各種新功能,並隨時能透過測試確認新功能對架構帶來的影響。 也得以在早期版本中即輕鬆地透過大規模的重構來增加架構的彈性。

用幾次就丟的程式 / 腳本當然沒加入測試的價值. 然而要維持一份可維護的程式,加入測試是很好的方式.

· 2 min read

最近 mozilla 宣佈要採用 水銀 (mercurial, hg) 當作他們未來的版本控制系統.

我試了一下發現 mercurial 有用 twist 提供內建的 web server, 想用版本控制時再也不用先搞定 apache 設定了,Python 真是好呀

水銀分散式版本控制系統的使用概念如下:

0. 開個檔案夾 ([origin]), 開始 coding. 1. 告訴自己這個檔案夾裡放的是版本庫 (hg init). 2. 將原始版本中的所有檔案放進版本庫 (hg commit *). 3. 怕接下來的修改把原始版本改糟了,所以另外複製一份來改 (hg clone [origin][dst]). 4. 在複製檔案夾上改一改,覺得弄完一小階段了,先大致查看一下修改了些甚麼 (hg status), 然後儲存修改 (hg commit). 5. 重複修改的過程. 5.x 哇!遇到錯誤了怎麼辦?沒關係,用 ' 快速鍵 ' 將修改復原 (hg revert [id]). 6. 改得滿意了,將修改的東西存回原始檔案夾 (hg push [origin]). 7. 整理一下原始檔案夾 (hg update), 確認修改沒衝突.

其他應用

  • 開個 分享讓其他人也可以用 (hg serve [-p port])
  • 看看修改歷程 (hg log)
  • 看看修改的內容 (hg diff)
  • 修改有衝突了,進去檔案看看,解決它 (hg merge)
  • 接受其他人的修改 (hg pull)

· One min read

Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.

剛開始時,除錯比起寫程式要難上兩倍。因此,如果你將程式寫得聰明無比,你必然不夠聰明以至於能除錯這個程式。

—Brian W. Kernighan, co-author of The C Programming Language and the "K" in "AWK"