跳轉到內容

Raku 程式設計/Perl 歷史

來自華夏公益教科書,開放的書籍,面向開放的世界

Perl 1 - 5

[編輯 | 編輯原始碼]

Perl 程式語言由拉里·沃爾(Larry Wall)於 1987 年建立,他是一位語言學家,也是 Unisys 的計算機系統管理員。Perl 是一種動態程式語言,在其歷史的大部分時間裡,被認為是“指令碼語言”或命令列管理工具。然而,從語言的第 5 版開始,Perl 成為了一種功能強大且實用的通用程式語言,在網路開發人員、系統管理員和業餘程式設計師中一直很受歡迎。

Perl 程式語言是作為開源自由軟體專案開發的,並逐漸擴充套件,直到釋出了第 5 版,這是 Perl 的當前技術水平。在所有這些發展過程中,Perl 保持與以前版本的向後相容性。Perl 5 直譯器可以讀取、理解和執行(在大多數情況下)用 Perl 1、Perl 2、Perl 3 和 Perl 4 編寫的程式。不幸的是,這使得 Perl 5 直譯器內部變得混亂,並且使許多程式設計任務比必要的更難。

另一個絆腳石是 Perl 5 語言規範;它根本不是規範。Perl 直譯器本身就是標準:直譯器的行為是 Perl 的“標準”行為。要複製 Perl 語言所有奇怪和特異的行為,唯一的方法就是使用該標準軟體。

中場休息:2000 年的 Jon Orwant 摔杯事件

[編輯 | 編輯原始碼]

到 2000 年,很明顯 Perl 需要注入活力。

“[P5P / Perl 大會]會議最初是 Chip Salzenberg、Jarkko Hietaniemi、Elaine Ashton、Tim Bunce、Sarathy、Nick Ing-Simmons、Larry Wall、Nat Torkington、brian d foy 和 Adam Turoff 的聚會,他們聚在一起起草了一份憲章,因為社群似乎正在分裂。Jon 遲到了會議,發現我們在談論社群,並開始扔東西來表達他對 perl 本身停滯不前甚至可能消亡的不滿,並認為我們應該談論振興 Perl。據我後來瞭解,杯子事件是計劃好的戲劇。所以,它已經是既成事實,但這場憤怒就是它被公開。

Perl 6 的時機已經成熟:對 Perl 語言從頭開始的重寫。為了解決語言的基本問題並新增必要的特性,放棄了與 Perl 5 的相容性。因此,它與 Perl 5 完全不同,但同時又明顯地屬於同一個“語言家族”。與隨著時間的推移而有機發展且完全特異的 Perl 5 不同,Perl 6 從一套規範開始,並在多個獨立且平等的實現中例項化。

Perl 6 從一個長期的社群參與和 RFC 流程開始。社群成員被要求為新語言貢獻想法和建議。Larry 審查了建議,保留了好的,刪除了不好的,並試圖以統一的方式將所有內容整合在一起。Perl 5 因為“hacky”和不一致而受到批評,所以 Perl 6 應該從一開始就避免這種情況。在所有建議被彙總和討論後,Larry 釋出了一系列設計文件,稱為**啟示錄**。每個啟示錄都按數字編號,大致對應於“Programming Perl”一書中的章節,旨在揭示在 Perl 6 設計中正在考慮的概念和權衡。從這些文件(這些文件缺乏細節)中,Damian Conway 製作了一系列相應的解釋性文件,稱為**解釋**。啟示錄揭示了一些設計,而解釋則用日常程式設計師可以理解的程式碼來解釋這些設計意味著什麼。後來,隨著設計的成熟,建立了稱為**提綱**的設計規範,以綜合和記錄 Perl 6 的設計。提綱目前是 Perl 6 語言的官方設計文件。

在 2019 年 10 月,Perl 6 社群投票決定將名稱改為 Raku。

Raku 哲學

[編輯 | 編輯原始碼]

Perl 一直是一種靈活且功能強大的程式語言。Perl 團隊最重要的口號之一是**有多種方法可以做到**(TIMTOWTDI,發音為“Tim Toady”)。Raku 是一種非常靈活的語言,它結合了許多不同的程式設計正規化來支援各種程式設計師和不同的程式設計任務。由於這種 TIMTOWTDI 哲學,Raku 是一種非常大的程式語言,具有許多不同的特性和功能。

另一種說法是 Perl 給了你很多繩子,但你必須小心不要被它絆倒。Raku 中有許多想法在流傳,但並非所有想法都適用於所有程式設計任務。此外,Raku 中有很多事情是可能的,但可能不會被整個程式設計社群認為是“最佳實踐”。重要的是要學習如何在 Raku 中編寫某些東西,以及何時以某種方式編寫東西。如果沒有這些知識,程式很容易淪為毫無意義、無法理解的亂碼。

在本書中,我們將嘗試向您展示一些最佳實踐,並嘗試討論每個特性在哪些地方有用,哪些地方沒有用。

華夏公益教科書