Scala学习笔记番外篇-学习曲线和应用前景

学习曲线

学习曲线

初阶

把<<scala编程>>或者<<快学Scala>>这样的书大概翻过一遍,就差不多能用了

分号可选
多行字符串
val
object
trait
pattern matching
类型推断
map/filter/flatMap
for表达式
implicit

可能遇到的问题有:

无法忍受它的编译速度、
各种类库的缺失、
以及各种各样的编译错误

进阶

因为那些真正让Scala具有吸引力、有难度的地方不在上面。比如:

类型系统、
函数式编程、
Monad

学习路线

第一块:语法糖
第一块是学习Scala的各种基本特性,比如object, trait, pattern matching等,这些知识对于一个熟练的Java程序员来说,没有太大难度。看完一本Scala书,或者参与一个不太复杂的Scala项目,基本上就可以到达。
推荐书籍: << Scala编程>> 或者 <<快学Scala>>
文章:Daily Scala: http://daily-scala.blogspot.com/
开源项目: https://github.com/inca/circumflex/tree/master/web
Circum-web是一个比较简单的scala mvc框架,代码简单、注释丰富。由于它没有用到多少函数式风格的代码,对于初学者来说,还是比较容易上手的。虽然现在用它的人不多,但不失为一个很好的学习资源。同时它还有circum-orm等项目,也可以用来学习。
第二块:类型系统
此时最困扰我们的,应该就是各种各样类型相关的编译错误,以及一些复杂难懂的类型声明。
特别是这几个方面:
路径依赖类型
非变,协变,逆变
Type class
高阶类型等

推荐书籍: 《Scala in Depth》

博客文章:
http://hongjiang.info/scala/ 中有关类型系统的文章
http://apocalisp.wordpress.com/2010/06/08/type-level-programming-in-scala/

参考语言:Haskell中的类型系统
第三块:函数式
这一块的目标就是搞懂monad,以及各种函数式编程中提到的概念。这里可能要结合其它函数式语言学习。
推荐书籍: 《Scala in Depth》
《functional programming in scala》

推荐博客:
http://hongjiang.info/scala/ 中关于monad的文章
Manods are elephants系列: http://james-iry.blogspot.com/2007/09/monads-are-elephants-part-1.html
论面向组合子程序设计方法: http://www.blogjava.net/ajoo/category/6968.html
Learning scalaz: http://eed3si9n.com/learning-scalaz/

推荐库:scalaz
推荐语言:Haskell
第四块:生态
前三块基本上都是语言层面,这一块是库,比如一些我们经常用到的,或者scala中一些很有名的库:
构建工具: sbt
scalatest/specs2
scalaz
akka
spark

这里要根据项目和兴趣进行选择。
第五块:其它
Scala中的一些其它特性,比如:
Dynamic: http://stackoverflow.com/questions/15799811/how-does-type-dynamic-work-and-how-to-use-it
macro
scala.js, jsscala
此时如果看《Scala in Depth》这本书,基本上很难看得下去。

优点

  • 能实现对Java的兼容
  • 速度快,与Java接近
  • 可读性比Java更强

缺点

  • 社区小,国内用Scala一般都是做大数据分析
  • 相比GO语言,没有像Google这样的爸爸
  • 超过50人以上的团队,Scala开发的代码,维护起来很困难
  • 学习曲线陡峭
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值