归纳以来,Ruby有以下优点:
◆解释器
Ruby是解释型语言,其程序无需编译即可轻松执行。
◆变量无类型
Ruby的变量没有类型,因此不必为静态的类型匹配而烦恼。相应地,错误检查功能也变弱了。
◆不需要变量声明
所有变量均无需声明即可立即使用。另外,从变量名即可判断出是何种变量(局部变量,全局变量,实例变量)。
◆语法简单
语法比较简单,类似Algol系语法。
◆不需要内存管理
具有垃圾回收(Garbage Collect,GC)功能,能自动回收不再使用的对象。
◆一切都是对象
Ruby从一开始就被设计成纯粹的面向对象语言,因此以整数等基本数据类型为首的所有东西都是对象,它们都有发送信息的统一接口。
◆类,继承,方法
Ruby当然具有面向对象语言的基本功能。
◆特殊方法
可向某对象添加方法。例如,可以把GUI按钮被按下时的动作作为方法记述下来,还可以用它来进行原型库(prototypebase)的面向对象编程(有人这么干吧)。
◆用模块进行混合插入(Mixin)
Ruby故意舍弃了多重继承,但拥有混合插入功能。使用模块来超越类的界限来共享数据和方法等。
◆迭代器
该功能可以将循环抽象化。
◆闭包
可以将某过程片段对象化。对象化后的该过程片段就称作闭包。
◆功能强大的字符串操作/正则表达式
以Perl为样板创造出了功能强大的字符串操作和正则表达式检索功能。
◆拥有超长整数
添加超长整数功能后,可以计算非常大的整数。例如计算400的阶乘也轻而易举。
◆具有错误处理功能
错误处理功能可以使您编写代码处理出错情况。
◆可以直接访问OS
Ruby可以使用(UNIX的)绝大部分的系统调用。单独使用Ruby也可以进行系统编程。
◆动态加载
若OS支持的话,可以在运行时读入对象文件。
但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和多国语言的支持不好(来自Martin上海演讲实录3:细数Ruby语言优缺点)