Skip to main content

97 posts tagged with "python"

View All Tags

· 2 min read

I think I don't need the introduction, I create Python! -- Guido Van Rossum

Google 舉辦多年給大學生 / 研究生參與的「程式碼之夏」(Summer of Code) 活動後,上週又推出開放國高中生參與的「GHOP」(Google Highly Open Participation Contest,念成 G-HOP)活動。與「Summer of Code」活動一樣,Google 會從 Open Source 專案中挑選適當的專案,對其中專案有興趣的人可以申請參與。參與專案的方式很多樣,包含程式、教育、文件等方面。

第一年推出 10 個可參與的專案,其中三門 (MoinMoin、Plone、Python ) 與 Python 語言相關。

活動剛推出一週,負責 GHOP 的 PM 錄了一段 youtube,

在這段視頻中,除了可以看到一個胖阿姨攤在懶骨頭沙發上扭來扭去,也可以看到 Guido Van Rossum (Python 語言發明者),和在本文最前面 quote 起來的超猛自我介紹。

· 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)