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。可是即便使用这些元素,类库也不会本身变得更好,并且每每拔苗助长

相关文章
相关标签/搜索