Skip to main content

· 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 網站上,也可以套用在各作業系統的單機版上.

· 3 min read

Functional Programming 中文一般被翻作 "函數式編程 (程式設計)". 看到這個名詞,我腦袋裡很自然就浮出 "def ..." 這樣的語句. 因此 "函數式編程" 一詞所想表達的程式設計概念一直讓我完全摸不著頭腦.

直到看了跨越边界:用 Haskell 研究函数性编程這篇文章,我才理解 "函數式編程" 其實就是 "以撰寫數學方程式的方式來編程 (程式設計)" 的程式設計方式.

看了內容很自然地發現其實 Python 語言裡可以找到 map, filter, lambda 等這些用起來比較怪異的函數都是在 Python 中可以拿來作函數式編程的基礎工具.

Python 程式裡有些時候會有用上這些語句的地方,雖然省了空間, 但是命令式 / OO 編程的習慣卻讓這些段程式較難理解.

為了更易於學習與理解,python3000 中會將其中一些函數式編程相關函數 (lambda) 從核心中去掉,但卻提供了更完整的函數式編程模組 functional 的支援。也許這是個更兩全其美的方式吧.

最近在準備 OSDC.tw 2007 要用的投影片,在整理的過程中也產生了不少想法. 今天看了 "跨越邊界" 系列之後. 更加感受到要好好理解並運用一種開發方法 (不管是函數式編程還是測試驅動編程), 果然還是應該從心法 (本質) 上著手呀.

參考資料: