開發中的 1.7.3 版本初步已可以在 Android Scripting Environment (ASE) 上跑, 如圖所示
目前可以在 android 上啟動 interpreter, 但該環境或介面還無法輸入或顯示中文.
而且要直接在 Android 上跑 ooo.twpy/xxx.cnpy 還有些 encoding 問題,
但可以透過 svn 中的 android.py (自行撰寫的 ASE android 函式庫 mockup)來在桌面端調試(example/droid/android.py),
直接在桌面端調試好後,用 "zhpy -p" 命令將周蟒程式轉換成 python 檔,再放到 Android 手機上去跑。
上週在 Coscup 09 上也做了一些演示 Demo
最近 weijr 寫了幾篇很有意思的文章:
weijr 提出了透過利用 python 會在程式檔開頭讀取編碼設定 (encoding) 的方法,來使用 python interpreter 直接執行如周蟒等程式,並且提出了基於周蟒 1.4 修改後的實做,其中許多修改很值得參考。
Python MagicCodec 0.1 裡有個大量修改過的周蟒 1.4 版本。
看到 weijr 願意修改 zhpy 並發佈一個自己的版本我還蠻開心的,這表示周蟒開始值得其他人花心力來修改了,也是種肯定。
但同時警覺到: 讓人寧願自己修改而不是發個 patch 給我們,也表示周蟒還有不足之處。
因為周蟒是採取測試驅動開發,而且目標是相容多個 python 版本與平台,
因此在周蟒實做中,我會避免使用 python 2.5 的語法或 python 2.6/3.0 時即將淘汰的語法,
而且代碼需要通過全部測試,從而保證釋出版本的質量,使用者才能放心地採用或自由修改。
周蟒本來就是一個採取測試驅動開發,集合大家創意的中文(python)程式語言,許許多多的功能都是由不同人貢獻出來(可以看 ChangeLog),才有今天的周蟒。
周蟒 1.5 將繼續重構,並同時加入一些更進階的關鍵字,也許會在這版本或下個版本加入透過 encoding 來使用 python 直接執行周蟒的方法。(如果 weijr 肯發個 patch 過來就更快啦 :D)
如果對周蟒原始碼有興趣,可以透過
svn co http://zhpy.googlecode.com/svn/trunk/來取得原始碼
周蟒原始碼總是維持隨時都是可工作的。
數學表示法與周蟒
Mr. Monkey 寫了篇 zhpy 的另類用法
利用周蟒 可以用 ini 擴充詞庫的特性,加入數學符號對應,使得程式中可以直接寫出諸如
print sin(π/4) ≠ √(2)/2
這樣的語法,將收錄在下一版的周蟒範例中 (example/realmath)。
文字 RPG 與周蟒
文字 RPG 是使用 console 遊玩,沒有圖片,遊戲裡面的互動與戰鬥都是以文字來表示的一種古早遊戲方式。基於一個德國人寫的 textrpg 模組, 我也寫了篇
給我五分鐘,教你用中文腳本寫一個 RPG (使用 TextRPG)
Crunchy 與周蟒
Crunchy 是一個網頁介面的系統,可以在教學文章中的 python 語言區塊後端直接附上一個互動式 shell,讓讀者可以直接在同個頁面試驗。目前支援 python 2.4 以上環境。
因為 Crunchy 也是基於 utf-8 編碼,因此要讓 Crunchy 支援周蟒相當容易, 只要在原始碼中加上兩行敘述:
crunchy/src/interpreter.py
class InteractiveInterpreter(object):
....
def runsource(self, source, filename="User's code", symbol="single"):
....
try:
from zhpy import convertor
source = convertor(source)
code = self.compile(source, filename, symbol)
如此即可在 crunchy 的網頁介面中輸入周蟒程式碼。
昨天用 rlcompleter 讓周蟒 interpreter 支援自動完成(打單字自動補全關鍵詞,打英出中),
例如任意打出 '印'、'print'、'pri'、'prin' 後,按下 tab 鍵, shell 中就自動換成 '印出' 一詞。
以一段簡單的用迴圈印出資訊的程式碼為例:
>>> for i in range(10):要達到等同於這段 python 程式碼的目的,在 zhpy interpreter 中,原本得輸入:
... print i
>>> 取 i 自 範圍(10):現在可以輸入
... 印出 i
>>> for[tab] i in[tab] ran[tab](10):每次按下 tab 鍵,interpreter 就會自動將 "for"、"in"、"range"、"print" 等關鍵字轉換成 "取"、"自"、"範圍"、"印出"等周蟒關鍵詞,大幅簡化輸入的次數。
... pri[tab] i
期待簡中開發者加入,協助增加利用拼音方式的自動完成。
這兩天好多有意思的新東西冒出來,一個一個寫blog太麻煩了,所以就集中在一篇一次解決 XD
Microsoft: Surface
Microsoft號稱秘密研發了五年的東西,看起來真的很炫。但可能是我看了太多類似的ubicomp和HCI prototype demo,所以沒有對這個idea覺得”Wow!”。但話說回來,Microsoft如果真的能在年底把它做成真正能實用且便宜的產品(呃,至少要在藍色畫面上標示該用手指畫出甚麼樣的軌跡才能重開機吧),那就能期待一場新革命到來了..。
相關文章: Surface:這就是創新 真正令人Wow的Surface
Apple: iTunes U
Apple在iTunes上推出了一個叫iTunes U的program,可以透過iTunes收聽/收看許多知名大學的課程,包括Stanford, MIT, UC Berkeley都在其中。平常我都會在一些片段又不方便看書的空閒時間聽一些英文教學的podcast,聽久了其實也有點無聊XD 剛好看到這個不錯的program,可以拿來填補一些零碎時間。
Google: Google Gears, Google Mashup Editor, Google Mapplets
上面三個新東西都是從Official Google Blog看來的。 今天是Google Developer Day,剛好也有很多新東西被推出來。其中Google Mashup Editor還沒完全開放,只能看到簡單的介紹。但看起來不像Yahoo Pipes那麼炫,還得自己手動寫code,是個有著濃厚geek風格的東西。
Google Gears就很有趣了,它建立起一個framework讓一般的AJAX web app能夠offline使用。也就是說,即使今天用Google Calendar到一半網路斷了,也還是能在離線時繼續使用,等到有網路後再把資料sync起來。而在斷線的時候,資料的存取全部都會被重導到local端的假server和假database上。有良好測試習慣的programmer應該都知道,這其實就是寫網路程式時很常用的測試方法。所以有了這東西後,以後開發web app就方便多了,不必隨時都得掛在有網路的真實環境下寫程式。
Google Mapplets是Google Maps上的新功能,可以讓人mashup一些東西後,再顯示在地圖上。這東西看起來也很好玩,之後試玩過後可能會再寫專文介紹..。 (其實是我想睡了….. XD)







