论坛首页 编程语言技术论坛

浅尝Ruby后的困惑

浏览 18021 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2006-07-11  
check it out

http://www.ruby-forum.com/topic/69291#new
0 请登录后投票
   发表时间:2006-07-11  
robbin 写道


当然我是不在乎ROR能不能在国内普及的,你们都不用最好,就我用,那我的开发速度就有很大的竞争优势,特别是互联网行业。


这句阴险,也说的比较好,很多时候起步早就是优势。独占更是优势。
JAVA比不上你了,ROR也不如你快,操,我去买豆腐,撞死算了。
0 请登录后投票
   发表时间:2006-07-11  
robbin 写道

现在支持PHP的网站都可以立刻支持ROR,ROR的普及不能够靠ISP。

当然我是不在乎ROR能不能在国内普及的,你们都不用最好,就我用,那我的开发速度就有很大的竞争优势,特别是互联网行业。


Robbin这是要作源头,而不是要作渠道了。

还是举那个老生常谈的例子,文学领域里面,小语种容易获取诺贝尔奖赚钱,大语种容易写出畅销书赚钱。

如果要是自己公司做产品(源头,企业),可以不在乎编程语言的畅销(如果不需要低成本大规模人头复制,招很多代码工人的话)。

但是,如果卖书,培训(渠道,商业),可就非常在乎编程语言的畅销。

1 请登录后投票
   发表时间:2006-07-13  
neora 写道
Ruby语法和思路本身的确优美无比,逻辑艺术体现得淋漓尽致。


学日语吧, 赫赫
他们能把中文和英文合在一起
0 请登录后投票
   发表时间:2006-07-21  
我想学一下,但是不知道该如何下手
0 请登录后投票
   发表时间:2006-08-27  
最近尝试了一下Ruby和Ror,觉得Ruby的语法的确是无与伦比,把脚本语言的
优势发挥得畅快灵漓, 但是作为脚本语言,
即然已经在静态语法检查上先天不足,好歹在动态检查上加把劲,好查错容易。
ruby在重定义方法和mixin时都不会有重名出错,在多人开发大程序时很容易有问题。
比方说,我用rails建立了个模型类Foo,里面加个字段名叫'method',activerecord就马上
出错了。因为'method'这个方法是Kernel模块mixin到Object中的一个方法。
或者说我什么时候mixin一个功能模块到我的DomainClass,mixin进来的东西的方法名和现有字段名有冲突,
就会不知不觉中破坏现有的程序。所以在给数据库字段起名的时候还要查查这个模型类现有的方法和所有
mixin进来的方法名。
0 请登录后投票
   发表时间:2006-08-27  
towjzhou 写道
最近尝试了一下Ruby和Ror,觉得Ruby的语法的确是无与伦比,把脚本语言的
优势发挥得畅快灵漓, 但是作为脚本语言,
即然已经在静态语法检查上先天不足,好歹在动态检查上加把劲,好查错容易。
ruby在重定义方法和mixin时都不会有重名出错,在多人开发大程序时很容易有问题。
比方说,我用rails建立了个模型类Foo,里面加个字段名叫'method',activerecord就马上
出错了。因为'method'这个方法是Kernel模块mixin到Object中的一个方法。
或者说我什么时候mixin一个功能模块到我的DomainClass,mixin进来的东西的方法名和现有字段名有冲突,
就会不知不觉中破坏现有的程序。所以在给数据库字段起名的时候还要查查这个模型类现有的方法和所有
mixin进来的方法名。

多人开发大程序只能靠测试。
0 请登录后投票
   发表时间:2006-08-27  
一个语言的基类应该是很清爽干净的,而ruby加了一堆东西进去,有些库还私自加方法进去,比如gem。这样在写应该用类时还要小心重名了,有些好名字也被占用了,真tmd非常不爽啊。象python之类就好多了,只有三个方法,而且系统方法都是打双下划线的不会和应用方法冲突。
0 请登录后投票
   发表时间:2006-08-28  
towjzhou 写道
最近尝试了一下Ruby和Ror,觉得Ruby的语法的确是无与伦比,把脚本语言的
优势发挥得畅快灵漓, 但是作为脚本语言,
即然已经在静态语法检查上先天不足,好歹在动态检查上加把劲,好查错容易。
ruby在重定义方法和mixin时都不会有重名出错,在多人开发大程序时很容易有问题。
比方说,我用rails建立了个模型类Foo,里面加个字段名叫'method',activerecord就马上
出错了。因为'method'这个方法是Kernel模块mixin到Object中的一个方法。
或者说我什么时候mixin一个功能模块到我的DomainClass,mixin进来的东西的方法名和现有字段名有冲突,
就会不知不觉中破坏现有的程序。所以在给数据库字段起名的时候还要查查这个模型类现有的方法和所有
mixin进来的方法名。

首先AR的对象的那些属于字段的属性读写其实都是通过method_missing完成的,对象本身并没有对应的方法和实例变量(只有一个实例变量@attributes)。所以没有覆盖掉基类里的任何东西,比如method方法。

其次'method'也是有办法直接用的,只要在model里重定义一下:
def method
  read_attribute("method")
end

def method=(a)
  write_attribute("method", a)
end


不过ruby里确实会无意中产生命名冲突,比如require有些库的时候。这时需要明确指明name space来解决。
1 请登录后投票
   发表时间:2006-08-28  
cookoo 写道
towjzhou 写道
最近尝试了一下Ruby和Ror,觉得Ruby的语法的确是无与伦比,把脚本语言的
优势发挥得畅快灵漓, 但是作为脚本语言,
即然已经在静态语法检查上先天不足,好歹在动态检查上加把劲,好查错容易。
ruby在重定义方法和mixin时都不会有重名出错,在多人开发大程序时很容易有问题。
比方说,我用rails建立了个模型类Foo,里面加个字段名叫'method',activerecord就马上
出错了。因为'method'这个方法是Kernel模块mixin到Object中的一个方法。
或者说我什么时候mixin一个功能模块到我的DomainClass,mixin进来的东西的方法名和现有字段名有冲突,
就会不知不觉中破坏现有的程序。所以在给数据库字段起名的时候还要查查这个模型类现有的方法和所有
mixin进来的方法名。

首先AR的对象的那些属于字段的属性读写其实都是通过method_missing完成的,对象本身并没有对应的方法和实例变量(只有一个实例变量@attributes)。所以没有覆盖掉基类里的任何东西,比如method方法。

其次'method'也是有办法直接用的,只要在model里重定义一下:
def method
  read_attribute("method")
end

def method=(a)
  write_attribute("method", a)
end


不过ruby里确实会无意中产生命名冲突,比如require有些库的时候。这时需要明确指明name space来解决。

正是因为是method_missing,所以才会破坏AR,因为我要存取一个db字段,被已有方法和mixin进来的方法先行一步拦截了。
重定义已有方法是危险的作法,比如我有一个工具类要用到对象的method方法,你传了个重定义了method方法的对象进去天会知道会发生什么事。
1 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics