可愛的Python:JPython和Python for .NET內幕

來源:互聯網
上載者:User

David Mertz 採訪了 JPython 和 Python for .NET 的開發人員 Mark Hammond、Finn Bock 和 Barry Warsaw。他從 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 實現進行了哪些準備。

Python for .NET

由於在 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 了。微軟很早就確定要參與到 Python 和其它許多語言中,以確保他們的 VM 確實是不懂語言也能夠使用的。根據來自各種語言實現者的反饋意見,現在他們已經對他們的 VM 做了大量更改。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.