`
halfmile
  • 浏览: 12003 次
  • 性别: Icon_minigender_1
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

我喜欢Ruby的原因

阅读更多
刚看到“姜太公”说开始不喜欢Ruby,读了一遍帖子,觉得。。。青菜萝卜各有所爱吧。

本想跟贴讨论,但觉得那样的争论很无谓,毕竟代码说明问题

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
分享到:
评论
30 楼 liusong1111 2008-04-16  
ltian 写道
gigix 写道
JBeans 写道
代码什么都说明不了~ruby本身就是一门动态语言~其自身的动态特性决定了一定程度上存在很大的灵活性~相比较而言javascript更是如此~拿精巧的动态特性去比较静态语言本身的一板一眼的写法没有任何意义~

一行代码干完的事情要写十行,你说有没有意义?

成功的软件项目开发中,代码所占的工作量并不大。 所以即使省几行代码也没多大意义,另外,由此可能会产生大量的维护成本。动态语言,在WEB客户端开发中能发挥作用,服务器端的业务逻辑层还是靠静态语言比较放心。


需要具体探讨这个“可能性”,不然就是万事皆有可能了。
29 楼 7thbyte 2008-04-16  
ltian 写道
gigix 写道
JBeans 写道
代码什么都说明不了~ruby本身就是一门动态语言~其自身的动态特性决定了一定程度上存在很大的灵活性~相比较而言javascript更是如此~拿精巧的动态特性去比较静态语言本身的一板一眼的写法没有任何意义~

一行代码干完的事情要写十行,你说有没有意义?

成功的软件项目开发中,代码所占的工作量并不大。 所以即使省几行代码也没多大意义,另外,由此可能会产生大量的维护成本。动态语言,在WEB客户端开发中能发挥作用,服务器端的业务逻辑层还是靠静态语言比较放心。


俺认为,在代码量减少的情况下,通过充分重构,解耦,实现良好的自动测试的情况下。

维护成本不是增加的,而是减小的。

对开发者要求则比较高了而已。
28 楼 linzy410 2008-04-15  
语言之争永远是没有结论,除非一方永久的退出历史舞台。
存在就是合理的。
27 楼 zhuqimeng 2008-04-15  
牛逼的人啊
26 楼 gigix 2008-04-15  
JBeans 写道
代码什么都说明不了~ruby本身就是一门动态语言~其自身的动态特性决定了一定程度上存在很大的灵活性~相比较而言javascript更是如此~拿精巧的动态特性去比较静态语言本身的一板一眼的写法没有任何意义~

一行代码干完的事情要写十行,你说有没有意义?
25 楼 JBeans 2008-04-15  
代码什么都说明不了~ruby本身就是一门动态语言~其自身的动态特性决定了一定程度上存在很大的灵活性~相比较而言javascript更是如此~拿精巧的动态特性去比较静态语言本身的一板一眼的写法没有任何意义~
24 楼 enjoyeveryday 2008-04-15  
不错的建议 其实ruby真正是对JAVA和C#的一个互补语言 希望国人能及早的开发出好的项目!
23 楼 hellosoft 2008-04-15  
lllyq 写道
代码能说明的问题是有限的,这里的代码只能说明ruby令人喜欢的一面,这也是诱惑大家去学习ruby的原因,但ruby也有令人不爽的一面,我相信多数评价ruby的人都了解ruby的优点,但要知道语言的缺点才算真正了解这个语言


我赞同这位仁兄的说法,要了解一个事物,应该从正反两方面了解才可以通透。
但是我也重申,我很喜欢ror ,虽然他有些缺点,但是ror的快速开发,ror的习惯优于配置等,都是我的最爱,而且,我想以后的企业的业务逻辑也将是千变万化的,正好用上ror灵活多变的特点。笔者正在开发的部分系统中使用了ror,如果要增加功能,非常方便。而且配合上测试单元,极快而且稳定。
22 楼 Vstar 2008-04-14  
gigix 写道
Vstar 写道
用了Ruby/Rails一段时间,感觉在文档上RoR应该下功夫了,很多函数都没有具体的用法,或者只是一带而过。

http://api.rubyonrails.org/

是有文档,还有chm版的,不过文档目前还是不全,相当多的函数都没有使用方法,另外还有相当多的参数没有说明用法。当然了,这些可能都是不经常用的,不过也从一个侧面反映了RoR的不成熟。
21 楼 gigix 2008-04-14  
Vstar 写道
用了Ruby/Rails一段时间,感觉在文档上RoR应该下功夫了,很多函数都没有具体的用法,或者只是一带而过。

http://api.rubyonrails.org/
20 楼 Vstar 2008-04-14  
用了Ruby/Rails一段时间,感觉在文档上RoR应该下功夫了,很多函数都没有具体的用法,或者只是一带而过。还有一点,Ruby太灵活,过度的灵活导致很多代码难以理解,我更倾向于将代码写得多一些,不用一些小的技巧,使得代码更加清晰易懂
19 楼 lishali12345 2008-04-13  
一种语言能被人们接受就是一件很难得的事情,也是值得庆幸的一件事情,作为客观食物的存在他们根本就没有所谓的好坏之分。钻石就是好东西吗?!米饭就那么不值钱吗?!
自己如何用,自己喜好什么才是最重要的,当然如果要谋生的话,还是要看好市场了!
18 楼 rubynroll 2008-04-13  
lllyq 写道
扩大点说,嫌货才是买货人,就好象你现在看中一个房子了,非常非常喜欢,那么应该尽力去看看别人怎么说它不好的地方


如果是我买房,当然会尽力去看看别人怎么说它不好,但是我还是会用自己的观点去和说它不好的人辩,如果对方根本就是乱说,那就更坚定买这个房子的决心了,如果我的观点根本就是可笑的,不正好避免了一次错误的投资么。

“嫌货”不是买货人,“识货”才是真正的买货人。
17 楼 PatrickHe 2008-04-13  
icanfly 写道
ruby语言写法让实在受不了,有时为了图简单要一连串的函数调用,java虽说代码多,但是每一步都走得很清楚。


链式编程风格啊,我记得似乎在 Effective Java 里面还是推荐的呢。
16 楼 PatrickHe 2008-04-13  
halfmile 写道

2. 现在被炒的很热的 Martin Flower 推的那些设计模式,部分已在 Ruby 中内建了。有人说优秀的语言是应该看不到设计模式的痕迹,虽然那个人说的是small talk,不过挺适用描述Ruby。


Smalltalk 真是生不逢时呀,呵呵。
15 楼 gigix 2008-04-13  
icanfly 写道
ruby语言写法让实在受不了,有时为了图简单要一连串的函数调用,java虽说代码多,但是每一步都走得很清楚。


“每一步都走得很清楚”
那是接口设计得不好所以没办法连续调用吧?
14 楼 kaoumay 2008-04-13  
如果简单就是美,那你找个框架自动生成代码最好,不用编程了。
13 楼 qubic 2008-04-13  
萝卜青菜各有所爱,各取所需好了
12 楼 xml 2008-04-13  
xbwolf 写道
有什么可争论的,语言只不过是个工具而已,根据解决的问题的不通选择不同的语言去实现。没有什么好不好的,能方快捷的完成项目才是王道。


没错,我现在用C#,就是因为C#更容易切入到自己的产品,方便深入研究,是有目的性的,但估计最近一年应该是不会用ruby。
11 楼 xbwolf 2008-04-13  
有什么可争论的,语言只不过是个工具而已,根据解决的问题的不通选择不同的语言去实现。没有什么好不好的,能方快捷的完成项目才是王道。

相关推荐

    网友原创系列之Silver_Ruby主题包

    【Ruby语言介绍】 Ruby是一种面向对象的、动态类型的编程语言,由日本人松本行弘(Yukihiro Matsumoto)在1995年设计并创造。...对于那些喜欢Ruby语言的人来说,这样的主题包无疑为他们的编程生活增添了色彩和乐趣。

    Ruby 15天自学教程ppt

    ThoughtWorks的首席科学家、敏捷开发的鼻祖Martin Fowler在博客中曾写到“我的任何一个合格读者都应该知道这几年我已成了一个Ruby爱好者,简洁的语法及优雅的框架使我喜欢上Ruby,它已成为我开发个人项目的首选语言...

    Ruby 自学教程程序源代码

    ThoughtWorks的首席科学家、敏捷开发的鼻祖Martin Fowler在博客中曾写到“我的任何一个合格读者都应该知道这几年我已成了一个Ruby爱好者,简洁的语法及优雅的框架使我喜欢上Ruby,它已成为我开发个人项目的首选语言...

    vim-ruby-refactoring, 在vim中,用于 ruby的重构工具 !.zip

    用于Vim的 ruby-重构工具我喜欢 vim 当我开发软件的时候,它是我的选择编辑器。目前( 至少在过去的4年中) 主要使用 ruby 编程语言。在开发过程中,我一直丢失了一个重构工具,但是我从没有心想过( 就像你在内部找到...

    ruby-rust-interop:展示在 Ruby 运行时中从 Rust 调用基于数字的函数

    ruby-rust-互操作展示在 Ruby 运行时中从 Rust 调用基于数字的函数我希望这些例子能帮助你使用 Rust 设置 Ruby! 所有这些示例都在使用 Ruby 2.1.6 和 Rust 1.0.0-beta.4 的 Windows 上进行了测试如果你克隆 repo,...

    audio-ruby:Ruby 的跨平台音频设备接口

    如果您喜欢处理其中任何一个,我非常乐意接受 Pull Requests! 用法 列出可用的音频设备 音频模块提供了一种方法来检索系统上可用的所有音频设备的列表。 require 'audio' devices = Audio . devices # =&gt; An ...

    vimilicious:用于创建 vim 插件的 Ruby 库

    就像我喜欢和崇拜 rails.vim 一样......你有没有看过源代码? 天啊! 将 ruby​​ 用于一些 vim 脚本或应用程序创建可以使您的生活更轻松。 只有那些使用 ruby​​ 支持编译的 vim 才能利用 vimilicious 或基于 ...

    Combine_pdf:一个纯Ruby库,用于合并PDF文件,数字页甚至更多。

    我喜欢这种宝石,但是我觉得是时候该放弃维护它了,并专注于音乐和其他我想开发的东西。 如果您想加入并最终接手,请打我。 已知局限性 快速淘汰: 阅读PDF表单时,某些表单数据可能会丢失。 我已尽力尝试解决此...

    myGoodiesAutoInstall:我最喜欢的程序的Ruby Auto Installer

    自动安装我的东西一个简单的ruby脚本,它会自动安装一些程序。 该脚本在采用纯格式后非常有用,因为它可以节省一些时间。 试试吧!安装...安装自动构建并运行wget ...

    rubyfmt:Ruby自动格式化程序!

    不,但是距离真的很近我该如何使用建立它: 确保您已安装货物运行make all 将target / release / ruby​​fmt-main复制为rubyfmt到路径上的某个rubyfmt Rubyfmt支持以下CLI调用: &lt;whatever&gt; | rubyfmt &lt;whatever&gt; ...

    小胡子:无逻辑的Ruby模板

    胡子 受和启发,Mustache是​​一种与框架无关的呈现无逻辑视图的方法。 正如ctemplates所说,“它强调... 我喜欢写Ruby。 我喜欢编写HTML。 我喜欢写JavaScript。 我不喜欢编写ERB,Haml,Liquid,Django模板,将Ru

    实例解析Ruby程序中调用REXML来解析XML格式数据的用法

    我有这样的问题:我不喜欢令人困惑的 API。有几种用于 Java 实现的 XML 解析器 API。其中大多数都遵循 DOM 或 SAX,并且在基本原理上与不断出现的众多 Java API 非常相似。也就是说,它们看 上去象是由从未使用过...

    ruby_videos:关于 Ruby 编程语言或与之相关的优质视频的精选列表

    这个项目的原因是我喜欢许多概念,但也想知道我是否可以只用标准的 Rails 和 PORO(带有一些轻量级的 gem)来做类似的事情。 虽然这个项目非常简单,但很多代码对于项目来说看起来有点过分。 这是现阶段的预期。 ...

    ruby-hysh:黄鹰的Ruby外壳

    但是我不喜欢bash的语法,宁愿在Ruby中这样做。 这项工作基于HYSH(黄鹰在Common Lisp中的SHell: )。示例 def dpkg_installed1 ( package_names = nil ) Hysh . out_lines -&gt; { Hysh . pipe [ 'dpkg' , '-l' ], ...

    程序员为什么还要刷题-ruby-101:Ruby-101

    程序员常刷题Ruby 101:学习 Ruby 编程语言 在这里,我描述了我学习 Ruby 的历程,Ruby 是一种非常酷且快速的面向对象的解释型编程语言。 有一些编程概念的基本知识是很好的开始。 本文档会定期更新,我也会提供大量...

    rubysnake:经典蛇游戏的克隆,使用图形库ruby2d

    欢迎来到我的Ruby蛇游戏。 这是使用ruby2d gem /库构建的项目。 要运行此程序,您应该已经安装了这样的库,然后您可以通过在控制台中输入: ruby snake.rb来运行游戏。 安装Ruby2d 首先:安装所需的依赖项 对于Mac...

    ruby101-kitap:土耳其Ruby书

    我一直很喜欢的口袋书。 无论是在大小还是内容上。 您可以始终随身携带的资源,以紧凑的方式包含与其主题相关的所有内容。 我的目的是准备一本味道像这样的床头书,随时随地都可以找到。 编写本书时,最困难的...

    rubylisp:Ruby的Lisp方言

    从设计角度来看, 是我最喜欢的语言,并且可以利用现有JVM库这一事实非常方便。 但是只有一个问题-它的启动时间太慢。 很不错; 它是一个强大的Lisp,而且速度很快。 但是,找到X现有库来执行Y任务并不总是那么...

    生菜:受Ruby启发的Cucumber的python行为驱动开发工具

    我喜欢python,而且从没这么做过。 但是我也曾经错过过一些使编写测试变得容易和有趣的事情。 我喜欢,这是一个单元测试的pythonic框架。 但是,随着我从事的项目的增长,测试也随之增加,并且变得越来越难以理解...

Global site tag (gtag.js) - Google Analytics