Skip to main content

· One min read

以前已經有些人研究過 Python 原始碼.

python 源码分析 中有列出 Python 語法分析的機制。回顧一下 cPython 的整個處理流程:

1. PyTokenizer 進行詞法分析,把源程序分解為 Token

2. PyParser 根據 Token 創建 CST

3. CST 被轉換為 AST

4. AST 被編譯為字節碼 ByteCode

5. 執行字節碼

這個流程是直譯器 Interpreter 的流程. 大體也可以套用在 pypy 的 Python 直譯器上.

PyPy - Goals and Architecture Overview (pypy 架構) 一文中講到 pypy 有兩大構成部份, 其一就是 Python Interpreter (直譯器), 其二則是 Translation Framework (轉譯器).

.... 寫好的被 Ctrl+Z 吃掉了.... 待補... Orz

· 3 min read

PyPy 1.0 剛發佈 PyPy 是:

1. 使用 Python 語言編寫的 Python 語言 (稱作 rpython). 2. 可以將 python 程式碼編譯成原生的 c, CLI (.net 2.0), javascript 或其他語言執行程式,提高執行速度. 3. 可以把 rpython 編譯成 javascript , 用來產生客戶端 javascript / 編寫 ajax 應用. 4. 可以將 rpython 程式碼流程展示成視圖. 5. 可以透過 JIT 產生自訂版本的編譯器.

為什麼說 pypy 是流氓哩?因為跟其他程式語言相比,它根本就是在作弊嘛!

  • 你說 c 語言寫的程式最快,pypy 可以將程式碼自動轉成 c 版程式。用 gcc 編譯後僅慢原生 c 執行檔 10~20%.
  • 你說 .Net 跨平台,pypy 可以將程式碼自動轉成 .Net 版程式。編譯後比 MS 官方提供的 .Net 平台 IronPython 快 100 倍.
  • 寫好的程式可以透過 pypy 自動幫你畫流程圖。最恐怖的是 pypy 是使用 Python 語言編寫的 Python 語言,可透過轉譯器編譯成各平台執行程式以取得超過 cpython 的效能. 各種語言轉譯器 (translator) 也可以用 rpython 本身撰寫。以後 rpython 語言開發者不用是 C 語言專家也可以參與改進 Python 語言,與其他語言相比加入各種實驗性新特性的難度簡單了好幾個數量級.

用 pypy 目前已經可以產生 JavaScript 程式碼,來支援 AJAX 開發. 以後想必也能產生 ActionScript 程式碼,支援 Flash/Flex/Appolo 開發吧?

我已經準備要屈服於 pypy 的惡勢力了 XD

· One min read

Globus 是目前網格運算 (Grid Computing) 的實際標準,使用 JAVA 實做.

pyGlobus 是 Globus 的 Python 接口

· 3 min read

新聞來源: HP acquires Tabblo

Tabblo 是一個使用 Python 語言下的 Django 網站開發框架製作的圖片分享網站。特點是可以將上傳的圖片輕鬆製作成各種形式精美的套卡. HP 最近將這個以 9 人團隊組織的網站收購下來.

Python 語言繼 YouTube 的大成功後,在使用網站開發框架 (Django) 上也找到了另一個具說服力的範例。讓人打消 Python 語言不適合 Web 開發的疑慮.

話說回來,HP 這家公司難道也想玩 Web 2.0 嗎?不然為何要買這樣的 .com 公司?

當然,連友立 (Ulead, 出品 PhotoImpact 的公司) 都有線上圖片分享網站了,HP 這間印表機大廠也來一個有何不可?

依新聞來源內容來看,我做個猜測: HP 買 Tabblo 可能不只看在圖片分享網站上,更看中的應該是 Tabblo 的核心價值.

Tabblo 的核心價值是什麼?Tabblo 的核心價值是它所提供的獨家 "圖片轉精美的套卡" 服務. 而 Tabblo 是透過 PIL (合理猜測啦) 等圖片處理模組,才有辦法建立這樣的服務.

即使哪天 HP 印表機附的光碟裡提供類似 Tabblo 網站提供的圖片 -> 套卡功能, 我一點也不會意外.

使用 Python 語言開發網站一大優勢就是背後有很多現有執行在作業系統上的高效模組 (ex: PIL) 可以調用.

單就圖形處理方面,使用超有彈性又真正跨平台的 Python 語言開發這類原本只有單機才做得到的服務有許多的好處.

其中最重要的一點是:同樣的程式,可以套用在 Tabblo 網站上,也可以套用在各作業系統的單機版上.