※ 引述《swhaaaaa (路人甲)》之銘言:
: Perl6 出了好一陣子了
: 網路上討論的並不多
: 每個禮拜都會爬一下Perl6 blog
: 想問一下有深入研究的人
: 就語言特性來說如果Perl6在調好效能後(網路的討論,Perl6的Spec,似乎很複雜)
: 是否值得一學
最近看了一下 Perl 6 的官方 reference 和一些書籍
稍微聊一下好了,但我不是程式語言和編譯器的專家
若講錯請不吝指正
可喜可賀的地方:
- Perl 6 有內建的物件系統
不用像 Perl 5 般,需面對混亂不堪的物件系統
- Regex 一樣很強
Perl 家族在文字處理仍然是很厲害的
- 內建 grammer aka parser
對寫一些文字檔案解析的程式很好用
- 數字系統上有特別處理過
像 `0.1 + 0.2 - 0.3 == 0.0` 這種有理數運算可以正常運作
目前大部分的程式語言會因微小誤差而無法運作
- sigil 變比較簡單
就同一種結構一律用同一種 sigil,不會混亂
- 對複合結構支援較好 ie 多維陣列
不用再搞參考了,某種程度上也是一種簡化
有一些問題的地方:
- 多重繼承對於命名衝突的部分處理得不太好
筆者覺得這個部分有點算是設計的失誤
既然 role 都做得出來,沒有理由多重繼承做不出來
- 運算子符號太多太複雜了,很難閱讀
有些東西用函式來表示,程式碼會比較好閱讀
這大概是 Perl 家族的特色,所以 Perl 6 不是 Ruby XD
- 可以自訂運算子
前一項議題會更加惡化 Orz
為什麼無法進入實用的階段:
- 函式庫太少了,像 CSV 處理這種基本的套件雖然有
但文件很貧乏,其他的套件多多少少也是如此
前面有網友也有講到,缺乏 Rails 這種 killer application
- 現在語言太多了
Perl 剛問世的時候好用的高階直譯語言不多
但現在 (2017) 就有 Perl 5、Python、Ruby、Groovy 等高階直譯語言生態圈
除非對 Perl 6 很有愛,通常都是直接用現成的比較快
而且,還有 Go 和 Crystal 這種很好寫的編譯語言
尤其 Go 在寫後端的支援相當好,效能也不錯 (大概和 Java 差不多)
相較起來,Perl 6 套件少、效能慢
雖然目前無法進入實用的階段
不過,在 v6.c 出來後,語言特性算是穩定了
今年 (2017) 也陸續出了幾本 Perl 6 相關的書籍
代表 Perl 6 仍然有一些潛力在