Ruby 简介
Ruby,一种为简单快捷面向对象编程(面向对象程序设计)而创的脚本语言,由日本人松本行弘(まつもとゆきひろ,英译:Yukihiro Matsumoto,外号matz)开发,遵守GPL协议和Ruby License。Ruby的作者认为Ruby > (Smalltalk + Perl) / 2,表示Ruby是一个语法像Smalltalk一样完全面向对象、脚本执行、又有Perl强大的文字处理功能的编程语言。其他特色包括:
* 运算符重载
* 自动垃圾回收
* 弱类型(动态类型 | 标量变量)
* 变量无需声明 (不必事先宣告变量)
* 在Windows上,加载DLL
* 巨大的标准库(函式库;Library)
历史
Ruby的作者于1993年2月24日开始编写Ruby,直至1995年12月才正式公开发布于fj(新闻组)。之所以称为Ruby,是因为Perl的发音与6月的诞生石pearl(珍珠)相同,因此Ruby以7月的诞生石ruby(红宝石)命名。
Ruby明显比其他类似的编程语言(如Perl或Python)年轻,又因为Ruby是日本人发明的,所以早期的非日文资料和程序都比较贫乏,所以现在在网上仍然可以找到Ruby的资料太少之类的批评。约于2000年,Ruby开始进入美国,英文的资料开始发展。
Ruby现在的稳定版本是1.8.6(2007年3月12日发布)。
2008年8月Ruby 1.8.7-p72 和 1.8.6-p287 发布。先前的发布版本不完全,新的版本包括了对之前发布的关于dl的漏洞的修正。
Ruby 的理念
减少编程时候的不必要的琐碎时间,令编写程序的人高兴,是设计 Ruby 语言的 Matz 的一个首要的考虑;其次是良好的界面设计。他强调系统设计必须强调人性化,而不是一味从机器的角度设想。
“ 人们特别是电脑工程师们,常常从机器着想。他们认为:“这样做,机器就能运行的更快;这样做,机器运行效率更高;这样做,机器就会怎样怎样怎样。”实际上,我们需要从人的角度考虑问题,人们怎样编写程序或者怎样使用机器上应用程序。我们是主人,他们是仆人。 ”
遵循上述的理念,Ruby 语言通常非常直观,按照编程人认为它应该的方式运行。
Semantics
Ruby 是完全面向对象的:任何一点数据都是对象,包括在其他语言中的基本类型(比如:整数,布尔逻辑值),每个过程或函数都是方法。
Ruby的Hello World程序
下面是一个在标准输出设备上输出Hello World的简单程序,这种程序通常作为开始学习编程语言时的第一个程序:
#!/usr/bin/env ruby
puts "Hello, world!"
Ruby 的特点
完全面向对象
在Ruby语言中,任何东西都是对象,包括其他语言中的基本数据类型,比如整数
变量没有类型
Ruby的变量可以保有任何类型的数据。
任何东西都有值
不管是数学或者逻辑表达式还是一个语句,都有值
命名规则
Ruby的变量有一定的规则,以$开头的一定是全局变量,以@开头的都是实例变量,而以@@开头的是类变量。常数则以大写字母开头;这种方法,对文本编辑器的命令补全很有帮助,如在vim下先键入$及开头字母,再敲击Ctrl+p,则可专门补全本文件以及关联文件中的全局变量,perl与php亦有此优点。
已经定义的类可以在运行时修改
Ruby是动态语言,你可以在程序中修改先前定义过的类。 也可以在某个类的实例中定义该实例特有的方法,这叫做单立方法。
class MyClass
def the_method
"general method"
end
end
mc = MyClass.new
def mc.the_method
"special for this instance."
end
mc.the_method #special for this instance
使用Ruby可以写出简短而有功能强大的代码
#下面的方法用来完成两个矩阵的乘积
def matrix_mul(matrix1,matrix2)
result=Array.new
(0...matrix1.length).each {|i| temp=Array.new;(0...matrix2.length).each{|j| tmp=0; (0...matrix1[0].length).each {|k| matrix1[k].to_f*matrix2[k][j].to_f }; temp<
return result
end
Ruby 程序员体会
Ruby语言最吸引我的自然是它的强大,举三个方面的例子。
l 无处不在的Proc。在Ruby语言中,每个方法都可以带proc(程序段),并在方法定义中通过yield语句进行调用。这对提供框架性的方法特别适用,比如标准库中对数组(Array)、文件(File)等的迭代器(iterator)的实现。
l 可以对类甚至对象的方法进行增1删改2,减少不必要的类层次,提供更自然的表达。
l 可以对类定义method_miss方法,提供更灵活的方法接口。在Ruby On Rails中应用较多的ActiveRecord库3,就是通过method_miss方法实现对数据库表字段的查找。
要说Ruby语言的自然优美的语法,我举两个例子。
下面是对配置串中各项的拆分赋值,只需要一句就可以实现。
name, ip, user, password, dir = config_str.split(“|”)
下面是两个变量的值进行交换,
x, y = y, x
其实要说Ruby的强大,没有比Rails更有说服力的了。Rails是应用Ruby语言开发的一站式的Web应用框架(所以全称为Ruby On Rails)。据称,使用Rails进行Web应用开发,比使用J2EE架构进行开发的效率提高5-10倍。应用较好的,一般平均每个方法不超过5行代码。
当然,作为一门开发语言,Ruby也有它自身的缺陷。
l 比起其它语言,Ruby在性能上还有较大的差距。不过我认为,一般这不会成为大问题。原因有三:其一是有多个解释器4实现可以选择,并且可能发展成以中间代码和虚拟机的方式提高性能;其二是大多数应用都是数据密集型操作,真正的压力一般在数据库而不在应用逻辑;其三是即使有局部属于逻辑(计算)密集性,我们也可以通过多种方式(提供C库或inline C)局部使用高性能语言。
l 阻碍Ruby成为企业级应用开发语言的反而是Ruby的灵活和强大。使用Ruby语言对同一个问题进行解决,十个开发者可能有十种不同的编程方法5。这对于强调协同开发的企业级应用来说,简直就是致命伤。所以目前Ruby还是主要集中在Web应用开发领域,通过两三个人进行两三个月的开发,迅速的占领某个特定(而狭窄)领域的Web2.0应用。
阅读(942) | 评论(0) | 转发(0) |