2014年4月6日 星期日

scala 語言特性優缺點分析

這篇文章闡述哪些 scala 特性"我認為"是好的,哪些是不好的。因為是"我認為",所以這是一篇充滿主觀意見的文章。


優點:

  1. type inference: 這個特性可以減少程式設計師輸入重複的資訊。
  2. lazy keyword: 可以做到延遲計算的功能 
  3. currying: 讓人更容易產生 partial function。
  4. 對於接受參數型別為 => Unit(Int等),要傳參數時,可以簡單的用 { } 代替。詳見範例 1
  5. actor: 多執行緒的函式庫,用 message queue share memory 的問題(當然,還是要看你的寫法。沒寫好還是有 share memory 的問題)



範例1
def repeat(times: Int) (func: => Unit) {
  for (n <- 1 to times) func
}

repeat (5) {
  println("SSS")
}


缺點:

  1. implicit conversion: 這會影響可讀性。因為你在閱讀時,無法立刻知道他在執行時,是以何種物件在執行。不過這個特性應該是為了能夠和 jvm 整合所產生的特性。
  2. 探討 scala 的函數呼叫與自動推論型別所產生的模糊情形


結論: scala 是一個很好的語言。不過他是 function programming language 的關係,可能不會紅起來。但是下一個如果能夠吸收 scala 的優點,改進 scala 的缺點,我猜能夠成為下一個主流語言。

沒有留言:

張貼留言