[Groovy] 大家对scala的看法如何?

徐风子 2009-07-23
没有别的意思,也不想引发口水战,我以前也学习过groovy很久,也用groovy写了一些小东西。从Groovy创始人James Strachan倒戈才开始注意到scala的,网上查找了一些资料,发现scala的发展势头很强大呀。而且scala也确实改变了我对静态语言不好的看法。

大家觉得scala怎么样?
JohnnyJian 2009-07-23
“Groovy创始人James Strachan倒戈”这句很刺耳……James早就不是Groovyer了,哪天Guillaume Laforge和Jochen Theodorou说出那样的话的时候再说吧
JohnnyJian 2009-07-23
http://www.infoq.com/cn/news/2008/01/scala_or_groovy
我觉得这篇文章有一些观点很有道理(虽然文章是旧了点),Scala的优势是性能,但是它的缺点是与Java截然不同的语法,“为什么事情非要为了不同而不同?Scala让Groovy看起来比以前更加美味可口”。
Scala的其他一些优势也在逐渐消失:Scala有Actor,Groovy通过第三方的GParallelizer也支持(估计成熟之后会加到Groovy的发行版里);Scala的模式匹配,Groovy也准备在1.7(还是1.8?不记得了)版本中支持。
但是实际上,每种语言都有自己适用的场景,Scala适用于需要高性能的多线程环境,Groovy适用于DSL、测试、快速开发等,还是应该根据自己的需要和不同的场景进行选择。
徐风子 2009-07-23
首先声明声明,我没有到groovy来踢馆子的意思。  选择到这儿来发帖,有部分原因还是我对groovy更熟悉些。

确实是James Strachan创造了Groovy,(具体我没有去查,不过看“James Strachan”的博客,大家并没有对这点提出异议),但是“倒戈”这个词用得不好,这点我道歉。

你提到的那篇文章我在学groovy时也看到了:
“但是它的缺点是与Java截然不同的语法,为什么事情非要为了不同而不同?”
我个人觉得这句话是个很大的误导(以前我就是因为这句话而放弃了看scala的),基本上来说没有一个正常人人会:“为了不同而不同”,scala的语法熟悉了以后会发现都是有道理的(个人觉得也是挺优美的),scala是为了保证“自认为的”语法上的完美,所以抛弃很多他认为java不对的语法,但是这确实造成的学习曲线高昂的代价。

我认为scala最大的优势(其实应该说是 区别),是他是静态语言。
对于静态语言IDE能提供很大的帮助,函数、域的调用提示、检查,重构。这些都是动态语言IDE无法做到的,有一种观点认为“大型系统必须要架构在静态语言之上”,我比较认同这种观点。

当然动态语言灵活快捷,这些都是公认的,这方面想必大家都深有感受,我就不多说了。
mathgl 2009-07-23
scala 的actor不错。。类似erlang的做法。

而且性能也不错。和java基本上持平。我下一个版本的几何运算引擎打算使用scala写。以前的java不支持 operator overloading有些东西做得太别扭了。

scala唯一不好的是那个eclipse的plugin太烂了。。bug奇多无比。
JohnnyJian 2009-07-24
James Strachan的确是Groovy的创始人(http://en.wikipedia.org/wiki/Groovy_%28programming_language%29#History),这是毫无疑问的。但是,据我所知,他在Groovy第一个正式版(1.0)发布之前就退出Groovy的社区了。当年Groovy开发处于停滞的时候(04年还是05年?),是Guillaume Laforge接手的,并一直作为Groovy的项目经理至今。对于Groovy,Guillaume可谓是再生父母,他对Groovy的重要性远比James这个“创始人”大。

实际上,我对Scala并不抗拒,而且我也在学Scala。我真正反感的,是拿James这个“创始人”来说事,而这个“创始人”对Groovy的影响其实并不大。

关于学习曲线的问题,我觉得这对Scala来说影响很大。我昨天刚看过一篇文章(http://codetojoy.blogspot.com/2009/06/case-for-groovy.html,要翻墙)说得很有道理,对于个人来说,他可以说他能学任何的语言,但是对于一个团队来说,学习成本是要乘以n的。这么看来,对于本来使用Java的团队来说,Groovy还是比较理想的选择。
key232323 2009-07-25
我也备受那个blog的影响,
最近一个客户要用scala lift作web应用,我实在是找不出理由说服他用grails/php

估计也要学习一阵子了
说实话,scala的语法比java难懂些(不懂FP),而且到现在我还没感受到actor operator reloading的好处在哪,可能平时接触面太少了
徐风子 2009-07-27
对个人学习来说scala是一种有利的学习(JohnnyJian好像没有学过scala,推荐看一下。)
给我的感觉groovy像一个java的加强和工具集合,对于2004年以来没有大变的java来说确实是一个很好的补充,但是java已经15年了,难道不应该来一次翻天覆地的变化?从一种新的、彻底的角度重新看待编程,对个人的思想来说也是一种很好的发展。

关于团队开发方面是我忽视了,scala的学习曲线确实不太适合团队的进入,相比之下groovy要好得多。

现在java还占据主流的情况下,其他jvm程序估计还是以多语言编程的方式逐步切入进java系统吧。


key232323:
好像你学php、ruby比较多,java方面少一点。actor operator reloading,这个我没太看明白,是说的 “行动类”和“操作符重载”吗?“行动类”我也刚开始学,学得不深不敢乱说,只是感觉到他以消息驱动的方式确实能解决同步问题。 “操作符重载”,对于对台语言来说应该没啥新奇的,不过对于Java来说就是很大的改善了,你看看BigDecimal类的实现就知道了。
JohnnyJian 2009-07-27
我很久之前就开始学Scala了,只是因为不常看,所以到现在都还处在入门阶段,呵呵

Actor是由Carl Hewitt在1973年提出的并发模型,它可以解决多线程中的死锁、饿死等问题。推荐看看这篇文章:http://ruben.savanne.be/articles/concurrency-in-erlang-scala
liuruncheng 2009-08-04
完全支持Groovy啦,与Java一脉相承,非常友好,并且得到SpringSource的强烈支持。创始人说两句又管什么用呢?Groovy是属于社区的,属于大众的,他左右不了Groovy的自然发展
Global site tag (gtag.js) - Google Analytics