2010-10-11 11:09 墳墓 (Brian Hsu)
Note: 這篇只是我瀏覽過 Vala Tutorial 後的筆記(就是用一些關鍵字搜尋而已),我並沒有使用過 Vala,也沒有完整的看完 Tutorial,所以這篇的資訊不一定正確。
話說最近我的噗浪河道上很多關於 Vala 這個新的程式語言的噗,不過在看文件的時候,已經非常習慣 Scala 的我,先問的卻是以下幾個問題:
- Vala 有沒有 type-inference
- 看起來有一點,但比不上 Scala 完整,只有到 Variable 層級。Vala 似乎不像 Scala 一樣,可以推測出函式的回傳值型態。
- Vala 有沒有 High-order function / lambda / closure
- 看起來是有的,High order function 的部份是使用 delegate 實現。
- Vala 有沒有 Pattern Matching(看起來是沒有)
- Vala 有沒有萬物皆物件的概念
- Vala 有沒有類似 Scala Trait 的東西
- Vala 有沒有超方便的 immutable List 可以用
- 好像沒有
- Vala 有沒有類似 Scala 的 Option 的東西
- 有 null type checking 變數宣告,可以限制 reference 不能是 null,但這和 Option[T] 還是有些許的不同
就結論而言,因為 Vala 少了我最常用的 Pattern Matching 和以及 List 這種將 high order function 內化的資料結構,以及第七項的 Option 這種概念(換個方式講,Vala 雖然有 high order function 之類的東西,但並沒有將 function programming 的典範內化),因此就比較提不起興趣了……
現在比較能體會為什麼喜歡 Haskell 的人會很難再回去用其他的程式語言,Function Programming 有太多好用方便的東西,實在讓人難以割捨,而 Scala 再把這些東西幾近天衣無縫地整合到 OO 下,只能說到目前為止,我還沒有找到比 Scala 更吸引人的程式語言了。
但另一方面,Vala 可以 compile 成 native code 以及與 C-Library 互動這點真的很棒,相較之下 Scala 就要靠比較沒那麼方便的 JNI 了……:(
回響