Ruby

历史

Ruby的作者－－松本行弘于1993年2月24日开始编写Ruby，直至1995年12月才正式公开发布于fj（新闻组）。之所以称为Ruby是取法自Perl，因为Perl的发音与6月的诞生石pearl（珍珠）相同，Ruby选择以7月的诞生石ruby（红宝石）命名。
Ruby相较之下比其他类似的编程语言（如Perl或Python）年轻，又因为Ruby是日本人发明的，所以早期的非日文数据和程序都比较贫乏，在网上仍然可以找到早期对Ruby的数据太少之类的批评。约于2000年，Ruby开始进入美国，英文的数据开始发展。
2004年，Rails框架诞生，Ruby更加广为人知，Ruby并于2006年为TIOBE获选为年度编程语言。

Ruby的版本体系

Ruby版本号的构成形式是（MAJOR）.（MINOR）.（TEENY），均为只有1位的整数；如“1.8.6”、“1.9.3”。
1.9版系统的TEENY不小于1时为稳定版，TEENY为0的版本是开发版。在1.9之前的版本中偶数MINOR代表稳定版，奇数MINOR代表开发版。

Ruby的Hello World程序

下面是一个在标准输出设备上输出Hello World的简单程序：
#!/usr/bin/env rubyputs "Hello, world!"
或者是在irb交互式命令行的模式下：
>>puts "Hello, world!"Hello, world!=> nil

多种字符串表示法

Ruby提供了多种字符串的表示方法，方便撰写有大量文字数据的程序。除了来自C语言的引号表示法之外，还有来自于Perl的百分号字面量记法，以及方便书写大量内容的Heredoc记法。Ruby可以方便地以#{variable_name}的方式向字符串中插入变量。
a = '\n这是一个单引号的字符串，反斜线和变量插值不会被转义'b = %q{这是一个不可转义的字符串}c = "\n这是一个双引号的字符串，反斜线和变量插值会被转义\n#{a}"d = %Q{\n這是一個常量字串，特殊内容同样会被转义\n}e = <<BLOCK这是一个以Heredoc方式书写的常量字符串，可转义，结尾标志不可缩进BLOCKf = <<-BLOCK      这是一个可以缩进的Heredoc字符串    BLOCKg = <<~BLOCK
      这是一个可以缩进的Heredoc字符串
      缩进会被自动去掉，在2.3版本中引入
    BLOCKh = %/\t这是一个可转义的的字符串\n/

动态修改对象、类别

Ruby是动态语言，你可以在程序中修改先前定义过的类别。
也可以在某个类别的实例中定义该实例特有的方法，这叫做原型方法（prototype）。
class MyClass
  def the_method
    "general method"
  endendmc = MyClass.newdef mc.the_method
  "special for this instance."endmc.the_method

强大的反射机制与元编程

Ruby的反射功能相当惊人，甚至可以自行追踪程序运作，或是取出private变量、拦截方法的调用。
常常与‘可以动态的修改对象’这项特色结合，做为‘元编程’的功能：程序在运行时，
可以由程序员提供的信息，自行生成、修改类别或对象，这项功能大大的提高了撰写代码的效率。
在Rails之中，就大量使用了这种特性。
以下为用Rails使用元编程的示例：
class Project < ActiveRecord::Base
  belongs_to :portfolio
  has_one    :project_manager
  has_many   :milestonesend
在这个例子中，Project类别继承Base类别，Base类别内置的belongs_to、has_one、has_many方法，便会根据参数来修改Project类别的内容，并自行创建其他相关的方法。程序员可以更专心处理程序的运作，而不必为每个类别重复得撰写代码。

各种版本

JRuby，类似Python的Jython，一个可于Java上运行Ruby的语言，支持Java的接口和类别。最新发布版为9.1.6.0（2016-11-09），与Ruby 2.3兼容。它的官方网站为jruby.org。