最近,我需要一种快速开发语言,目前炙手可热的快速开发语言就是Python和Ruby了。Ruby和Python都是非常优秀的脚本语言,虽然他们的设计哲学几乎完全不同,但他们效率差不多,应用领域也差距不大,似乎天生就是竞争对手。到底选那个呢?我做了一些简单的比较。
我们比较两种语言的时候,抛开性能问题不说,一般最在意的大概就是资源和学习曲线。
总体的印象,用一个不大恰当的比喻:如果Python是Java,那么Ruby就是.net。我们知道,Java世界非常复杂,非常多样性,任何一个需求,都会有很多开源项目,他们用不同的思想来实现,性能特点迥异,到底选那个,总是令人犯难。现在Python也是如此,而由于Python开发难度远远低于Java,导致Python的相关项目比Java还要多得多。
资源上,两者社区都很强,有趣的是,现在Java社区存在被Ruby同化的危险,至少我订阅的几个Java blog聚合中谈Ruby比Java还多。Ruby的社区较为集中,Python则比较分散。我总怀疑Ruby的日本用户较多,但因为不懂日文,很难确认这个想法。对于一个母语非英语的创始人,我总 ......
Ruby和Python的语法比较
其实Ruby和Python非常接近,比大多数别的语言要接近的多,所以喜欢用啥就用啥(大实话,虽然也是废话)。语法上的差别虽然有那么一点,大部分是syntax sugar,我斗胆稍微列几个(python我也忘得差不多了,不对的大家尽管来鞭尸吧),但是主要差异还是设计思想上的:灵活vs明确. 我不认为两者在生产力上会有什么差别,如果你熟悉的话。*注意,仅限语言本身的比较。
本文推荐:Ruby入门教程与技巧大全
Ruby和Python的比较列表
1. ruby的case可以匹配很多东西:范围/数组,对象,正则表达,python没有case/switch而使用if/else比较死板点
2. python的缩进很漂亮,虽然有时会造成些许麻烦。ruby的end蛮难看的,所以大家都被逼当one liner(玩笑)
3. 感觉上ruby比python更OO,当然这也可能是因为python不提倡用那些改变对象内部构造的‘伎俩’造成的错觉
4. python有list comprehension, ruby没有:(
5. python有真正的keyword argument, ruby用hash模拟,当然实际用起来没什么差别
6. python的self很讨厌,ruby没有那种繁琐的东西
7. reflection,ruby内置了很多方法,比如object.methods,而python把这些信 ......
Ruby和Python的语法比较
其实Ruby和Python非常接近,比大多数别的语言要接近的多,所以喜欢用啥就用啥(大实话,虽然也是废话)。语法上的差别虽然有那么一点,大部分是syntax sugar,我斗胆稍微列几个(python我也忘得差不多了,不对的大家尽管来鞭尸吧),但是主要差异还是设计思想上的:灵活vs明确. 我不认为两者在生产力上会有什么差别,如果你熟悉的话。*注意,仅限语言本身的比较。
本文推荐:Ruby入门教程与技巧大全
Ruby和Python的比较列表
1. ruby的case可以匹配很多东西:范围/数组,对象,正则表达,python没有case/switch而使用if/else比较死板点
2. python的缩进很漂亮,虽然有时会造成些许麻烦。ruby的end蛮难看的,所以大家都被逼当one liner(玩笑)
3. 感觉上ruby比python更OO,当然这也可能是因为python不提倡用那些改变对象内部构造的‘伎俩’造成的错觉
4. python有list comprehension, ruby没有:(
5. python有真正的keyword argument, ruby用hash模拟,当然实际用起来没什么差别
6. python的self很讨厌,ruby没有那种繁琐的东西
7. reflection,ruby内置了很多方法,比如object.methods,而python把这些信 ......
self上下文
Ruby的self有和Java的this相似之处,但又大不相同。Java的方法都是在实例方法中引用,所以this一般都是指向当前对象的。而Ruby的代码逐行执行,所以在不同的上下文(context)self就有了不同的含义,先来看看常见的context self都代表哪些
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# 这个位置位于top level context,代表Object的默认对象main
p self # => main
p self.class # => Object
@self1 = self
# 因为所有自定义类都位于main context之中,所以这是Object的实例方法
# 同时也可以说是一个全局方法
def a_method
@self2 = self
p self
# => main,因为有了实例变量@self1和@self2,所以打印出来的不是main这个字符
# => 但仍然是main对象,注释掉4,8行即可看到效果
p @self1 == @self2 # => true
end
# 下面是一个关于类中不同上下文的self
class Person
p self # => Person,代表当前类
def instance_method
p self # => #<Person:0xb7818fdc>,代表当 ......
在Ruby on Rails中真的有一堆Select helper可以用,我们经常容易混淆。常见的有三个..
select, select_tag, collection_select(其余的什么select_date那些不谈)
我们先来看看一个基本的下拉式选项骨架
</p>
<select
name="ROR">
<option
value="1">ROR1</option><br
/>
<option
value="2">ROR2</option><br
/>
<option
value="3">ROR3</option><br
/>
</select>
<p>
在一个下拉式选项中,有一些是必备的信息,像”name”、”value”与”text”三个,在回传信息给Serve时,”name”将是接收信息用的,而”value”会传回被选的值,而”text”则是使用者会看到的字,依上面的例子来讲,ROR1、ROR2、ROR3就是属于”text”
开始讲讲哪三种Select helper
select:
select(object, method, choices, options = {}, html_options = {})
在ActionView::Helpers::FormOptionsHelper中定义
object事一个实体化变数,这里很明显的就是要摆上model物件嘛!
method则是object的一个属性,也是资料表中 ......
转自 http://www.advidea.cn/biancheng/200943135232.html
Ruby watir 测试框架
大多数人都会安装 ruby,
也通过Ruby 安装 gem,
也安装了ruby IDE开发工具:netbeans,
但就是不能跑watir环境,狂晕加吐中。。。
错误如下:
in `require': no such file to load -- watir (LoadError)
反正就是找不到watir,这里为大家献上终极解决方案:
1。首先安装:ruby186-26.exe
下载地址:http://www.ruby-lang.org/zh_CN/downloads/
选择Windows 系统的 Ruby 1.8.6 一步安装
下载并安装就OK。
2。安装开发工具:netbeans.
因为netbeans是基于JAVA的,所以需要先下载一个JAVA JDK。
下载地址:自己google里去搜一下: JAVA JDK 下载。下载1.5版本以上就OK。
3。下载netbeans.并安装:
很简单,下载地址:
http://www.netbeans.info/downloads/dev.php 右边栏直接点续续按钮,
选择第一个,然后进入下面页面
http://bits.netbeans.org/download/trunk/nightly/2009-03-17_02-01-11/
选择支持ruby的IDE选项,然后下载就可以了。
安装完毕后,进菜单Tools -> Update Center
点Next,等所有可升级模块出来后,找到Ruby文件夹,点选到需要更新的 ......
转自 http://www.javaeye.com/topic/57474
Windows平台的ruby IDE 点评
在MacOS平台几乎没有什么争议性,大家都用TextMate。但是Windows平台可供选择和使用的IDE很多,却各有各的长处和短处。基于我用过的所有ruby IDE点评一下。windows平台的RoR IDE主要分为两类:一类是重量级的全功能IDE,例如Eclipse,Netbeans,IDEA和jedit,运行起来很耗资源,功能比较齐全;另一类是轻量级的IDE,例如Komodo,RoRed,vim,emacs,E,下面一一点评之:
一、重量级的IDE
1、radrails - 当前最值得推荐的IDE
radrails是基于Eclipse的插件,当前版本0.7.2。radrails继承了Eclipse平台的各种功能,尤其是CVS/SVN集成特别好,和其他ruby IDE相对比来说,radrails最主要的优点在于bug很少,功能非常齐全。
1) 相对于其他大多数RoR IDE各种各样的bug,radrails在0.7.2版本的表现非常的稳定。在我连续几个月使用下来,基本没有什么大的bug。
2) 功能齐全,其他IDE或多或少功能都有缺失,但radrails功能非常齐全:内置的server管理,generator,rake task,rdoc检索,plugin安装,规则表达式校验,tail log,,console调试窗口,debug,代码格式化,代码和模板高亮,ruby代码 ......