Scala的級別:初學者到專家,程序員到類庫設計者

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         類,對象,defvalvarimportpackage spa

l         方法調用使用記號:好比+-*%均可以定義成方法 設計

l         簡單的閉包 對象

l         使用集合類以及過濾等

l         For表達式 

級別 A2:中級程序設計者

l         模式匹配

l         特徵組合

l         遞歸,部分尾遞歸

l         XML字面值

 

級別 A3:專家程序設計者

l         摺疊(Folds),例如方法的左摺疊,右摺疊

l         流和數據延遲結構

l         Actors

l         Combinator parsers 

級別 L1: 初級類庫設計者

  • Type parameters
  • Traits
  • Lazy vals
  • Control abstraction, currying
  • By-name parameters 

級別L2: 資深類庫設計者

  • Variance annotations
  • Existential types (e.g., to interface with Java wildcards)
  • Self type annotations and the cake pattern for dependency injection
  • Structural types (aka static duck typing)
  • Defining map/flatmap/withFilter for new kinds of for-expressions
  • Extractors 

級別L3: 專家類庫設計者

  • Early initializers
  • Abstract types
  • Implicit definitions
  • Higher-kinded types 

正如我以前所說的,類庫設計者和程序編寫者所須要的技能組合是徹底不一樣的。可是若是我必定要將其放在一塊兒的話,我會作以下的組合:

A1, A2/L1, A3/L2, L3

也就是說,中級程序設計者和初級類庫設計者在一個難度級別上。高級程序設計者和資深類庫設計者在同一個級別上。

澄清:級別A1的程序設計者能夠很好的編程。若是他來自java的話可能很快就能達到這個級別。達到A2級別無疑會極大的提升開發效率。級別A3是專家的級別,他們一般會面對一些特殊的任務,不是每一個人都須要達到這個級別。對於類庫設計者來講也是同樣的。級別L1L2提供的工具能夠極好的進行類庫設計了。有一些類庫須要L3的某些元素,例如implicitshigher-kinded types。可是即便使用這些元素,類庫也不會本身變得更好,並且每每拔苗助長

相關文章
相關標籤/搜索