Skip to content

Latest commit

 

History

History
313 lines (217 loc) · 13.1 KB

AboutZhpy.md

File metadata and controls

313 lines (217 loc) · 13.1 KB

關於周蟒

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

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

周蟒是什麼?

  • 友善而易於學習的中文程式語言
  • 清晰可讀的語法
  • 直觀的物件導向能力
  • 方便的動態物件類型
  • 透過模組有架構地組織程式
  • 多平台適用(Windows, Linux, Mac)的程式語言
  • 全功能的中文版本 Python 語言

特點

程式語言再怎麼修改得接近自然語言, 都仍然具有程式語言的邏輯與規則, 周蟒語言的目的並不是接近中文自然語言,而是創造一個實用的中文教學程式語言。 以學習後不會造成轉換到英文程式語言(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 的貢獻

  • python 中文編程模組
  • Python 繁體中文-英文關鍵詞對應表
  • Python 簡體中文-英文關鍵詞對應表
  • 關鍵詞對應表可供 python 相關書籍翻譯參考
  • 支援生成自然 python 原始碼 (zhpy -p)
  • 支援 python 原始碼生成 zhpy 原始碼 (zhpy --tw, zhpy --cn)
  • 支援 python

<->

周蟒程式雙向轉換

  • 支援 Python 中嵌入中文腳本 (zh_exec)
  • 支援 shell 中文腳本 (zhpy -c)
  • 支援中文編程的互動式直譯器

zhpy 的中文關鍵詞支援

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

<->

識別符號(URI)檔名的雙向轉換

周蟒語言適用範圍

使用者: 初學者/教學者

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

平台: Windows/Mac/Linux

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

設計思路

周蟒主要架構圖 http://farm3.static.flickr.com/2319/1564818669_9766a93f41_o.jpg

周蟒與 Python 關係示意圖 http://farm3.static.flickr.com/2393/2064120327_1b31f17299_o.png

以 Python 語言為核心運行。

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

雜談

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

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

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

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

  • 基本英文能力
  • 理解程式語法
  • 取得編程工具

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

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

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