Ruby是一种动态的,开源的,面向对象的和反射的编程语言。Ruby与Perl和Smalltalk编程语言相似。 它运行在所有类型的平台上,如:Windows,Mac OS和所有版本的UNIX系统。
它是完全面向对象的编程语言。 一切东西都是Ruby中的一个对象。 每个代码都有其属性和动作(方法)。 这里的属性是指变量,动作则是指参考的方法。
Ruby语言遵循POLA(principle of least astonishment
)的原则。 所以Ruby语言的行为方式可以减少用户的混乱。
Ruby由 Yukihiro “Martz” Matsumoto 在20世纪90年代中期在日本设计开发的。
Perl是一种脚本语言,但属于”玩具”语言。 Python又不是完全面向对象的语言。 Ruby开发者Yukihiro “Martz” 松本想要一种完全面向对象的编程语言,但也应该很容易用作脚本语言。 在他搜索这种类型的语言没有找到这样的一种语言。 因此,他就自己开发了一个。 //更多请阅读:
“Ruby”这个名字起源于松本(Matsumoto)和Keiju Ishitsuka之间的聊天谈话。当时起了两个名字:”Coral” 和 “Ruby”。松本(Matsumoto)选择了后来的一个,因为它是他的同事的幸运石。
1995年12月21日,日本的报纸公布了
Ruby 0.95
的第一个公开发布版本。在接下来的两天内,还发布了三个版本。2001年,第一本Ruby书 《Ruby编程》 发表。 发布后,世界各地的Ruby学习者就开始增加了。
2005年,他们发布了第一个Ruby框架“
Ruby on Rails
”。 这个框架发布取得了巨大的成功,Ruby社区的开发者增长令人难以置信。
Ruby 1.8.7
于2008年5月发布。此时,Ruby语言开发使用者已经达到顶峰,Mac OS X也开始将Ruby内置进行发布。
目前,Ruby版本2.4.0
在2016年圣诞节发布。它具有几个新功能,如改进哈希表,实例变量访问,Array#max
和Array#min
。
Ruby是一个很好的面向对象的脚本编程语言。 从过去的观点来看,如果社区成员继续扩大思想,可以说它有一个光明的未来。
到目前为止,已经发布了许多Ruby版本。 当前稳定的Ruby版本是2.4
,发布的历史版本及时间如下表所示 -
Ruby语言有很多功能功能特点。 其中一些如下所示:
- 面向对象
- 灵活性
- 表现特征
- 混入/混合类型
- 视觉外观
- 动态打字和鸭式打字
- 异常处理
- 垃圾收集器
- 可移植
- 关键词
- 语句分隔符
- 变量常数
- 命名约定
- 关键字参数
- 方法名称
- 单例方法
- 缺少方法
- 区分大小写
Ruby是纯粹面向对象的编程语言。每个值都是一个对象。 每个对象都有一个类,每个类都有一个超类。 每个代码都有其属性和动作。 Ruby受到Smalltalk语言的影响。 适用于对象的规则适用于整个Ruby。
Ruby是一种灵活的语言,可以轻松地删除,重新定义或添加现有部件。 它允许其用户根据需要自由地更改其部件。
Ruby只具有单一继承的功能。 Ruby有类和模块。 模块有方法,但没有实例。 相反,一个模块可以混合到一个类中,它将该模块的方法添加到类中。 它类似于继承,但更灵活。
Ruby通常更像英文关键字,一些标点符号用于装饰Ruby。它不需要变量声明。
Ruby是一种动态的编程语言。Ruby程序不用经过编译就可以执行。 所有的类,模块和方法定义的代码是在运行时构建的。
Ruby变量是松散类型的语言,任何变量都可以容纳任何类型的对象。 当在对象上调用一个方法时,Ruby只会查找该名称,而不管对象的类型如何。鸭式输入它允许制作假设为其他类的类。
在Ruby中,常量并不是很常数。 如果一个已经初始化的常量在脚本中被修改,那么它只会触发一个警告,但不会停止程序。
Ruby为其变量,方法,常量和类定义了一些命名约定。
$
)开头。@
)符号开始。@@
)符号开始。像Python一样,也可以使用关键字参数来定义Ruby方法。,
方法允许以问号(?
)或感叹号(!
)结尾。 按照惯例,回答问题的方法以问号结束,指定方法可以用感叹号改变对象结束的状态。
Ruby单例方法是每个对象的方法。 它们只对您定义的对象可用。
如果一个方法丢失,Ruby将使用lost
方法名称来调用method_missing
方法。
单行中的多个语句时,语句中间必须包含分号。
在Ruby中有大约42
个关键字不能用于其他目的。 它们称为保留字。
Ruby是区分大小写的语言。 小写字母和大写字母表示不同对象含义。
irb
的交互式提示。doc
工具。Ruby和Python编程语言之间存在许多差异,如下表格列出所示
术语 | Ruby | Python |
定义 | Ruby是一种开源的Web应用程序编程语言 | Python是一种高级编程语言 |
面向对象 | 面向对象编程语言 | 不完全面向对象的编程语言 |
创始人/开发者 | 松本在20世纪90年代。 | Guido Van Rossum在20世纪80年代。 |
开发环境 | 支持EclipseIDE | 支持多个IDE |
程序库 | 比Python库更小 | 有较大范围的库 |
混合类型 | 可使用混合类型 | 不可使用混合类型 |
Web框架 | Ruby on Rails | Django |
社区 | 主要集中在Web应用 | 专注于学术界和Linux |
使用 | 苹果Github上的Twitter Groupon的Shopify ThemeForest | 谷歌Instagram的Mozilla Firefox浏览器,华盛顿邮报,雅虎Shopzilla |
内置类 | 内置类可以修改 | 内置类不可以修改 |
elseif | elsif | elif |
取消设置变量 | 一旦设置了变量,就无法将其设置为不可用。只要它在范围内,它将出现在符号表中。 | del语句用于删除一个设置的变量。 |
yield 关键字 |
它将执行另一个作为最终参数传递的函数,然后立即恢复。 | 它将执行返回到函数调用之外的范围。外部代码负责恢复功能。 |
匿名函数 | 支持块,procs 和lambdas 表达式。 |
仅支持lambda 表达式。 |
函数 | 没有函数 | 有函数 |
元组 | 不支持元组 | 支持元组 |
switch /case 语句 |
它支持switch /case 语句。 |
它不支持switch /case 语句 |
lambda 函数 |
它的lambda 函数更大 |
它只支持单行lambda 函数 |
继承 | 支持单继承 | 支持多继承 |