My favorites | Sign in
Logo
                
Search
for
Updated Sep 14, 2008 by gasolin
Labels: Featured, Traditional
AboutZhpy  
關於周蟒 (zhpy)

關於周蟒

周蟒 (zhpy) 是一種適合用於教學,並且簡單易學、功能強大的中文 Python 程式語言。它具有高效率的高階資料結構、簡單而有效的物件導向程式設計方式,並讓你可以使用中文語句 (繁體或簡體)來編寫程式。

你可以將周蟒視為中文的 Python 程式語言。馬上照著 咬一口周蟒/Python語言 一書或是周蟒 快速語法參考手冊 來學習。你也可以直接來 安裝周蟒

周蟒是什麼?

特點

周蟒背後的哲學有三:

  • 把事情做好 (Getting Things Done)
  • 程式碼被閱讀的機會比被修改的機會多 (Code is read much more than it it written)
  • 一致的表達方式 (There should be one obvious way to do it)

程式語言再怎麼修改得接近自然語言, 都仍然具有程式語言的邏輯與規則, 周蟒語言的目的並不是接近中文自然語言,而是創造一個實用的中文教學程式語言。 以學習後不會造成轉換到英文程式語言(python..) 時的額外困擾為優先指標,使用方便合理的語句(中文詞彙與科學計算符號)描述程式內容。

想更了解周蟒的獨特之處,請參考 周蟒的哲學與程式風格

PS: Python 書籍譯者可以從周蟒專案找到 Python 關鍵詞的 繁, 簡中文關鍵詞對應表。 周蟒專案所維護的所有翻譯關鍵詞,與以中文書寫的程式範例,都是可實際執行的。

最簡單的例子

印出 '哈囉,世界'

這就是中文的 Hello World,是不是看起來很有親切感?

這句和以下的 Python 語句等價

print '哈囉,世界'

在這個基礎上,加入輸入功能也很簡單:

# 檔名: inout.twpy
姓名 = 輸入("請輸入姓名: ")
印出 ">歡迎,", 姓名

執行

$zhpy inout.py
請輸入姓名: gasolin
>歡迎, gasolin

這範例和以下的 Python 範例等價

# file: inout.py
name = raw_input("請輸入姓名: ")
print ">歡迎,", name    

定義函式與類別時也可以用中文。

#!/usr/bin/env zhpy
# 檔名: function1.py
定義 說哈囉():
    印出 '哈囉, 世界!' # 函式主體
說哈囉() # 呼叫函式

想多了解一點周蟒和 Python,可以看 咬一口周蟒/Python語言

周蟒知識+

有曰:用中文寫程式會不會反而是給小孩多一層學習障礙 ? 以後要學「真正」的寫程式時更是一頭霧水 ?
答曰: 透過周蟒,你所學習使用的是「真正」的 Python 程式語言,
一種連 Google 公司也廣為使用的程式語言。 
透過周蟒,你可以在 Python 語言里使用繁簡中文的關鍵字, 參數, 變數。
同時所有 Python 程式語言的英文關鍵字照樣可用,所以也能透過周蟒搭配著中英文對照學習。
用中文寫程式,降低學習程式的門檻是小孩學習時的助力而不是障礙。
有曰:為什麼中文編程要選用 Python 程式語言,這種語言有什麼優點?
答曰: python 程式語言關鍵字 (keyword) 很少,程式清晰易讀,
是最接近自然邏輯表達方式(虛擬碼)的程式語言。

另外 Python 程式語言也早已預先安裝在各作業系統平台中
(除了 Windows 沒預裝,不過另有安裝檔下載),
Python 程式語言中也包含了許多常用的模組庫,相當易於使用。
周蟒亦能容易地安裝在 python 上。
有曰: python 語言到底能用在那方面?
答曰: Python 語言和 c 語言, Java 語言一樣是通用的程式語言,舉凡桌面程式,web程式,服務器腳本,使用者界面,資料處理,資料庫,科學計算,圖像處理,遊戲.....等,網路上也可找到各種 Python 語言的應用。
有曰: 周蟒能像 python 語言一樣用在各方面嗎?
答曰: 周蟒是全功能的 python 語言,程式碼可轉換成 python 語言。 
因此周蟒能像 python 語言一樣用在各方面。
有曰: 周蟒是架構在 Python 上,性能會不會受到影響?
答曰: 在一般教學上,周蟒效能是足夠的。
需要較高效能時,可以透過 'zhpy -p' 命令將周蟒程式轉換成 python 程式直接執行 .py 檔。
周蟒程式中也可以使用任何 python 程式的加速方式 (如 psyco)。
有曰: 漢語太複雜了,可能產生歧異。
答曰: 周蟒並不是漢語,而是使用中文作為標識符號的中文程式語言。
周蟒透過 [CodingStyle 規範的語法與編程風格] 來簡化並制約漢語的歧異性。
也可以說,周蟒與 Python 相同,是具有一致的表達方式 (There should be one obvious way to do it) 的語言。

周蟒的歷史

在 2006 年底(12/22),gasolin 在 python-cn group 上發表了一篇 "關於中文編程"(1) 的主題,引發了一波是否需要中文編程語言的討論, 並引出了 HYRY 的中文字串替代腳本

HYRY 的原始版中文字串代換腳本檔案相當小,使用 utf-8 編碼,依靠外掛 ini 字典檔來轉換中文字, 並且提供了部份未規範的簡體中文關鍵詞,可以算是周蟒的原型。

此後中文編程並沒有立即的進展。 直到隔年(2007) 8 月, gasolin 在吸收他前幾個參與的開放原始碼專案的經驗(主要是 TurboGears )後,以 HYRY 的中文字串代換腳本為概念中心,將原本簡單的中文字串代換腳本發展成完整的中文編程語言工具,並於 2007/8/9 發佈了完整支援繁簡中文編程的第一個版本 zhpy 0.2 版 (gasolin 將原本 HYRY 的腳本視為 0.1 版)。

0.2 版的特色是可以直接使用 python 的 easy_install 命令線上安裝,簡化了安裝困難度; 並加入內建的繁簡關鍵詞對應字典, 提供中文編程統一的標準關鍵詞參照。

接著三個月間, zhpy 以幾乎每4天一個新版本的速度發佈新版,每個釋出版本都提供更多與 Python 語言相容的中文編程功能。在這過程中為了容易稱呼,將 zhpy 的中文名稱定名為「周蟒」。

周蟒在 0.5 版後陸續加入了一些工具。讓周蟒中文程式可以直接轉換純 Python 程式碼,以應用在一般的 python 程式中。

在 2007/10/2 ,周蟒發佈了 1.0 版本,提供 API 文件、完整的覆蓋測試、中文腳本、模組中文化插件。

接著發佈的1.1版,則更進一步支援 Python 程式轉周蟒程式,使得"Python程式<->周蟒程式"雙向轉換變得可能。使用者隨時能與 Python 英文編程環境、範例橋接,得以安心地先以中文學習編程。

待續..

(1) http://groups.google.com/group/python-cn/browse_thread/thread/5ad80196ea21f05e/98e3f4273a4f792c?q=%E4%B8%AD%E6%96%87&lnk=ol&

周蟒的名稱由來

周蟒最初發佈時只有一個英文名稱 'zhpy'。 zhpy 的名稱由來是周蟒的核心使用繁簡中文 unicode 編碼,而繁簡中文 unicode 編碼的代號是 'zh_tw' 跟 'zh_cn'。同時 zhpy 是基於 python 的中文程式語言,因此將代表 unicode 中文編碼的'zh'與代表 python 的'py'結合,取名為 zhpy。

之後為了讓 zhpy 中文編程語言有個在地的中文名字, gasolin 為 zhpy 取了個中文名字叫「周蟒」。取其音似,並有別於已不再釋出新版本的中蟒。同時決定了版本代號命名規則:每個主幹版本發佈的代號(code name)依中國朝代區分。而分支版本則是 gasolin 依個人喜好,選擇漫畫 "jojo 冒險野郎"(作者 荒木飛旅彥)中的'替身'名稱作為分支版本代號。

"zhpy" 該怎發音?

zhpy發音:

zhpy = z + h + py = z (無聲) py = zippy

zippy 有「敏捷的;活潑的」意思。

也可以照字節發音成 Z. H. π / Z. H. pi

周蟒不只是初學者學習程式語言的工具

"如果一種鳥類,走起來像鴨子,叫起來像鴨子,那我就可以把它當作一隻鴨子"

周蟒語言走起來像 Python, 叫起來像 Python, 因此你可以把它視作 Python 語言。

周蟒可以直接嵌入 python 程式中, 也能讓作業系統裡可使用周蟒中文腳本。

zhpy 的貢獻

zhpy 的中文關鍵詞支援

  • 內建標準(繁, 簡) 關鍵詞條
  • 自動搜尋外掛參考關鍵詞表用作關鍵詞.
  • 關鍵詞外掛插件支援
  • 其餘中文字詞將自動轉換成以 unicode 為基礎的唯一識別符號(URI).
  • 允許識別符號(URI)轉回中文字詞的雙向轉換
  • 允許中文檔名<->識別符號(URI)檔名的雙向轉換

周蟒語言適用範圍

使用者: 初學者/教學者

用途: 中文系統腳本/教學

平台: Windows/Mac/Linux

周蟒的使用對象是電腦語言的初學者、對寫程式概念不了解的人以及尚未打算以程式設計師為職業的人。能用中文來學習並完成簡單的程式是一件很棒的事。

設計思路

周蟒主要架構圖

周蟒與 Python 關係示意圖

以 Python 語言為核心運行。

convertor 使用 pyparsing 模組來查找取代中文關鍵字、類別名稱、定義名稱、變量、參數,將之轉換成英文 source code 後,透過 Python 來執行。

雜談

也許你會認為英文是電腦的標准語言, 要學電腦就要學英文, 因此不必為了那些又想學寫程式但又不想學英文的懶鬼操心。
然而學英文是要的,但最好別從電腦程式中來學, 因為編程語言和英文自然語言很不一樣。
                                                                             -- Glace, 中蟒的作者

如果學程式前不用先學會英文, 是否能拉低孩子們平均學習程式年齡?

我們知道編程是相當有用的技術, 透過學習編程也可以增加邏輯跟組織能力, 補習班廣告總是說: 要讓孩子贏在起跑點上, 外國人可以小小年紀就開始學編程, 為什麼中國/台灣人不行?

因為編程/寫程式是有門檻的. 要學習編程/寫程式首先要具備一些相關能力:

基本英文能力(1) 這條鍵仍限制了以英語外語言為母語的人種在初學編程上的門檻. 即使一些開放平台如 Python 語言已提供了簡潔的程式語法(2), 免費編程工具(3).

對于英文基礎還不好的入門者來說, 如果能以中文進行學習可以專注于程式的概念, 常用的運算方法, 程式的邏輯等內涵, 為之後的學習打下基礎。

就算以後再也不碰電腦程式, 起碼也學會了使用電腦來解決一些問題的思考方法, 而不是使用常用的程式語言卻只學了一堆語法等莫名其妙的東西。


Comment by arguskao, Jun 27, 2008

這真是個偉大的發明 對人類貢獻的程度不輸給火藥

Comment by shuguang278, Feb 19, 2009

好东西


Sign in to add a comment
Hosted by Google Code