Created by odersky on 2011-01-16. Updated: 2011-01-16, 17:35 java
Scala有一些善變和靈活。它令許多編程任務變得簡單,可是同時它還包含了一些複雜的結構以便專家來設計真正高級的,類型安全的類庫。這意味着,根據你審視代碼的角度不一樣,Scala看上去可能很簡單,也可能很複雜。可是哪些對初學者來講是簡單的,哪些是複雜的呢?其實,每一個人都有本身的準則。然而,我卻試圖給出一個粗糙的分類。 express
我但願這樣作可以對初學者選擇學習主題的順序有所幫助,而且可以給教師和書的做者之內容組織順序上的建議。 編程
我假設編程者有很好的java的知識,所以咱們理所固然的認爲您對java1.4是很是瞭解的。若是不是這樣的話,一些入門級的概念好比類和異常將要被移動到更高的級別上。 安全
我也區分了Scala程序設計者和Scala類庫設計者。由於這兩者所須要的技能的確是徹底不一樣的。 閉包
級別A1:初級程序設計者 工具
l 和java類似的語句與表達式:標準操做符,方法調用,條件語句,循環,try/catch 學習
l 類,對象,def,val,var,import,package spa
l 方法調用使用記號:好比+-*%均可以定義成方法 設計
l 簡單的閉包 對象
l 使用集合類以及過濾等
l For表達式
級別 A2:中級程序設計者
l 模式匹配
l 特徵組合
l 遞歸,部分尾遞歸
l XML字面值
級別 A3:專家程序設計者
l 摺疊(Folds),例如方法的左摺疊,右摺疊
l 流和數據延遲結構
l Actors
l Combinator parsers
級別 L1: 初級類庫設計者
級別L2: 資深類庫設計者
級別L3: 專家類庫設計者
正如我以前所說的,類庫設計者和程序編寫者所須要的技能組合是徹底不一樣的。可是若是我必定要將其放在一塊兒的話,我會作以下的組合:
A1, A2/L1, A3/L2, L3
也就是說,中級程序設計者和初級類庫設計者在一個難度級別上。高級程序設計者和資深類庫設計者在同一個級別上。
澄清:級別A1的程序設計者能夠很好的編程。若是他來自java的話可能很快就能達到這個級別。達到A2級別無疑會極大的提升開發效率。級別A3是專家的級別,他們一般會面對一些特殊的任務,不是每一個人都須要達到這個級別。對於類庫設計者來講也是同樣的。級別L1和L2提供的工具能夠極好的進行類庫設計了。有一些類庫須要L3的某些元素,例如implicits和higher-kinded types。可是即便使用這些元素,類庫也不會本身變得更好,並且每每拔苗助長。