跳轉到內容

Parrot 虛擬機器/簡介

來自 Wikibooks,開放世界的開放書籍

什麼是 Parrot?

[編輯 | 編輯原始碼]

Parrot 是一個虛擬機器 (VM),類似於 Java VM 和 .NET VM。但是,與這兩個專為 Java 或 C# 等靜態型別語言設計的虛擬機器不同,Parrot 專為 Perl、Python、Ruby 或 PHP 等動態型別語言設計。

Parrot VM 本身是用 C 程式語言編寫的,這意味著它在理論上可以移植到大量不同的計算機體系結構和作業系統。它是為了易於模組化和擴充套件而編寫的。

程式設計師可以使用任何存在 Parrot 相容編譯器的語言進行編寫。用一種語言(例如 Perl)編寫的模組可以與最初用 Parrot 支援的任何其他語言編寫的模組透明地互動。這種輕鬆的互操作性和對尖端動態程式設計功能的原生支援使 Parrot 成為下一代語言設計者和實現者的重要工具。

正是因為 Parrot 旨在支援如此多種不同的高階語言,Parrot 開發了一種非常通用且功能豐富的架構。Parrot 架構的大部分仍在積極開發中,因此這些部分還不能在這本書中得到充分討論。一旦 Parrot 釋出穩定版,並且更多細節確定下來,本書將能夠提供更全面的覆蓋範圍。

Parrot 的歷史

[編輯 | 編輯原始碼]

Parrot 專案誕生於 Perl 6 開發專案。因此,Parrot 的歷史,至少是早期的歷史,與 Perl 6 的歷史密切相關。事實上,只要瞭解 Perl 6 有多麼龐大和雄心勃勃,你就會開始理解為什麼 Parrot 必須擁有它所擁有的所有功能。

人們常說 Perl 程式語言的第 5 版“除了 perl 本身之外,沒有任何東西可以解析 Perl”。這意味著 perl 可執行檔案是唯一能夠可靠解析 Perl 程式語言的程式。有兩個原因。首先,Perl 語言不遵循任何正式規範;perl 直譯器的行為是 Perl 操作的權威文件。其次,Perl 程式語言允許使用原始碼過濾器,這些程式可以在執行之前修改自己的原始碼。這意味著要可靠地解析和理解 Perl 程式,您需要能夠可靠地執行原始碼過濾器。唯一能夠做到這兩點的程式是 perl。

Perl 的下一個計劃版本,Perl 6,應該是一個對該語言的重大重寫。除了標準化和使所有逐漸進入語言語法的功能變得合理之外,人們還決定 Perl 6 將首先是一個正式規範,然後才是該規範的實現。

“Parrot”這個名字最初是用作愚人節的笑話。故事稱,Perl 和 Python 語言(這兩種語言是競爭對手,並且都正在進行重大重新設計)將合併成一種名為 Parrot 的語言。這當然是一個騙局,但這個想法卻很強大。當開始建立能夠執行 Perl 6 以及 Python 和其他動態語言的虛擬機器時,Parrot 這個名字非常適合。

Parrot 的第一個版本,0.0.1,於 2001 年 9 月釋出。開發團隊已在每月第三個星期二準備了一個穩定的點版本。

Parrot 基金會

[編輯 | 編輯原始碼]

Parrot 基金會成立於 2008 年中期,旨在充當 Parrot 的倡導者。Parrot 基金會是美國的一個非盈利慈善組織,對該基金會的捐款是可以免稅的。

在 Parrot 基金會成立之前,Parrot 由 Perl 基金會管理和監督。這種關係是歷史性的,因為 Parrot 最初只是為了成為 Perl 6 程式語言的後端而設計的。由於 Parrot 已超出這一範圍,並試圖公平地處理所有高階動態程式語言,因此決定將其與 Perl 基金會分離。

Parrot 的網站是 http://www.parrot.org

這本書適合誰?

[編輯 | 編輯原始碼]

本書適合具有紮實計算機程式設計背景的中級到高階讀者。Perl 程式設計 是一個良好的開端,儘管任何動態語言的背景都會有所幫助。擁有 編譯器構造正則表示式 或編譯器構建工具 Lex 和 Yacc 的背景也是一項優勢。

對於關於 Parrot 駭客的部分,需要了解 C 程式設計

我們將涵蓋哪些內容?

[編輯 | 編輯原始碼]

本書將至少作為 Parrot 虛擬機器的一個基本介紹。我們將介紹 Parrot 在其支援的最低階語言中的基本程式設計:PIR 和 PASM。我們還將討論 Parrot 平臺最大的優勢之一,Parrot 編譯器工具 (PCT),它使編譯器可以輕鬆地為 Perl 和 Python 等更高階語言編寫。

後面的章節將深入研究 Parrot 內部,並討論 Parrot 的工作原理以及如何為 Parrot 開發專案貢獻程式碼。本書末尾的大量參考資料將嘗試跟蹤開發人員最需要的那些資訊。


哪裡可以獲取更多資訊?

[編輯 | 編輯原始碼]

有關 Parrot 資訊和文件的權威來源是 Parrot 專案網站,http://www.parrot.org。Parrot 程式設計師、駭客和愛好者還在 Parrot IRC 聊天室 中聊天。

如何參與 Parrot 開發

[編輯 | 編輯原始碼]

Parrot 開發流程龐大而多樣。根據技能水平,人們有很多機會參與 Parrot 開發。以下是一些示例

如果您精通 C 程式設計
如果您瞭解 C 程式設計,始終需要幫助來處理 Parrot。除了正常的開發任務外,還需要解決錯誤報告、修復編譯錯誤、將新平臺移植到 Parrot 以及執行最佳化。Parrot 需要移植到許多不同的系統,並且需要在所有系統上進行適當的測試。
如果您精通 Perl 程式設計
Parrot 的許多構建工具是用 Perl 5 編寫的。但是,還存在一個龐大的開發工作來支援 Perl 6 專案。一種類似於 Perl 6 但缺少許多功能的中間語言,稱為 Not Quite Perl (NQP),用於實現更高階語言的編譯器。如果您精通 Perl 並且願意學習 Perl 6 和 NQP,那麼有很多編譯器實現工作需要完成。
如果您精通系統管理
Parrot 需要定期構建和測試。始終需要願意定期構建和測試 Parrot 的人員。如果您願意設定自動化構建機器人來定期構建和測試,那就更好了。
如果您會寫作
這本書需要您的幫助,任何人都可以編輯它。此外,還有許多其他與 Parrot 相關的書籍寫作專案正在尋找活躍的作者和編輯。關於 Parrot 的內容越多,新使用者就越能瞭解它。

如果您不屬於以上任何類別,還有其他機會可以提供幫助。這可能是您學習新技能的好機會,比如程式設計 Perl 6、PIR 或 NQP。如果您對寫作或編輯感興趣,也可以幫助編寫本華夏公益教科書!

Parrot 開發者

[編輯 | 編輯原始碼]

儘管沒有集中的管理層級,但人們在 Parrot 開發中承擔了多種不同的角色。志願者傾向於履行他們喜歡且有技能的角色。

架構師
Parrot 架構師,目前是 w:Allison Randal,負責制定 Parrot 的總體設計規範。架構師對重要決策有最終決定權,並負責確保設計文件的最新性。透過制定系統的總體要求,其他志願者能夠為他們最感興趣的領域做出貢獻。
南瓜王
南瓜王負責監督 Parrot 原始碼倉庫,也是主要開發人員。南瓜王定義所有貢獻者必須遵守的編碼規範,並幫助協調其他貢獻者。
釋出經理
Parrot 按照大約每月一次的釋出計劃釋出。釋出經理負責監督此過程,並確保釋出質量高。釋出經理將控制何時新增新功能,以及何時凍結程式碼以進行除錯。預釋出除錯會話對於 Parrot 開發來說是非常高效和重要的階段,並確保在每次釋出之間修復了許多錯誤。
提交者
提交者是指具有 Parrot SVN 程式碼庫寫入許可權的人員。提交者通常已提交了多個補丁並參與了與 Parrot 相關的討論。
元提交者
元提交者是指具有 Parrot SVN 程式碼庫寫入許可權,並且能夠提升新提交者的人員。架構師和南瓜王自動成為元提交者,但還有其他幾個元提交者。

在上述各組中,還有一些其他的指定。這是因為許多提交者往往將他們的工作集中在 Parrot 開發工作中相對較小的一部分。

核心開發人員
在 Parrot 內部工作的人員,通常是一個或兩個子系統。核心開發人員需要精通 C 程式設計,並且還需要使用許多用 Perl 編寫的開發工具。
編譯器開發人員
這些開發人員與核心開發人員一樣,在 Parrot 內部工作,通常是編寫大量的 C 程式碼。與之相反,編譯器開發人員將他們的工作重點放在各種編譯器前端,例如 IMCC、PIRC、PGE 或 TGE。
高階語言開發人員
高階語言開發人員是指在 Parrot 上實現高階語言的人員。儘管他們對整個程式碼庫具有提交許可權,但許多高階語言開發人員只專注於一種語言實現。高階語言開發人員需要精通 PCT 和許多用於 HLL 的基於 Perl 6 的開發工具。
構建管理者
構建管理者幫助建立和維護其他開發人員依賴的工具。
測試人員
測試人員建立和維護一套數百甚至數千個測試,以驗證 Parrot、其子系統、其編譯器以及在它上面執行的高階語言的操作。
平臺移植者
平臺移植者確保 Parrot 可以在多個平臺上構建。移植者必須在不同的平臺上構建和測試 Parrot,並且還要建立和分發不同平臺的預編譯安裝包。

當然,這絕不是一個詳盡無遺的可能角色列表。如果您有程式設計技能,但不知道自己是否適合以上任何指定,您的幫助仍然是需要的。


上一個 Parrot 虛擬機器 下一個
目錄 構建 Parrot
華夏公益教科書