技術雜談:Perl 6 小感 - 開源教學
文章推薦指數: 80 %
Perl 6 是Perl 家族的新成員,在2015 年十二月發布了第一個正式版(v6.c),代表其語言特性大抵上穩定了下來。
在今年年初開始,陸續有數本.
由MichelleChen撰寫。
最後修改於西元2017年09月24日
開源教學技術雜談Perl6小感
Perl6是Perl家族的新成員,在2015年十二月發布了第一個正式版(v6.c),代表其語言特性大抵上穩定了下來。
在今年年初開始,陸續有數本Perl6相關的書籍問世,代表Perl6社群開始試著向外拓展。
筆者最近利用一些時間學習Perl6的核心特性,在此向各位讀者分享一些心得,做為使用Perl6的參考。
TheGood
Perl6最值得稱許的特性,就是內建一套完整的物件系統。
原先Perl5的物件系統相對簡單,有許多開發者試圖改善Perl5的物件系統,反而造成Perl5物件系統的混亂局面,直到引入Moose後,Perl5才有一個社群公認的物件系統。
Perl6的物件系統支援不少特性,像是封裝、繼承、Role(類似Java8的介面)、函式重載、運算子重載、多型等。
Perl家族的特長在於文字處理,而Perl6也延續這個優良的傳統。
像是Perl6內建一套完整的常規表示式引擎。
此外,Perl6的Grammer,將語法分析器(parser)內建在語言特性中,在程式語言中是相對少見的。
透過Grammer,可以用來處理常規表示式無法處理的問題,像是解析HTML、XML或其他複雜的文字檔案。
另外,Perl6的數字系統有特別處理過。
像是0.1+0.2-0.3==0.0這種有理數的運算,在大部分的程式語言,都會有一些微小的誤差而無法正確運算,而Perl6可以得到正確的結果。
目前Perl6速度相對較慢,其數字系統是否足以用於實際情境,仍有待觀察。
Perl6仍然保留sigil這套變數字首,比起Perl6則相對簡化。
針對不同類型的變數,像是純量(scalar)、陣列(array)、雜湊(hash)、副程式(subroutine)等,不需要再頻繁轉換,同一種變數一律使用同一種sigil即可。
對於Perl5程式設計者來說,一開始會不太習慣,但一小段時間後,會發現新的規則更簡單好用。
Perl6對於複合資料結構的支援較先前改善,像是多維陣列(multi-dimensionalarray),不需要透過參考(reference)這種中介結構,可以直接呼叫,大幅簡化了先前使用參考所需的特殊語法和觀念。
TheBad
雖然Perl6支援多重繼承,但對於方法名稱衝突卻是使用特定演算法自動處理,而無法人為介入。
由於Role對於方法名稱衝突會引發錯誤,但多重繼承不會,筆者認為這項特性算是設計上的失誤。
在Perl6正式版推出後,這個特性應該不太可能再大改,目前比較好的方法就是避免使用多重繼承。
Perl6大量使用特殊符號代替函式或方法呼叫,雖然語法比較簡短,但是某種程度上會增加閱讀的困難;即使筆者先前有使用Perl5的經驗,在讀官方文件時,仍會對過多的符號產生排斥感。
此外,特殊符號比較難透過搜尋引擎尋找相關文章,對於初學者來說也是相對不利。
Perl6仍然相當靈活,甚至可以自訂新的運算子,在某些情境下,這個特性有些幫助,像是數算運算等。
但是,筆者認為這個特性要審慎使用,過多的特殊符號,會使得程式碼難以閱讀和維護。
TheUgly
雖然Perl6有豐富的語言特性,缺乏足夠的套件,使得Perl6難以推廣。
尤其,缺乏RubyonRails這種重量級軟體(killerapplication),更使得使用者不願轉換到新語言。
雖然Perl6這個計畫拖了得久,但Perl6在2015年十二月才發布第一個正式版,實際的年齡仍相當年輕。
這方面只能依賴有心的社群成員持續努力。
目前的時空背景和Perl當初問世時大不相同,使得Perl6難以出頭。
Perl剛問世時,好的高階直譯語言很少,由於Perl在文字處理的長處,使得Perl大量用於CGI網頁程式。
然而,現在至少有Perl5、Python、Ruby、Groovy等數個成熟的語言生態圈,轉換到Perl6的動機相對薄弱。
此外,近年來有數個易於撰寫的編譯語言,像是Go和Crystal等,更加壓縮Perl6的發展機會。
TheFuture
目前大部分Perl6相關的學習資源多圍繞在語言特性上,較缺乏實務面的運用,某種程度反映了Perl6的現狀。
雖然Perl6有豐富的特性,Perl6虛擬機器的速度仍需加強,這也使得程式設計者暫時不願轉換。
Perl6語言本身和相關工具大抵上已經穩定,若能在套件和框架上加強,仍然大有可為。
Postscript
筆者在這裡放上了Raku(原Perl6)的學習筆記,會於後續更新內容,若有需要的讀者可前往參考。
本文目錄
TheGoodTheBadTheUglyTheFuturePostscript
回頁頂
回首頁
延伸文章資訊
- 1【直擊Modern Web 2015】Perl 6 核心貢獻者唐鳳談開源之道
Perl6核心貢獻者唐鳳表示,現在要在網路上找正確答案,需要的不是提出問題,而是先給一個很爛的答案,就會有眾多高手跳出來熱烈討論並糾正你。
- 2Perl6的價格推薦- 2022年10月| 比價比個夠BigGo
perl6價格推薦共67筆商品。還有powerlab、persil寶瀅、medi peel 面膜、medi peel 牙膏、Jawa Perak。現貨推薦與歷史價格一站比價,最低價格都在BigGo!
- 3技術雜談:Perl 6 小感 - 開源教學
Perl 6 是Perl 家族的新成員,在2015 年十二月發布了第一個正式版(v6.c),代表其語言特性大抵上穩定了下來。在今年年初開始,陸續有數本.
- 4"Perl 6 Document archive" - Raku Programming Language
The vision for Perl 6 is more than simply a rewrite of Perl 5. By separating the parsing from the...
- 5Raku - 維基百科,自由的百科全書
Raku,原名Perl 6,系perl程式語言家族的成員之一,通用程式設計語言,支援多重編程範式,漸進式類型。Raku主要設計者為拉里·沃爾。作為Perl的後繼者,在2000年開始 ...