`
netbabe
  • 浏览: 24245 次
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论
阅读更多

 

想知道 Ruby 为什么会如此受欢迎吗?为什么使用过它的支持者都称赞它为巧妙、优雅且易用更实用有趣的语言?

Ruby 发明者的理想

Ruby 是一个注重均衡的语言,它的发明者松本行弘 Yukihiro “matz” Matsumoto,混合了他喜欢的语言(Perl、 Smalltalk、 Eiffel、 Ada 和 Lisp ) 产生了一种具有函数式及指令程序设计特性的新语言。

他常说,他是“试着让 Ruby 更自然,而不是简单,就像生活一样”。

除此之外,他还提到:

Ruby 就像人的身体一样,表面上看来简单,但是内部却相当的复杂[1]。

Ruby 的成长

在 1993 年,没有人会相信一个由日本业余语言设计者创建的面向对象的语言,能最终在世界范围内被广泛使用并且变得几乎像 Perl 那样流行。自从 1995 年 Ruby 公开发表以来,Ruby 在全球吸引了许多忠实的程序设计员。在 2006 年,Ruby 被广泛接受。在各大城市都有活跃的使用者并通过社区举办许许多多场场爆满的研讨会。

Graph courtesy of Gmane.

在 Ruby-Talk,主要的 邮件列表 上,讨论 Ruby 语言的文章爬升到每日 200 封。

在 TIOBE, 最流行的开发语言排名调查中, Ruby 排名为全球第 11 位。 根据这样的成长情况,他们预测“在半年之中 Ruby 将会进入最受欢迎开发语言的前 10 名。”有越来越多受欢迎的软件如 Ruby on Rails web framework2 是使用 Ruby 撰写而成,也是造成 Ruby 如此快速成长的原因。

Ruby 是开源软件。 不只是免费,而且可以自由的使用、复制、修改与发布。

所见到的都是对象

最初,Matz 从其它语言中找寻理想的语法,在网络上他做了一段时间的调查,找到候选如“Perl“和“Python“。但都不是他想要的,他需要一个比 Perl 更强大、比 Python 更面向对象的语言[3]。

在 Ruby 中,所有的东西都是对象,所有的信息和代码都可以给它们所拥有的属性和行为。面向对象程序设计中称属性为实例变量(instance variables),称命令为方法 (methods)。 从下列程序代码中看到 Ruby 能够给数字赋于行为,从这点可以证明 Ruby 是纯面向对象的语言。

5.times { print "We *love* Ruby -- it's outrageous!" }

在许多语言中,数字和其它原生的类型都不是对象。而 Ruby 受 Smalltalk 语言影响,让所有的类型都可以赋予方法及产生实例变量,并让这些规则适用于 Ruby 所有对象。

Ruby 的灵活性

Ruby 是一个相当灵活的语言,她允许用户去改变她本身。 Ruby 的核心部分可以被更改或重新定义,模块可以被添加。Ruby 试着不去妨碍程序员。

比如(+) 是用做加法的运算符。如果你更喜欢使用易读的 plus 的话,你可以给 Ruby 的内建 Numeric 类添加一个函数。

class Numeric
  def plus(x)
    self.+(x)
  end
end

y = 5.plus 6
# y is now equal to 11

Ruby 的符号只是语法的甜头 (syntactic sugar)。你可以随时重定义他们。

Blocks,一个独特且强大的特性

Ruby 的代码块是非常强大的。程序员可以给任何函数添加一个密封 (closure) 来表述这个函数该如何工作。密封也被叫做代码块,是用过其他比如 PHP, Visual Basic 等规则语言的 Ruby 的初学者最喜欢使用的一个功能。

代码块取自函数语言。Matz 说:“我希望在 Ruby 的密封中融入 Lisp 的文化 [4]。”

search_engines = 
  %w[Google Yahoo MSN].map do |engine|
    "http://www." + engine.downcase + ".com"
  end

在上面的代码中,代码块是在 do ... end 中的结构。 map 函数将代码块应用到一个词的列表中。Ruby 的其他函数经常会为程序员留出一个空当给代码块来控制函数的功能。

Ruby 与 Mixin

于其他面向对象语言不同,Ruby “有意”只提供单继承。不过 Ruby 拥有模块(在 Objective-C 里面叫做类别)。模块是把许多方法放在了一个类别里。

类可以混合一个模块,得到这个模块提供的所有方法。比如所有提供 each 方法的类可以混合 Enumerable 模块,来得到这个模块提供的所有方法,当然这些方法都会调用 each 做循环。

class MyArray
  include Enumerable
end

一般来说,Ruby 爱好者相对于复杂和限制颇多的多态继承方法来讲更偏向于这种混合方法。

Ruby 的面貌

尽管 Ruby 只用很少的符号并且偏向与英文单词做关键字,但是少量的符号也被用来装饰 Ruby。Ruby 不需要提前定义变量。它用简单的命名法来提示变量存在的范围。

  • var 可以是局部变量。
  • @var 是一个实例变量。
  • $var 是一个全局变量。

这些信号让程序员更清楚的看到每一个变量的角色,增强了程序的可读性,也不需要在实例变量前面加上 self. 了。

更上一层楼

Ruby 还有其他丰富的特性:

  • Ruby 有类似于 Java 和 Python 的异常处理,使处理错误更方便。
  • Ruby 有一个真正的表示-清扫(mark-and-sweep)垃圾收集器来出来所有的 Ruby 对象。不需要在库里维护引用数了。就像 Matz 说的:“这对您健康有意。”
  • 为 Ruby 写 C 的扩展比 Perl 和 Python 更容易。Ruby 有一个非常雅致的 API 从 C 语言调用 Ruby。这包括把 Ruby 作为嵌入式脚本语言时,从其他软件里调用 Ruby。SWIG 界面也是可选的。
  • Ruby 可以在操作系统允许的情况下动态调用库。
  • Ruby 提供不依赖操作系统的线程。所以在所有 Ruby 支持的操作系统里都可以使用多线程处理,不管操作系统支不支持,比如 MS-DOS!
  • Ruby 极为轻便:它只要是在 GNU/Linux 上开发的,但也在很多类型的UNIX 上运行,也支持 Mac OS X, Windows 95/98/Me/NT/2000/XP,DOS,BeOS,OS/2 等。

参考资料

1 Matz, 在 Ruby-Talk 邮件列表, 5月12日, 2000.

2 查看更多信息在 Ruby on Rails 主页.

3 Matz, 在 Ruby 创造者的采访, 11月29日, 2001.

4 Matz, 在 Ruby 的代码块和闭合, 12月22日, 2003.

 

分享到:
评论

相关推荐

    关于ruby的几本电子书

    这里提到的两本书籍——"the ruby way.chm"和"rubyonrails2204.pdf",很可能是关于Ruby语言和Ruby on Rails框架的深入学习资源。 1. "The Ruby Way":这本书通常被看作是Ruby编程的权威指南。它深入探讨了Ruby语言...

    关于 Ruby 的基本概念、特性、常用框架和应用领域的简要介绍

    ### 关于 Ruby 的基本概念、特性、常用框架和应用领域的详细介绍 #### 一、基本概念 **1. 动态类型** Ruby 作为一种动态类型的编程语言,在编译时并不需要明确指定变量的数据类型,而是根据赋给变量的实际值来...

    关于ruby学习的资料

    在Ruby学习中,这样的文档可能是关于错误处理、异常捕获(trap)或系统调用的相关教程。在Ruby中,`trap`常用于设置信号处理器,允许程序在接收到特定系统信号时执行自定义操作,这在编写可靠和响应迅速的系统中非常...

    关于Ruby语言教程、案例及相关项目资源,清晰、分点表示和归纳的回答

    关于Ruby语言教程、案例及相关项目资源,清晰、分点表示和归纳的回答

    Ruby-关于Ruby的相关学习说明了解

    Ruby

    ruby笔记1ruby笔记1ruby笔记1

    标题中的"ruby笔记1ruby笔记1ruby笔记1"暗示了这是一份关于Ruby编程语言的学习笔记,可能包含了作者在学习过程中的重点、难点以及心得体验。描述中的内容重复了标题,进一步强调了这是关于Ruby的深入学习记录。标签...

    免费的一本好书关于Ruby学习

    Ruby(中文名:红宝石)是一种简洁、灵活且富有表达力的编程语言,由日本程序员松本行弘(Matz)设计开发。Ruby注重开发者的幸福感,致力于提高开发者的效率和乐趣。下面是 Ruby 的一些主要特点和特性: 1. **简洁...

    关于Ruby和Gnuplot的配置说明

    Ruby是一种广泛使用的动态脚本语言,因其简洁明了的语法和强大的功能而受到开发者的青睐。Gnuplot是一款命令驱动的交互式数据和函数绘图工具,它可以将数据和函数转换成高质量的图形。在进行数学问题研究、数据可视...

    Ruby新手学习书(Ruby语言中文教程)和Rails_4_days

    接下来,"Rails_4_days"可能涵盖以下关于Ruby on Rails的知识点: 1. **MVC架构**:Rails基于Model-View-Controller模式,理解每个组件的作用及其相互关系是学习Rails的第一步。 2. **路由**:Rails的路由系统是...

    ruby books

    描述中提到的"一些积聚起来的关于ruby的书"表明这是一个集合,包含了多本关于Ruby编程的书籍。这些书籍可能包括教程、指南、参考手册以及实战案例分析,旨在帮助读者掌握Ruby的基础知识,理解其核心概念,如类、模块...

    Ruby学习资料(含参考手册和Programming Ruby)-中文.rar

    "Ruby语言(Grant Ren)-p143.doc"可能是一篇关于Ruby语言的深入文章或章节,重点关注的是第143页的内容。在学习过程中,阅读这些深度文章可以帮助你理解更高级的主题,比如Ruby的内存管理或者面向协议的设计。 ...

    ruby语言帮助文当

    2. `ruby20-core.chm`:可能是关于Ruby 2.0核心库的文档,核心库包含了语言的基本结构和功能,如类、模块、对象、变量、控制结构等,是编写任何Ruby程序不可或缺的部分。 3. `ruby20.chm`:这个文件可能是整个Ruby ...

    ruby under a microscope

    - **Ruby Under a Microscope**是一本关于Ruby内部实现的综合性指南,对于希望深入了解Ruby内部机制的开发者来说是一本不可或缺的参考书。无论你是Ruby初学者还是资深开发者,本书都能为你提供宝贵的知识和洞见。

    ruby官方chm文档

    本套官方文档包含了关于Ruby核心库、标准库、语言特性和整体框架的详细信息,是学习和深入理解Ruby不可或缺的参考资料。 《ruby23-stdlib.chm》文档主要涵盖了Ruby的标准库(Standard Library)。Ruby标准库提供了...

    ruby语法基础教程及Ruby教程中文版和安装文件

    关于Ruby的安装,你可以访问Ruby官方网站(https://www.ruby-lang.org/zh/)下载适合你操作系统的安装包。Windows用户可以选择RubyInstaller,Mac用户可以通过Homebrew安装,Linux用户可以在终端输入相应的包管理器...

    Best of Ruby Quiz

    这本书的描述简洁明了,"Best of Ruby Quiz"直接点出了其核心内容——一系列关于Ruby的精彩挑战和问题解答,旨在提升编程技能。 Ruby是一种面向对象的、动态类型的编程语言,由日本的松本行弘(Yukihiro Matsumoto...

    Programming ruby.pdf

    《Programming Ruby》是一本关于Ruby编程语言的经典著作,由Dave Thomas、Andy Hunt和Chad Fowler合著。这本书自2004年初版以来,一直是学习Ruby的首选资源,被誉为“Pickaxe”书,因其封面的图标而得名。Ruby是一种...

    Programming Ruby - The Pragmatic Programmer's Guide, 2nd Edition (2005) [annotated]

    ### 关于Ruby Ruby是一种简洁、优雅且功能强大的编程语言,由日本人松本行弘(Yukihiro Matsumoto)于1995年设计并发布。它结合了Perl的灵活性、Smalltalk的面向对象能力以及Ada的强大静态类型系统,旨在提高程序员...

    Ruby API Docs帮助文档

    Ruby API Docs是针对Ruby编程语言的一份详尽的官方文档,它为开发者提供了关于Ruby标准库和核心类库的详细信息。这份文档包含了1.8.7和1.9.2两个版本,这两个版本在Ruby的发展历程中具有重要的地位。Ruby API Docs...

    ruby devkit for win32

    标签"ruby devkit"再次强调了这是关于Ruby开发工具包的主题。 在压缩包文件的列表中,我们看到有"INSTALL",这通常是一个指导性文档,详细说明了如何安装和配置Ruby DevKit。"bin"目录包含可执行文件,如编译器和...

Global site tag (gtag.js) - Google Analytics