`
manyinjin
  • 浏览: 91389 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

被Groovy震的第一下

阅读更多

    呵呵,下面这段代码,看起来很眼熟吧?猜猜输出的是什么?

println new URL("http://manyinjin.iteye.com").openConnection().getInputStream().getText(); 

    简单的一行语句,blog里面的东西都print了,重要的是,我只需要知道java里怎么做就行了。。。

    你甚至可以这样:

 

public class Person{
    String name;
    String idCard;
}
Person p = new Person(name:"manyinjin", idCard:"my idcard #");
println p.getAt("name");
println p.getName();

    没有学习曲线,和java完全交融,在享受java强大的服务器端技术的同时也简化了语法和显著减少了代码行数,pretty cool!

分享到:
评论
36 楼 csc365kl 2009-04-01  
没有学习曲线
太假了!!!
35 楼 mathgl 2009-03-27  
python 出现貌似是 1990年前后

81年那个 可能abc都还没出现。
34 楼 d_eye 2009-03-27  
manyinjin 写道
tinyyea 写道

概念很酷!groovy只是语法表面上动态而已,语法上充斥着魔法,最终还是要编译成java class文件,在一个JVM静态的容器中运行,本质上还是静态的。 groovy倒像是java语法动态化的一个极端。说groovy可以和java无缝结合到一起,真的,这太理想,当我在java里修改一个类的名字,我得到groovy里找到引用的地方一个个改掉,这真得很郁闷。动态语法给IDE支持造成困难,特别是重构方面,简便快捷的重构也意味着良好的维护,反之亦然,说来说去又说到动态语法不容易维护的通病。编程简单,维护困难。编程困难,维护简单。平衡一点,希望java变得再动态一点。

嗯,我看了一下它最终生成的字节码,该有什么还是有什么,有点类似cglib做的事情。Groovy用在特定的场合还是很有优势的,比如,写写测试脚本和用例什么的。但是如果真要用来做大的应用,确实会存在很多问题,比如,效率问题,维护问题等。

说的对!
33 楼 shiren1118 2009-03-26  
实现Expando类,扩展元对象协议(MOP:Meta Object Protocol)和创建DSLs

这才是它真正强大的地方吧?
32 楼 night_stalker 2009-03-26  
其实比历史的话……

python 1981
perl 1987
ruby 1995
java 1995
php 1995

动态语言出现的时间也不短了,但要被普遍接受还需要很长时间。

OOP在上世纪60年代就出现了,流行起来也花了几十年。
31 楼 linliangyi2007 2009-03-26  
coolnight 写道

例子很多,随便给个:

facebook/php...


linliangyi2007 写道
语法嘛,一切皆表象啊~~~~

看看有那么多牛人发明各种动态语言,特别这两年跟爆炸似的,然而有几个“实现良好"的互联网大型应用,或者企业级应用是跑在这些语言上面的呢?

看看每年的程序语言排行就明白了!这些排行直接说明使用各种语言人数的多少,间接说明企业招聘岗位的多少,从而也能看出在各个行业中,这些语言使用情况的多少。

发明这些语言的人不可谓不聪明,其中的原因值得思考!!




兄弟啊,表吧像PHP这样的老前辈拿出来好不好,LAMP是什么年代就流行的了?跟Java几乎同时期啊。
如果你一定要为了跟我抬杆,说明我错了,那我错了!
过渡关注与语法表象,就好比“回”字有四中写法的,这个是一种悲哀!
30 楼 coolnight 2009-03-25  

例子很多,随便给个:

facebook/php...


linliangyi2007 写道
语法嘛,一切皆表象啊~~~~

看看有那么多牛人发明各种动态语言,特别这两年跟爆炸似的,然而有几个“实现良好"的互联网大型应用,或者企业级应用是跑在这些语言上面的呢?

看看每年的程序语言排行就明白了!这些排行直接说明使用各种语言人数的多少,间接说明企业招聘岗位的多少,从而也能看出在各个行业中,这些语言使用情况的多少。

发明这些语言的人不可谓不聪明,其中的原因值得思考!!

29 楼 hatedance 2009-03-25  
Bernard 写道
就算是动态语言也应该有一套严格的语法。
就如前几楼说的URL获取内容一样。
过于灵活会让人觉得无所适从。
...
...
看看《java解惑》,java里令人抓狂的陷阱也不少。

日常说话聊天比动态语言灵活多了,也无所适从么?


Chatting is different from programming.
We want plain and straight meaning from code.
28 楼 dch1287 2009-03-24  
linliangyi2007 写道
dch1287 写道
linliangyi2007 写道
语法嘛,一切皆表象啊~~~~

看看有那么多牛人发明各种动态语言,特别这两年跟爆炸似的,然而有几个“实现良好"的互联网大型应用,或者企业级应用是跑在这些语言上面的呢?

看看每年的程序语言排行就明白了!这些排行直接说明使用各种语言人数的多少,间接说明企业招聘岗位的多少,从而也能看出在各个行业中,这些语言使用情况的多少。

发明这些语言的人不可谓不聪明,其中的原因值得思考!!


这些并不是动态语言适用的地方

你的说法换个话题:
  。。。 然而有几个“设计良好"的大型建筑,或者世界级建筑是音乐家设计的呢? 。。


你的言辞一方面透露出严重的语言歧视啊,另一方面。。(我就不说啦)

你可以继续你我的企业应用coding之路, 但是没有必要无视, 甚至歧视那些scirpting的兄弟们. 大家的目标不太一样, 怎可一概而论


哇靠,咋就上升到“歧视”的高度了?俺只是觉得各位不用过于沉醉在语言的表面而已。
难道JE上不能发表一下不同的意见?

没有歧视最好啦 就当是我误解了你的想法
27 楼 bonny 2009-03-23  
女巫の微笑 写道
真不明白 弄这么多语言出来干什么 好好的把一门语言弄通了就不错了
这样搞 永远只在皮毛上下功夫


嘿嘿。不争论不争论。我爽我自己的。
26 楼 女巫の微笑 2009-03-23  
真不明白 弄这么多语言出来干什么 好好的把一门语言弄通了就不错了
这样搞 永远只在皮毛上下功夫
25 楼 Javabengou 2009-03-23  
tinyyea 写道
概念很酷!

groovy只是语法表面上动态而已,语法上充斥着魔法,最终还是要编译成java class文件,在一个JVM静态的容器中运行,本质上还是静态的。

groovy倒像是java语法动态化的一个极端。

说groovy可以和java无缝结合到一起,真的,这太理想,当我在java里修改一个类的名字,我得到groovy里找到引用的地方一个个改掉,这真得很郁闷。

动态语法给IDE支持造成困难,特别是重构方面,简便快捷的重构也意味着良好的维护,反之亦然,说来说去又说到动态语法不容易维护的通病。

编程简单,维护困难。
编程困难,维护简单。
平衡一点,希望java变得再动态一点。


这个并不是表面的动态

动态就在于编译时不进行检查,而在运行时检查,groovy就是这样的,至于最终的文件,是因为他要在jvm上运行

至于IDE,netbeans能对ruby支持这么好,我相信对Groovy的良好支持也是时间上的问题

你说的不容易维护就不是很明白了
24 楼 ahua3515 2009-03-23  
脚本语言有脚本语言适用的环境 

有的场景真的很适用 比如做统计  跑几个临时数据分析


语言真的很精炼  会上瘾
速度方面感觉不是很慢   当你用脚本去跑统计这种事情的时候

一个统计可能跑个10分钟或几个小时

这时脚本语言本身的速度性能问题几乎不用考虑 
23 楼 jnoee 2009-03-23  
从前面的列子来看,只是语法魔法而已,没什么出彩的东西。
能不能介绍点新鲜玩意...
22 楼 linliangyi2007 2009-03-23  
dch1287 写道
linliangyi2007 写道
语法嘛,一切皆表象啊~~~~

看看有那么多牛人发明各种动态语言,特别这两年跟爆炸似的,然而有几个“实现良好"的互联网大型应用,或者企业级应用是跑在这些语言上面的呢?

看看每年的程序语言排行就明白了!这些排行直接说明使用各种语言人数的多少,间接说明企业招聘岗位的多少,从而也能看出在各个行业中,这些语言使用情况的多少。

发明这些语言的人不可谓不聪明,其中的原因值得思考!!


这些并不是动态语言适用的地方

你的说法换个话题:
  。。。 然而有几个“设计良好"的大型建筑,或者世界级建筑是音乐家设计的呢? 。。


你的言辞一方面透露出严重的语言歧视啊,另一方面。。(我就不说啦)

你可以继续你我的企业应用coding之路, 但是没有必要无视, 甚至歧视那些scirpting的兄弟们. 大家的目标不太一样, 怎可一概而论


哇靠,咋就上升到“歧视”的高度了?俺只是觉得各位不用过于沉醉在语言的表面而已。
难道JE上不能发表一下不同的意见?
21 楼 smilerain 2009-03-22  
自己写个函数也是一句话调用了,有什么差别。
20 楼 dch1287 2009-03-22  
linliangyi2007 写道
语法嘛,一切皆表象啊~~~~

看看有那么多牛人发明各种动态语言,特别这两年跟爆炸似的,然而有几个“实现良好"的互联网大型应用,或者企业级应用是跑在这些语言上面的呢?

看看每年的程序语言排行就明白了!这些排行直接说明使用各种语言人数的多少,间接说明企业招聘岗位的多少,从而也能看出在各个行业中,这些语言使用情况的多少。

发明这些语言的人不可谓不聪明,其中的原因值得思考!!


这些并不是动态语言适用的地方

你的说法换个话题:
  。。。 然而有几个“设计良好"的大型建筑,或者世界级建筑是音乐家设计的呢? 。。


你的言辞一方面透露出严重的语言歧视啊,另一方面。。(我就不说啦)

你可以继续你我的企业应用coding之路, 但是没有必要无视, 甚至歧视那些scirpting的兄弟们. 大家的目标不太一样, 怎可一概而论
19 楼 linliangyi2007 2009-03-22  
语法嘛,一切皆表象啊~~~~

看看有那么多牛人发明各种动态语言,特别这两年跟爆炸似的,然而有几个“实现良好"的互联网大型应用,或者企业级应用是跑在这些语言上面的呢?

看看每年的程序语言排行就明白了!这些排行直接说明使用各种语言人数的多少,间接说明企业招聘岗位的多少,从而也能看出在各个行业中,这些语言使用情况的多少。

发明这些语言的人不可谓不聪明,其中的原因值得思考!!
18 楼 luolonghao 2009-03-21  
看Perl代码会更让你震
17 楼 JohnnyJian 2009-03-21  
xmpp 写道
看下面的代码:
class Module {
    static def abc = {return "打印测试"}
    static def hij = {person->return person.name}
}
class Person {String name;}

def d = new Person(name:"123");
d.metaClass.abc = {->
   Module.abc()
}
d.metaClass.hij = {person->
   Module.hij(person)
}
println d.abc()
println d.hij(d)


Groovy 1.6支持更简单的mixin:
class Person { String name }

@Category(Person)
class Module {
    def abc() { 'abc' }
    def hij() { name }
}

def p = new Person(name: '123')
p.metaClass.mixin Module
println p.abc()
println p.hij()

相关推荐

Global site tag (gtag.js) - Google Analytics