售前咨询
技术支持
渠道合作

Ruby语言的初次认识

什么是Ruby语言

Ruby,一种简单快捷的面向对象(面向对象程序设计)脚本语言,在20世纪90年代由日本人松本行弘(Yukihiro Matsumoto)开发,遵守GPL协议和Ruby License。它的灵感与特性来自于 Perl、Smalltalk、Eiffel、Ada以及 Lisp 语言。由 Ruby 语言本身还发展出了JRuby(Java平台)、IronRuby(.NET平台)等其他平台的 Ruby 语言替代品。

Ruby语言的优点和缺点

优点:

1 采用虚拟机实现跨平台

2 支持垃圾回收

3 脚本语言,灵活,容易扩展

4 支持面向对象

5 基于脚本语言,易于同Linux Shell进行交互

6 拥有功能强大和完善的标准类库

7 拥有良好的交互式运行环境:IRB,方便进行开发和调试

8 语言内置对规则表达式(Regular Express)的支持

9 直观的Block语法来实现循环遍历和函数回调

10 开放源代码

11 支持异常机制

12 同Perl和Python相比更容易用C语言扩展(来自Ruby官方网站)

13 支持动态载入类库

14 因为是解释型语言,不需要编译,修改后马上就可以执行

15 拥有一个完善的Web开发框架Rails

缺点

1 性能不如纯静态编译语言,例如C,但可以通过用C语言来扩展来解决

2 完全没有类型检查,灵活但容易隐藏潜在的问题

3 使用Module来实现多重继承,不如JAVA所采用的接口(Interface)方式清晰,而且由于没有严格的类型检查,所以框架层的设计无法对实现有很严格的约束

4 没有很完善的开发,重构的工具,虽然现在Eclipse已经提供Ruby的开发插件,但还没有实现重构,跳转和自动代码生成等很有用的功能,主要原因是由于Ruby支持动态类型

5 依然保留部分非面向对象的语法,例如全局变量,全局方法

6 允许在扩展代码中随意替换现有类的方法定义或变量,非常灵活,但可能会因为错误地修改了框架逻辑而引发难以发现的错误,但可以用freeze方法来组织被修改

7 不支持真正的多线程,多线程环境是通过在虚拟机环境中模拟出来的,不能充分发挥多CPU的功能,如果一个线程在执行底层调用被Block住则整个应用程序也被Block住。

8 对Unicode和多国语言的支持不好

语言特点

Ruby 是开源的,在Web 上免费提供,但需要一个许可证。

Ruby 是一种通用的、解释的编程语言。

Ruby 是一种真正的面向对象编程语言。

Ruby 是一种类似于 Python 和 Perl 的服务器端脚本语言。

Ruby 可以用来编写通用网关接口(CGI)脚本。

Ruby 可以被嵌入到超文本标记语言(HTML)。

Ruby 语法简单,这使得新的开发人员能够快速轻松地学习 Ruby。

Ruby 与 C++ 和 Perl 等许多编程语言有着类似的语法。

Ruby 可扩展性强,用 Ruby 编写的大程序易于维护。

Ruby 可用于开发的 Internet 和 Intranet 应用程序。

Ruby 可以安装在 Windows 和 POSIX 环境中。

Ruby 支持许多 GUI 工具,比如 Tcl/Tk、GTK 和 OpenGL。

Ruby 可以很容易地连接到 DB2、MySQL、Oracle 和 Sybase。

Ruby 有丰富的内置函数,可以直接在 Ruby 脚本中使用。

语言标准

Ruby的变量有一定的规则,以$开头的一定是全局变量,以@开头的都是实例变量,而以@@开头的是类变量。常数则以大写字母开头;这种方法,对文本编辑器的命令补全很有帮助,如在vim下先键入$及开头字母,再敲击Ctrl+p,则可专门补全本文件以及关联文件中的全局变量,perl与php亦有此优点。

已经定义的类可以在运行时修改

Ruby是动态语言,你可以在程序中修改先前定义过的类。 也可以在某个类的实例中定义该实例特有的方法,这叫做单例方法。

class MyClass

def the_method

“generalmethod”

end

end

mc=MyClass.new

def mc.the_method

“special for this instance.”

end

mc.the_method#specialforthisinstance

使用Ruby可以写出简短而又功能强大的代码

下面的方法用来完成两个矩阵的乘积

def matrix_mul(matrix1,matrix2)

result=[]

(0…matrix1.length).each{|i|

temp=[]

(0…matrix2[0].length).each{|j|

tmp=0

(0…matrix1[0].length).each{|k|

tmp+=matrix1[i][k]*matrix2[k][j]

}

temp<<tmp

}

result<<temp

}

return result

end


代码签名证书是保护开发者的劳动成果,给自己开发的软件签名的证书,保证代码在签名之后不被恶意篡改。用户可通过对代码的数字签名来标识软件来源,辨别软件开发者的真实身份。GDCA的代码签名证书支持多种代码签名,已通过WEBTRUST国际认证。

上一篇:

下一篇:

相关文章