已锁定 主题:我喜欢Ruby的原因
精华帖 (0) :: 良好帖 (12) :: 新手帖 (0) :: 隐藏帖 (2)
|
|
---|---|
作者 | 正文 |
发表时间:2008-04-09
本想跟贴讨论,但觉得那样的争论很无谓,毕竟代码说明问题 Java import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Test { public static void main(String[] args) { try { BufferedReader in = new BufferedReader(new FileReader("test.txt")); StringBuffer sb = new StringBuffer(); String str; while ((str = in.readLine()) != null) { sb.append(str + "\n"); } in.close(); String result = sb.toString(); Pattern sentencePattern = Pattern.compile("(.*?\\.)\\s+?"); Pattern javaPattern = Pattern.compile("Ruby"); Matcher matcher = sentencePattern.matcher(result); while (matcher.find()) { String match = matcher.group(); Matcher matcher2 = javaPattern.matcher(match); if (matcher2.find()) System.err.println(match); } } catch (IOException e) { e.printStackTrace(); } } } Ruby File.read('test.txt').scan(/.*?\. /).each { |s| puts s if s =~ /Ruby/ } 这个可能不怎么说明问题。在程序里面,经常会用到xml数据容器,那么 要表达: <node name="a"> <node name="b"> <node name="d"/> <node name="e"/> </node> <node name="c"> <node name="f"/> <node name="g"/> <node name="h"/> </node> </node> *在 Java 里* Tree a = new Tree("a"); Tree b = new Tree("b"); Tree c = new Tree("c"); a.addChild(b); a.addChild(c); Tree d = new Tree("d"); Tree e = new Tree("e"); b.addChild(d); b.addchild(e); Tree f = new Tree("f"); Tree g = new Tree("g"); Tree h = new Tree("h"); c.addChild(f); c.addChild(g); c.addChild(h); * 在 Ruby 里 * tree = a { b { d e } c { f g h } } 这里例子都是搬来的,更多在http://www.rubyrailways.com/sometimes-less-is-more 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-04-09
写代码还是形而下的,在形而上的方面,我更觉得:
1. 当只需要花更少的时间写代码了,我就有更多的时间写文档和跟队友沟通和看 javaeye。 2. 现在被炒的很热的 Martin Flower 推的那些设计模式,部分已在 Ruby 中内建了。有人说优秀的语言是应该看不到设计模式的痕迹,虽然那个人说的是small talk,不过挺适用描述Ruby。 |
|
返回顶楼 | |
发表时间:2008-04-09
动态,就我而言,动态的好处就是可以让代码很精简。可以让我在只有很少开发时间的情况下,按时的完成项目。
|
|
返回顶楼 | |
发表时间:2008-04-09
实际上,我并没有说java好,也没有说ruby不好,只是在那个帖子里碰巧提到java而已,完全没有拿java和ruby相比的意思,二者根本就是不同的语言,没有可比性。我也说了,我也非常喜欢ruby,现在写一些脚本工具之类的都是用ruby。
我想说的是ruby还有很多地方要改进,变得更好。 另外就是动态对象扩展会造成设计无法形成清晰的接口和接口文档,阻碍编程人员的交流。动态特性不能乱用。这个只能等待实践的检验了。 |
|
返回顶楼 | |
发表时间:2008-04-09
ruby 还是比较年轻的语言
java 现在已经不是当年那个小孩子了,大的很 再加上一大堆第三方的类库,框架. java的问题不在于没有选择,而是选择太多太丰富了 ruby的问题不在于选择多,而在于没的选,rails? 如果能够用ruby语言多开发出几个类似rails的框架出来,才好进行比较. |
|
返回顶楼 | |
发表时间:2008-04-10
一点意义都没有,你把这个封装成一个函数,下次一句话就掉用了不更简单.
ruby 只是多提供几个方法,只能说明有足够的库,就能够更方便的实现. |
|
返回顶楼 | |
发表时间:2008-04-11
低开发成本,高维护成本。 如果团队过大的话,开发成本也不小。
|
|
返回顶楼 | |
发表时间:2008-04-11
smilerain 写道 一点意义都没有,你把这个封装成一个函数,下次一句话就掉用了不更简单.
ruby 只是多提供几个方法,只能说明有足够的库,就能够更方便的实现. 呵呵,你写一个来看看。很简单,假设已经有map这个函数,它遍历一个数组(或者列表,都行),对其中每个元素做一个操作,得到一个新的列表,前后两个列表的元素个数一样。 比如: def double(x) { x * 2 } a_list = [1, 2, 3, 4] map(a_list, double) # [2, 4, 6, 8] Java一个大毛病就是函数不是一等公民,high order就得用一堆诸如annonymous inner class之类的丑恶语法才能实现。C#至少这一点就比Java看着漂亮。 |
|
返回顶楼 | |
发表时间:2008-04-12
代码能说明的问题是有限的,这里的代码只能说明ruby令人喜欢的一面,这也是诱惑大家去学习ruby的原因,但ruby也有令人不爽的一面,我相信多数评价ruby的人都了解ruby的优点,但要知道语言的缺点才算真正了解这个语言
|
|
返回顶楼 | |
发表时间:2008-04-12
lllyq 写道 代码能说明的问题是有限的,这里的代码只能说明ruby令人喜欢的一面,这也是诱惑大家去学习ruby的原因,但ruby也有令人不爽的一面,我相信多数评价ruby的人都了解ruby的优点,但要知道语言的缺点才算真正了解这个语言
说实话我不知道为什么非得“真正了解这个语言”不可。 我拿它干活,干完活我就去吃饭泡吧去了,没事我了解它干嘛? |
|
返回顶楼 | |