位元詩人 [Raku] 程式設計教學:簡介

Facebook Twitter LinkedIn LINE Skype EverNote GMail Yahoo Email

Perl 家族語言

Perl 家族有兩個語言,一個是廣為人知的 Perl,一個則是相對較不知名的 Raku。原本 Raku 叫做 Perl 6,在西元 2019 年下半年時換成現在的名字 (參考這裡)。

更換名字的意義在於 Raku 在語法上不是另一個 Perl,只是受到 Perl 的啟發。附帶一提,由於原本的 Perl 6 的版本號被 Raku 占去了,新版的 Perl 的大版本號直接來到 Perl 7。

掃除 Perl 的歷史包袱

Raku 的出現,是為了修改 Perl 的一些歷史議題。由於 Perl 已經在許多系統中廣泛使用,直接修改 Perl 而造成語法不相容的話,對 Perl 社群的傷害相當大。因此,Raku 從頭開始設計,和 Perl 在語法上有相當的差異,可視為一個全新的語言。

同時間,Perl 仍然持續維護著。一些在 Raku 所發展出來的的特性或概念又回頭影響 Perl,像 Moose 物件系統等。

Raku 的發展

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

Raku 的學習資源

先前 Raku 本身尚不穩定,很難將 Raku 用在實際的情境中。隨著 Raku 的語法穩定下來,Raku 社群開始嘗試推廣 Raku。例如,最近出現了一些 Raku (當時仍為 Perl 6) 的新書,像是 (順序無特別意義):

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

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

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

本系列文章的方向

由於 Raku 的語法特性相當豐富,如果要一股腦地全部記起來,反而容易迷失在細節中。Raku 也有 Perl 家族的特性,有時候在語法特性太過頭了,提供過多冗餘的語法;其實,即使僅學習其中一部分的 Raku 語法,就可以開始撰寫程式了。

在這份教學文件中,我們不會羅列所有 Raku 的特性,而會擷取較適合初學者的部分,以漸近性的方式介紹 Raku;待熟悉 Raku 以後,再慢慢學習其他部分即可。

關於作者

身為資訊領域碩士,位元詩人 (ByteBard) 認為開發應用程式的目的是為社會帶來價值。如果在這個過程中該軟體能成為永續經營的項目,那就是開發者和使用者雙贏的局面。

位元詩人喜歡用開源技術來解決各式各樣的問題,但必要時對專有技術也不排斥。閒暇之餘,位元詩人將所學寫成文章,放在這個網站上和大家分享。