Perl 6 程式設計教學:緣起

Perl 家族有兩個語言,一個是廣為人知的 Perl 5,一個則是相對較不知名的 Perl 6。Perl 6 的出現,是為了修改 Perl 5 的一些歷史議題。由於 Perl 5 已經在許多系統中廣泛使用,直接修改 Perl 5 而造成語法不相容的話,對 Perl 社群的傷害相當大。因此,Perl 6 從頭開始設計,和 Perl 5 在語法上有相當的差異,可視為一個全新的語言。同時間,Perl 5 仍然持續維護著,一些 Perl 6 的概念又回頭影響 Perl 5,像 Moose 物件系統等。

在 2015 年十二月後,Perl 6 發布第一個正式版本 (v6.c),語法特性大抵上可說是穩定下來了。不過,觀察 Perl 6 的套件可以發現,Perl 6 目前的社群套件仍然相當薄弱,離實用還有一大段路要走。目前暫時的解決方式是使用 Perl 5 相容模式,直接引用 Perl 5 套件;另外,也可以從 Perl 6 引用 C、C++、Python 的套件。如果 Perl 6 還不能正式上線,為什麼要撰寫 Perl 6 的教程?

一方面是筆者的私心,Perl 5 是筆者第一個深入學習的語言,後來因不同需求陸續學了許多其他的程式語言,不過,仍然喜歡 Perl 或 Ruby 這種風格的語言。現在有許多程式語言出現,Perl 的社群相對就萎縮了。這幾年,除了幾本常青的 Perl 書籍,包括 Programming Perl (Perl 程式設計)Learning Perl (Perl 學習手冊)Intermediate Perl (Perl 進階手冊)Modern Perl 以外,很少看到 Perl 的新書。不過,Perl 在文字處理、日常任務、系統管理上,仍是相當實用的工具。

隨著 Perl 6 的語法穩定下來,Perl 社群開始嘗試推廣 Perl 6。例如,最近出現了一些 Perl 6 的新書,像是 (順序無特別意義):

  • Perl 6 at a Glance, DeepText, 2017 (獨立出版)
  • Think Perl 6, O’Reilly, 2017
  • Learning Perl 6, O’Reilly (尚未出版)
  • Perl 6 Fundamentals, Apress, 2017
  • Perl 6 Deep Dive, Packt, 2017

如果觀察一下這些書籍的內容,可發現這些書籍多集中在討論 Perl 6 語法本身,對於實際的應用層面則較少提及。某種程度上,這也反映了 Perl 6 社群的現況。

雖然 Perl 6 官網也有一些 Perl 6 的資料,這些資料的風格較接近參考指引 (reference),充滿許多細節,相對不易閱讀。此外,比起先前所列的英文資料,中文資料就更少了。有鑑於此,筆者開始撰寫 Perl 6 的教學文件,希望能達到拋磚引玉的效果。

由於 Perl 6 的語法特性相當豐富,如果要一股腦地全部記起來,反而容易迷失在細節中。Perl 6 也有 Perl 家族的特性,有時候在語法特性太過頭了,提供過多冗餘的語法;其實,即使僅學習其中一部分的 Perl 6 語法,就可以開始撰寫程式了。在這份教學文件中,我們不會羅列所有 Perl 6 的特性,而會擷取較適合初學者的部分,以漸近性的方式介紹 Perl 6;待熟悉 Perl 6 以後,再慢慢學習其他部分即可。

comments powered by Disqus