白话scala系列三 Scala编程难点解析

一直想找一篇关于scala和其他语言相比难点分析的文章,今天终于找到一篇,虽然有点啰嗦,但仔细阅读后还是会有所体会。
原文链接:http://www.blogjava.net/hechi158/archive/2012/02/28/370902.html
Scala难在哪里?下面是我能想出的最主要的几条:
◆ Scala想要的东西太多。 你可以拿Scala像Java那样编程。这是一种福气,也是一种诅咒,但我从长远的角度看,更多的是一种诅咒。关于它的面向对象vs 面向函数的争议太多。对于小的开发团队,这些争议和你所采取的选择关系不大,但当你的团队有相当的人数,你试图教会这些Java程序员使用Scala,而 他们又非真心的想学时,这成了相当讨厌的事。 Scala语言的巨大优势会在你使用函数式编程时不言自明的显露出来,但如果你只把自己当成面向对象的程序员,它的优势你是不可能看到的。 对于这种情况,较少功能特征/可选性的语言(例如Java或Ruby)就显得容易些。你不用费脑筋去做出选择。
◆ 集成开发工具对它的支持很弱,而且以后也不会改善。 Scala的Eclipse插件很差劲。从此我开始使用 Scala语言五年来一直很差劲,它总是让人感觉“可以做的更好”,但却一直这样差劲。IntelliJ对Scala的支持还凑合。但在IDE里需要使用 各种模式的人会找不到一个好用的。Scala的模式各式各样又互不关联,如果你不讨厌使用Emacs或Vi或TextMate编程,那使用 IntelliJ开发Scala是个不错的选择。如果你期待着一个像Java IDE那样的东西,你找不到,而且永远找不到,因为Scala的强大能力是不能通过简单的模板表现出来的,你需要提供太多的信息资源给IDE,它里面的类 型安全(TypeSafe)检查的复杂,即使你银行里有3百万美元,也没有公司敢出来担保。
◆ Scala的类型系统异常的强大,但它却让你茫然不知所措。 在ScalaDocs里,类型符号复杂的让人恐怖。看着flatMap [B, That] (f: (A) ⇒ Traversable[B])(implicit bf: CanBuildFrom[List[A], B, That]) : That,是不是会让你有想逃的感觉?这是一个初学者每天都会用,一天用20次的方法,很恐怖吧。Scala的文档须要一种调整来隐藏它的复杂度,让人们在实际使用中更容易的获取这flatMap的强大能力。类型系统以及相关的文档需要一种更简化的形式,把复杂性隐藏在程序包内,对最终用户要表现出简单的 接口。
◆ 当新程序员来维护老程序员写的Scala代码时,需要去理解代码中的风格和模式。 Scala的代码会使业务逻辑直接表现在最外层(而不是循环语句或复杂IF语句四处分布),如果代码中存在风格习惯,业务逻辑就不是那么直接。没有风格也 是个问题,但最终,整个团队需要统一接受这样的风格模式。在Ruby和Rails编程中也是这样,hashmap替代了所有其它种的编程方法。但在 Rails里,风格是统一的(尽管没有类型检查),人们很容易理解,因为它就是这种“方式”。在Java里,代码模板由IDE生成,程序员养成了很容易发 现其中的模式的能力。但在 Scala中却不是这样,各种风格迥异,每个开发团队里都不相同。

你可能感兴趣的:(大数据分析,scala)