幾分鐘教會您Python程序配置問題
Python是一種代表簡單主義思想的語言。閱讀一個良好的Python程序就感覺像是在讀英語一樣,盡管這個英語的要求非常嚴格,下面我就對Python 語言進行說明,做一下自己的解析。
他從 Mark 那里了解到一些有關微軟開發的***獨家新聞內幕(當然所有內容都在保密合同限制內)并從 Finn 和 Barry 那里了解到有關 JPython 和他們將要發布的 Jython 項目的一些信息。
盡管 Python 通常等同于 CPython,但它的規范曾在其它地方實現過多次,包括在用于 Java 和 .NET 的應用程序中。JPython 將 Python 源碼編譯成 Java 字節碼,并提供了對 Java 類的透明訪問。Python for .NET 是微軟將要發布的交叉語言技術平臺工作中的一個應用。在采訪 Mark Hammond、Finn Bock 和 Barry Warsaw 的過程中。
我發現了有關 JPython 和 Python for .NET 是如何開發的更多信息,以及為未來這些替代 Python 實現進行了哪些準備。由于在 PythonWin 環境和 PythonCOM 擴展方面出色的開發,Mark Hammond 為廣大 Python 程序員所熟知。出于我們欽佩 Mark 的相同原因,微軟也很看重他。
他們決定在 Python for .NET 的實現上向他求助。據 Mark 稱,Python for .NET 的工作版本應該很快就可得到,現在您應該已經可以從 ActiveState 獲得它的 alpha 或 beta 版(請參閱 參考資料)。
David Mertz :到底什么是 Python for .NET 呢?我想我特別想知道的是 Python for .NET 與您自己對 CPython 的 PythonWin 和 PythonCOM 擴展(它們似乎能夠控制 Windows 的內部)之間的關系是怎樣的。
Mark Hammond :Python for .NET 是一種編譯器和運行時,它在微軟的 .NET 平臺上實現了 Python。.NET 平臺提供了一個運行時和元數據系統,它們設計成允許完整的語言互操作性,但要實現這一點,語言必須能在該運行時中使用。
例如,如果 Python 類是公用的以便 Visual Basic 程序員能夠繼承它,Python 類就必須以 .NET 術語而不是以 CPython 術語來實現和描述。Python .NET 的優點只是可以與 .NET 框架互操作。這里仍然有許多缺陷,主要由于實現還不成熟而導致。但這確實只是時間的問題。我們仍處于開發和調試的 beta 階段。
Mertz :您對現在的 Python for .NET 和 CPython 之間不兼容性問題是怎么看的?Hammond :是啊,大多數模塊還沒有被實現,所以現有以 C 編寫的模塊還無法確切使用。如果您的目標不是 .NET 框架,***此時不要使用 Python .NET。Mertz :不過,Python for .NET 肯定有一些主要的優勢,例如方便的語言間通信和多語言應用開發。
但為什么您說比已經有的那些 -- 例如 Python+C+SWIG 要好呢(當然是假設情況)。Hammond :就 Python+C+SWIG 目前的發展而言,應該是明顯的。語言間調用永遠不應該象使用 Python+C+SWIG 那樣困難。但 SWIG 在許多其它方面是個了不起的產品。它揭開了 Python C 擴展編寫的神秘面紗,并僅將它歸到困難的行列。
將 .NET 與 COM 或 Corba 進行比較更合理一些。COM 和 Corba 都提供交叉語言調用“正適用”的解決方案,而不需要任何手工參與或編譯。
.NET 將它更進了一步,并提供交叉語言繼承和異常能力。這些優點非常類似于在 Java 虛擬機下的多語言實現中發現的那些。
Mertz :Python for .NET 將 Python 腳本編譯成外部虛擬機的格式。對于 .NET VM 是否將支持 Stackless 和 Vyper 的某些外來特性,例如延續性、生成器、協同程序、尾遞歸或延緩求值,您認為會這樣嗎?
Hammond :是的,從理論上說它會。但微軟 Beta 協議的一些條款不允許我談論有關性能的問題。 讓我們將目標只定在核心 Python 語言引用中定義的那些特性上。無用信息收集是繼承的,就象在 JPython 和 JVM 中的那樣。
Mertz :接下來談談政策主題,您認為微軟為什么正在進行 Python for .NET 的開發工作呢?Hammond :這樣選擇目標 .NET 的人就可使用 Python 了,無用信息收集是繼承的,就象在 JPython 和 JVM 中的那樣。
微軟很早就確定要參與到 Python 和其它許多語言中,以確保他們的 VM 確實是不懂語言也能夠使用的。根據來自各種語言實現者的反饋意見,現在他們已經對他們的 VM 做了大量更改。
Warsaw :我們已經基于公用 JPython 1.1 發行版創建了 JPython 后繼者 "Jython"。這樣做是為了確保項目的長久性和穩定性。依據 CNRI 的 JPython 1.1.x 許可證實現了所有這些。我們將整個開發過程移到了 SourceForge。
并使用對 CPython 非常合適的相同開放過程管理它。Finn 和我兩人無疑要參與 Jython 未來的開發;Jython 將使用 OSI 核準的 CPython 2.0 許可證發行。它與您將獲得的“正式”派生很接近,所以當前的 JPython 社區應該確信 Jython 與它永遠不會相差太多。我們希望它們最終都能遷移到 Jython。
現在代碼仍處在試驗階段,但 Finn 和我將為 Jython 2.0 發行版(已經包含了 Finn 的勘誤表)致力于建立幾個技術性里程碑。CPython 2.0 具有增強的指派和擴展打印等特性(很快還將帶有列表理解)。
我們已集成了免費的 Apache Jakarta OROMatcher 代碼,消除了雙許可證的需要,并修正了許多錯誤。我不知道 Jython 2.0 的***個 alpha 發行版何時出現,但當前所有代碼都在 SourceForge CVS 樹中獲得。
【編輯推薦】