1.1 Ruby是什么?
一言以蔽之,Ruby是一种语法简单且功能强大的面向对象的脚本语言。
与perl一样,Ruby的文本处理功能十分强大。当然了它的功能远不止于此,您还可以使用它来开发实用的服务器软件。
Ruby博采众长,吸收了众多语言的优点,却又别具一格。
Ruby的优点主要体现在以下几个方面。
它的语法简单
它具有普通的面向对象功能(类、方法调用等)
它还具有特殊的面向对象功能(Mix-in、特殊方法等)
可重载操作符
具有异常处理功能
调用带块方法(迭代器)和闭包
垃圾回收器
动态载入(取决于系统架构)
可移植性。它可以运行在大部分的UNIX、DOS和Mac上
1.2 为什么取名叫Ruby呢?
松本先生曾经在[ruby-talk:00394][英译稿](June 11, 1999)中讲过取名的经过。据说当初松本先生一直琢磨着要给这个新语言取个像Perl这样的宝石名字,正好有个同事的诞生石是Ruby,因此就取名叫Ruby了。
后来发现Ruby和Perl真的很投缘,例如pearl诞生石代表6月,而ruby诞生石则代表7月。还有pearl的字体大小是5pt,而ruby则是5.5pt等等。因此松本先生觉得Ruby这个名字很合适,并努力使其成为比Perl更新更好的脚本语言。
松本先生正期待着Ruby取代Perl的那一天早点到来。
1.3 Ruby的诞生过程
松本先生曾经在[ruby-talk:00382][英译稿](June 4, 1999)中介绍过Ruby的诞生过程。[ruby-list:15997]修改了Ruby的诞生时间。
Ruby诞生于1993年2月24日。那天我和同事们聊了聊面向对象语言的可能性问题。我了解Perl(Perl4而非Perl5),但我不喜欢它身上的那股玩具味儿(现在也是如此)。面向对象的脚本语言的前途一片光明。
我觉得Python不能算作真正的面向对象语言,因为它的面向对象特性好像是后加进去的一样。15年来我一直为编程语言而痴狂,我热衷于面向对象编程,但却没有找到一款真正意义上的面向对象的脚本语言。
于是我下定决心自己来开发一个。经过几个月的努力,解释器终于开发成功。然后我又添加了一些自己梦寐以求的东西,如迭代器、异常处理、垃圾回收等。
后来我又采用类库方式添加了Perl的特性。1995年12月,我在日本国内的新闻组上发布了Ruby 0.95版本。
接下来我创建了邮件列表和网站。此后,大家在邮件列表中聊得酣畅淋漓。时至今日,第一个邮件列表中已经积累了14789封邮件。
Ruby 1.0发布于1996年12月,1.1发布于1997年8月。1998年12月,我又发布了安定版1.2和开发版1.3。
1.4 哪里有Ruby的安装文件?
您可以在这里<URL:ftp://ftp.ruby-lang.org/pub/ruby/>找到最新版的Ruby。
镜像站点列表如下
<URL:ftp://ftp.TokyoNet.AD.JP/pub/misc/ruby/>
<URL:ftp://ftp.iij.ad.jp/pub/lang/ruby/>
<URL:ftp://blade.nagaokaut.ac.jp/pub/lang/ruby/>
<URL:ftp://ftp.krnet.ne.jp/pub/ruby/>
<URL:ftp://mirror.nucba.ac.jp/mirror/ruby/>
<URL:http://mirror.nucba.ac.jp/mirror/ruby/>
您可以在Ruby Binaries中找到cygwin版、mingw版和djgpp版的二进制文件包。
另外,Windows(cygwin)中还为初学者准备了Ruby Entry Package。安装方法请参考面向初学者的Ruby安装说明。
1.5 请问Ruby的主页在哪里?
Ruby的官方网站是<URL:http://www.ruby-lang.org/>。
1.6 请问有Ruby邮件列表吗?
现在有6个正式的Ruby邮件列表。
ruby-list
ruby-dev
ruby-ext
ruby-math
ruby-talk
ruby-core
详情请参考Ruby邮件列表。
1.7 怎么才能看到邮件列表中的老邮件?
<URL:http://blade.nagaokaut.ac.jp/ruby/ruby-list/index.shtml>和<URL:http://ruby.freak.ne.jp/>里面有搜索邮件用的表单。
另外,ML Topics中列出了老邮件中的重要话题。
1.8 rubyist和ruby hacker的区别是什么?
松本先生对rubyist和Ruby hacker的定义如下。
rubyist是指那些对Ruby的关心程度超过常人的人。例如
向周围的人宣传Ruby的人
编写Ruby的FAQ的人
在计算机通信组中增加Ruby小组的组长
撰写Ruby书籍的作者
写信鼓励Ruby作者的热心人
Ruby作者本人而Ruby hacker是指那些在技术层面上对Ruby有所专攻的人。例如
Ruby扩展库的作者
修改Ruby中的bug并发布补丁的人
djgpp版Ruby或win32版Ruby的作者
用Ruby编写了实用(必须得具备一定规模的)程序的人
用Ruby编写出天书般难懂的脚本的人
Ruby作者本人等就是Ruby hacker。
这些称号只不过是自我解嘲式的自称,我不会为任何人进行正式的认证。松本先生特别将上述人士列为{rubyist、Ruby hacker},可见其尊敬之情。
1.9 它的正确写法是"Ruby"还是"ruby"?
Ruby的正式写法是"Ruby",其命令名是"ruby"。另外只要不让人觉得别扭的话,也可以使用ruby来替代Ruby。
但不能把"RUBY"、"ルビー"或"るびー"用作这门语言的名称。
此前曾经有一段时间把"ruby"用作正式名称。
1.10 请介绍一些Ruby的参考书
主要有《オブジェクト指向スクリプト言語Ruby》(译注:日语书名未翻译)[松本行弘/石塚圭树 合著 ASCII出版(ISBN4-7561-3254-5)],其他书目请参考Ruby相关书籍。
至于正则表达式,请参考Jeffrey E. F.Friedl著的《詳説正規表現》(译注:日语书名未翻译)[reilly Japan出版(ISBN4-900900-45-1)]。这本书介绍了各种正则表达式的实现问题,有助于加深您对于Ruby正则表达式的理解。
1.11 我看了手册可还是不明白,该怎么办?
Ruby的基本句法从Ruby1.0以后就没有太大的变化,但却在不断完善和扩充,因此有时文档的更新速度跟不上最新的发展。另外,有人坚持说源代码就是文档,如此种种。
若您有何疑问,请不必顾虑太多,直接到ruby-list中提问即可。Ruby教主松本先生以及各位尊师还有我都会为您排忧解难。
提问时,请写明ruby -v的结果并附带上您的代码(若代码太长的话,只需摘录重要部分即可)。
若您使用的是irb的话,则稍有不同。因为irb自身也存在一些问题,所以您最好先用irb --single-irb重试一下,或者用ruby重新运行一次为好。
虽然搜索ML可以解决您的大部分问题,但因为邮件数量庞大,想找到答案实属不易。为遵从网络礼节(请参考RFC1855的3.1.1、3.1.2),您可以只搜索最近的内容,但是说起来容易,做起来难。况且说不定最近又出现了什么新观点呢。所以您还是壮起胆子来提问吧。
1.12 ruby的性格比较像羊?
羊、蜂鸟、兔子...
1.13 遇到bug时怎么上报?
遇到bug时应该上报到Ruby Bug Tracking System,通常很快就会得到回复。您也可以用邮件将bug的情况上报到ruby-bugs-ja。
上报时,最好能提供ruby的版本和平台信息、错误消息以及能再现bug的脚本和数据。
遇到bug时,通常会显示[BUG]消息,而Ruby也将被强行关闭。此时大部分系统都会生成一个core文件。若您的调试器可用的话,可能还会有backtrace。若您能提供这些信息就更好了。