Java 虽然是使用人数最多的语言, 但是其冗余的书写方式为人所诟病. Scala 不仅完全兼容 Java 而且还带来了函数式编程以及 Actor 模型并发机制. 我现在已经对 Scala 语言蠢蠢欲动了, 敢问 V2EX 有 Scala 爱好者吗? 你们撸 Scala 感觉如何? 有什么切身感受的好处或坏处吗?
1
zartouch 2015-10-08 00:52:33 +08:00
好处就是简洁,可以少些很多代码。很多 java 的设计模式,在 scala 是语言本身的特性,不需要写很多累赘的东西。
坑也多,编译速度慢。和一些老的 java 第三方库兼容的不太好, 2.11 版本之前还有什么 case class 只能有 22 个 parameter 的限制。一些特性比如 implicit 用起来会发现其实后期会使项目维护更困难和 debug ,并没有想象的那么美好。 其他的诸如语言表述方式过多,组员写法不统一或者用了太多高级特性使得别人阅读起来很困难也会增加项目成本。 |
2
chanlion OP @zartouch 谢谢你的回答, 我却也打算阅读<Scala 编程中文> 一书来了解一下, 但听你这么一说确实不那么美好, 这些我之前也是略有耳闻. 并且我也觉得用 Scala 开发项目的团队实在是少. 您是有用过 Scala 来开发正式项目吗? 是哪一类型的? 所用框架有哪些? 还望告知一二.
|
3
zartouch 2015-10-09 00:14:00 +08:00
@chanlion 恩,我是做金融 IT 的,股票衍生品的交易系统。团队在用所以不得不用。框架的话 scala 的就用了 akka 。其他都是 java 的库了,没什么特别的。
|
4
chanlion OP 金融 IT 确有这方面需求,因系统较大而复杂。所以可以忍受 Scala 所带来的性能下降并期待期待来的编写上的灵活性。我已在看相关书籍,想来了解一点无妨。只是语言组件过多,且社区不大想必在生产中遇到不少陷阱。
|
6
zartouch 2015-10-09 19:47:15 +08:00
@chanlion 开发工具就是 java 常用的 ide - intellij 版本是 14.1.4 , 成熟度还远远无法和 java 相比。 其实 scala 对于 java 性能在大多数场合是差不多的,特别是对于应用层来说,毕竟都是编译成 jvm 的 byte code 在 jvm 上跑,所以性能不是太大的问题。而对于不是特别擅长编程的 quant 来讲,他们更容易用 functional 编程语言写一些交易策略,虽然最后我们是要去优化的。当然一些核心 lib 还是 c++写的。 金融方面,据我所知现在好几家投行都在尝试 scala 了。其他行业就不太了解了
|
7
chanlion OP @zartouch 真是非常感谢您的解答,对于想快速了解 Scala 的实际使用情况的我来说有莫大的帮助。我本是看重 Scala 的函数式以及 Actor 模型,私念其对游戏后端开发有所助益,然此语言可以定义自己的操作符作为函数,以及将 () 翻译为 apply 方法这些语法糖等等,这些过于灵活的东西会不会造成某种滥用,导致各位同事所写代码风格不统一,而造成理解上的困难? 对这一点是我几日来读 Scala 书的一个大概之感观,难免偏颇,还望赐教。
|
8
astray1988 2015-11-28 13:33:24 +08:00 1
TypeSafe Stack 爱好者, 平时工作都是用的 scala play 框架,最近在钻研 akka 跟 spark , 用 scala 前后 2 年多了,感觉写起来感觉很舒服,开发效率比 java 高很多,最喜欢 scala 的 pattern matching 了,市面上的 scala , play ,等这些相关学习资料不是很丰富,中文翻译更是良莠不济,估计给相当一部分初学者如果对英文阅读不习惯的话还是有一定困难的。而且 play , spark ,等框架迭代速度快,相应的很多市面书籍都内容相对滞后了,阅读官方 doc 是最好的选择...
|