在我的學習scala的過程當中,產生了寫一系列隨筆的想法,這些隨筆包括:翻譯自官網、其餘英文網站的文章以及本身的心得體會,本文章做爲這個系列中的第一個。html
因爲本人能力所限,以及對scala還處於初級階段,有任何錯誤或者問題,歡迎你們指正,多謝。web
原文連接:http://docs.scala-lang.org/tour/tour-of-scala.html編程
scala是一個現代的多範式編程語言,經過簡潔、優雅和類型安全的方式搭建通用編程模型。它巧妙的結合了面向對象和函數式編程特性。數組
scala是面向對象的
scala是一個純粹的面嚮對象語言,全部的值都是對象。類型和對象的行爲經過class和trait的方式進行描述。class能夠被子類繼承,經過靈活的mixin模式組裝機制來實現多繼承的效果。安全
scala是函數式編程
scala也是一種函數式編程,每一個函數都是值。scala提供一種輕量語法來定義匿名函數,它支持高階函數,它支持內置函數,支持柯里化。scala的case class和內置的規則匹配模型,在許多函數式編程語言中都在使用。singleton object提供了一種方便的方式,將不屬於類實例的函數組合。
進一步講,scala的規則匹配概念擴展自XML數據處理,藉助先行匹配的模式,經過extractor object實現。在上下文中,for 推導式有助於準確查詢。這些特性使scala成爲開發web服務相似應用的理想語言。
scala是靜態類型
Scala擁有強大的靜態類型系統,抽象能夠經過安全的、一致的方式進行使用。
一個本地類型引伸機制幫助用戶不須要編寫冗餘的類型信息。綜合上述特性,scala爲安全的抽象複用和類型安全擴展提供了一個強有力的基礎。
scala是可擴展的
實踐中,特定領域應用的開發須要特定領域語言的支持。scala提供一種統一的語言組合機制。很是方便地經過庫的方式添加新的語言組件。
Scala與JRE有很好的交互。特別是與主流面向對象編程語言Java的結合很是天然。Java的新特性例如註解和泛型受到scala的啓發。那些在Java中沒有相似的特性,如默認值和命名式參數,也會以合理的方式進行編譯。scala與Java有相似的編譯模型,容許訪問數以千計的已經存在的高質量庫。