白话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中却不是这样,各种风格迥异,每个开发团队里都不相同。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Scala编程(第版)中英文,代码全 Martin Odersky 是Scala 编程语言的缔造者。他是瑞士洛桑理工学院(EPFL)的教授,同时也是Typesafe, Inc.(已更名为Lightbend)的创始人。他的研究方向是编程语言和系统,更具体地说,就是如何将面向对象和函数式编程风格有机地结合在一起。自2001 年起,他的主要精力集中在设计、实现和改进Scala 上。在此之前,他作为Java 泛型的合作设计者参与了Java 编程语言的开发,同时也是当前javac 参考实现的作者。他还是ACM 院士。Lex Spoon 是Semmle Ltd. 的一名软件工程师。他在EPFL 作为博士后围绕着Scala 开展了两年的工作。他拥有Georgia Tech 的博士学位,在那里他的主攻方向是动态编程语言的静态分析。除Scala 外,他还帮助开发了各类编程语言,包括动态语言Smalltalk、科学计算语言X10,以及支撑Semmle 的逻辑编程语言。他和他的夫人一起生活在Atlanta,他们有两只猫和一只吉娃娃。Bill Venners 是Artima Inc. 的主席,Artima 开发者网站(ww.artima.com)的发行人,以及Escalate Software, LLC 的联合创始人。他著有《Inside theJava Virtual Machine》,这是一本面向程序员讲解Java 平台架构和内部实现原理的书。他在《JavaWorld》杂志上的专栏很受欢迎,主题涵盖Java 内部实现、面向对象的设计和Jini。Bill 从Jini 社区创立之初便十分活跃,领导了Jini 社区的ServiceUI 项目,其API 成为Jini 服务事实上的UI 标准。他还是ScalaTest 的主要开发者和设计者,一个面向Scala 和Java 开发者的开源测试工具。 高宇翔,资深软件开发工程师和系统架构师,同时也是Scala在国内的早期布道者和实践者,曾译有《快学Scala(第2版)》、《快学Scala》(第1版)和《Scala编程》(第1版)等专业书籍。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值