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

vii779 2009-08-26
Groovy刚发布的时候,就已经开始使用了。Groovy的语法简单也比较灵活,容易上手,写DSL也不错,和java几乎是无缝集成,优点就不多说了。

对Groovy不满意的有三点:
1 动态语言,很难做到代码提示,编译期又不能类型检测,项目一大,就很难维护,重构就更不可能了。
2 运行速度太慢,所有对java对象的调用就是不断的反射加反射。
3 很难调试,虽然可以设置断点,但是groovy运行期生成的代码实在太臃肿,你自己写的一行代码,groovy会给你生成不下十行,根本就没法跟踪了。

去年开始接触scala,刚开始看的时候,因为已经习惯了groovy的语法,看到scala的语法只想吐。后来想做一套DSL,groovy也可以做,但是做出来的没法在ide里面进行语法自动提示,易用性就大打折扣了。抱着试试看的心态,深入研究了一下scala的语法,耐心看下以后,真是别有洞天,很多自己想要的语法特性,scala都支持了,而且scala语法的高度 可扩展性,让你可以随心所欲打造自己新语法,开发效率大幅的提升。

现在项目已经不再用Groovy,基本是用Scala在做,底层配合一些Java代码,自我感觉比
Groovy方式开发效率要高很多。

Scala入门有一定的门槛,自我感觉Scala官网给出的例子都是比较复杂的写法,其实Scala的语句可以做到很精简,例如:
def hello = "hello world"
刚开始学的人以为是一条赋值语句,其实不然,这是声明了一个名为hello的方法,该方法返回"hello world"
你也可以写成完整的形式
def hello():String = {
  return "hello world";
}


Scala的特性还有很多,就不一一列举了,就个人感觉而言,Scala比较符合我的口味,当然萝卜青菜各有所爱,自己用着合适就行了。




timshaw9791 2009-08-27
我没学scala,但是我学了groovy,我觉得groovy和scala不能放在一起比,正如《高效率的程序员》中提到的,我们需要三方面的语言,DSL,日常脚本语言,以及底层功能强大通用的静态语言。你认为scala是属于哪一类?
底层的那个静态语言,作为稳固的平台坚实的基础我们当然选java,这一层我们有及其庞大的库重用来提高我们的开发效率,scala应该取代不了吧?
作为日常语言,显然需要动态的,方便书写的,还要开大型ide写一大堆,运行环境也好不到哪里去的scala?这里显然scala也比不上groovy(今天还用jEdit写了个备份数据库的groovy脚本,觉得这玩意太有意思了)只有最后一个DSL,才是scala暂时能待的地方,但是既然我们有了groovy,为什么不直接上groovy呢,他的动态特点还能让我们作出高可配置性的产品快速相应用户呢。反过来还学一个scala,语法都容易搞混,我觉得我们类就累就累在这里,不要忘记了我们还有很多东西要学,记得我刚学actionscript后,我敲java代码敲的快精神分裂了。。。。
徐风子 2009-08-31
timshaw9791 写道
我没学scala,但是我学了groovy …………

试着学一下scala再来评价它如何?很多你以为“显然”的事在更多了解以后或许就那么不显然了。
至于又要学新东西,呵呵,那有啥法呢?谁叫你进入这行了,学习才能前进呀,不能老守着旧东西。从c到c++,从c++到java,还有javascript、ruby………… 世界在前进呀。
timshaw9791 2009-08-31
我很欣赏一句话(虽然偏激了些):只有没找到目标的人才忙着不停的学这学那,当年ejb多么流行还历历在目呢,李笑来还有一句话:我们感兴趣的东西不一定是对自己有用的东西。
徐风子 2009-09-01
timshaw9791 写道
我很欣赏一句话(虽然偏激了些):只有没找到目标的人才忙着不停的学这学那,当年ejb多么流行还历历在目呢,李笑来还有一句话:我们感兴趣的东西不一定是对自己有用的东西。

有目标就不需要学习了吗?
学习是大前提,如果你否定这个,那我真无话可说了。

对于你后面说的,我更喜欢王国维说过的一句话:
“学之义不明于天下久矣。今之言学者,有新旧之争,有中西之争,有有用之学与无用之学之争。余正告天下曰:学无新旧也,无中西也,无有用无用也。凡立此名者,均不学之徒。即学焉,而未尝知学者也。”
呵呵,跑题了……
徐风子 2009-09-01
当然,人的精力有限,学习方向的选择也很重要,不过这不代表就可以抱着某样东西,蒙上眼睛不看别的,而且还认为自己已经很了解其余的一切了。
至于ejb,那只是个方向选择的问题,或许ejb死了,但当年一个学习ejb的人和一个什么都不学的人,我觉得,前者收获更多。
当然,如果你志不在技术方面,那是我说错了。
vii779 2009-09-01
平时开发环境用的是eclipse,groovy和scala的eclipse插件都不是很稳定,有不少bug。
两者的编译速度相对java编译器来说都很慢,但是groovy的编译速度太慢了,脚本一但多了,编译要等很多分钟,scala相对来说好一些,虽然也慢,但比groovy快太多了,相对来说还是可以接受的。
scala是静态类型系统,又具有类型推断机制,ide能很好的实现代码辅助提示以及错误检测功能,groovy就很做到这点了,就大型项目的开发效率而言,scala比较有优势。

以前一直用java做底层开发,现在之所以选择scala做底层开发,一是不太满意java语法的啰嗦,死板和低效率。二是scala不仅仅带来的是语法糖的便利,而是对整个系统架构的一些转变。 以前做框架时有些想法,用java语法要么很难实现,就算能实现的也是憋手蹩脚,绕了很多圈,显得很笨拙,现在用scala来实现,感觉是那么的自然和顺畅。

scala的Eclipse插件不稳定,自己又对插件做了一些扩展,现在凑合用着,做项目还是可以的,对于我们来说,开发环境如果没有语法自动提示功能,是不能接受的。

groovy有些语法还是挺好的,希望scala也能借鉴过来,比如?.语法。听说java7已经实现类似的语法机制了 。
徐风子 2009-09-02
vii779 写道
自己又对插件做了一些扩展

就看见这句话了 
天机老人 2009-09-09
徐风子 写道
vii779 写道
自己又对插件做了一些扩展

就看见这句话了 

那就奉献一下吧!
Javabengou 2009-10-25
信仰问题,讨论来讨论去,还不是云里雾里,你觉得什么适合那就选什么
Global site tag (gtag.js) - Google Analytics