Python編程語言的實現內幕的相關介紹
以下的文章是對Python編程語言的“實現內幕”做一介紹,大家很熟悉的有可能是Python的發展歷史,也有可能是Python編程語言的實際應用中具有強大的功能,下面是文章的主要描述,希望大家會有所收獲。
Python“ 時,他們可能想到的是有時稱為 ”CPython“(因為它是以 C 實現的)的這種特定實現。但 Python 作為一種語言規范,已隨著 Guido van Rossum 的參考實現的演變而實現了多次。本文包含對兩種非標準 Python -- Stackless 和 Vyper -- 創始人帶注釋的采訪。#t#
developWorks 網站上的 Linux 專區是有關 Linux、Linux 資源和 Linux 開發的開發者資源。
據我了解,現在可以下載并運行四種 Python 的實現,還有一種實現正在創建中。每種實現都有其存在的特殊理由,這些理由可以在這里從實現開發者自己的話語里了解到。
對不同的平臺重新編譯編譯器或解釋器所產生的實現只是略有不同(可能有少量的條件性編譯和更改),但最有趣的實現(就我而言)是超越平臺問題的那些。實際上,我們在這篇文章中將要看到的那些 Python 實現大多本身就是多平臺。實現的概念也與 版本的概念有所區別。
就語言特性而言,這里談到的所有實現基本上都處于同一語言版本 (1.5.2)。很明顯,CPython 1.6/2.0/3000 已經有一個部分屬于新的基本實現,但其它實現可以同樣地與那些語言級別的特性一致。
重新實現了哪些編程語言,實現的頻率怎樣,出于什么原因,以及由誰實現?要形容這組語言非常困難。某些與 Python 幾乎處同一地位的流行語言 -- 例如 perl、REBOL 和 PHP -- 只有一種實現(編譯成許多平臺)。TCL 與 Perl/PHP 最為相似,但 確實有一種稱為 Jacl 的 Java 平臺版本。
從另一個極端來看,例如 C、Awk、Cobol、REXX 和 Java 這樣的語言,每個都曾經被無數次地實現。但那些再實現是為了許可和營銷等考慮,而不是出于實現的概念和抽象問題。似乎有特殊學術意味的那些語言重新實現得很多(特別是函數性、邏輯性或超純 OOP 語言,例如Smalltalk 和 Eiffel)。Lisp 沒有幾百個也有幾十個實現和派生。
與我們將要討論的 Python 實現不同,Lisp 的派生在提供新實現的同時往往引入許多新穎的 語言特性。Python 實現在很大程度上實現和主要 CPython 版本 相同的 Python 語言。所有現有的版本都是開放源碼合作努力的結果,這種情況下,創新與市場定位沒有太大關系,甚至與有時導致開放源碼項目分裂的許可證爭斗也沒有什么關系。
而且,不同的 Python 版本也不是真正傳統意義上的 支流,而集中于不同的概念,正是這些概念證明它本身就是 Python 實現。
兩種沒有詳細說明的實現是 JPython 和 Python.NET。JPython 是以 Java 編寫的編譯器,用于將 Python 源代碼編譯成 Java 字節碼。Python 應用程序最終是在 JVM(用戶可能不知道它是以 Python 源代碼而不是 Java 編寫的,他們也不需要關心)中運行的。Python.NET 是個還未交付的實現,但它 -- 至少在結構上 -- 將與 JPython 相似。
Python.NET 將讓 Python 參與到微軟的 .NET 項目中,該項目基本上接近于一個可以運行以各種語言(例如新的 C#、Visual、Basic、C++,以及 Python)編寫的程序的非 Java VM。請隨時關注這些實現的開發者發布的信息。