Ruby
Ruby,一种为简单快捷面向对象编程而创的脚本语言,在20世纪90年代由日本人松本行弘开发,遵守GPL协议和Ruby License[1]。它的灵感与特性来自于Perl、Smalltalk、Eiffel、Ada以及Lisp语言。由Ruby语言本身还发展出了JRuby(Java平台)、IronRuby(.NET平台)等其他平台的Ruby语言替代品。
Ruby的作者于1993年2月24日开始编写Ruby,直至1995年12月才正式公开发布于fj(新闻组)。之所以称为Ruby,是因为Perl的发音与6月的诞生石pearl(珍珠)相同,因此Ruby以7月的诞生石ruby(红宝石)命名。
Ruby明显比其他类似的编程语言(如Perl或Python)年轻,又因为Ruby是日本人发明的,所以早期的非日文数据和程式都比较贫乏,所以现在在网上仍然可以找到Ruby的数据太少之类的批评。约于2000年,Ruby开始进入美国,英文的数据开始发展。
2004年,RoR框架诞生,Ruby更加广为人知,Ruby并于2006年为TIOBE获选为年度编程语言。
Ruby的理念
减少编程时候的不必要的琐碎时间,令编写程序的人高兴,是设计Ruby语言的Matz的一个首要的考虑;其次是良好的界面设计。他强调系统设计必须强调人性化,而不是一味从机器的角度设想[2]。
“ | 人们特别是电脑工程师们,常常从机器着想。他们认为:“这样做,机器就能运行的更快;这样做,机器运行效率更高;这样做,机器就会怎样怎样怎样。”实际上,我们需要从人的角度考虑问题,人们怎样编写程序或者怎样使用机器上应用程序。我们是主人,他们是仆人。 | ” |
遵循上述的理念,Ruby语言通常非常直观,按照编程人认为它应该的方式运行。
Ruby的作者认为Ruby > (Smalltalk + Perl) / 2,表示Ruby是一个语法像Smalltalk一样完全面向对象、脚本运行、又有Perl强大的文字处理功能的编程语言。
Ruby的Hello World程序
下面是一个在标准输出设备上输出Hello World的简单程序:
#!/usr/bin/env ruby puts "Hello, world!"
或者是在irb交互式命令行的模式下:
>>puts "Hello, world!" Hello, world!=> nil
其他特色
- 完全面向对象:任何东西都是对象,没有基础类型
- 变量没有类型(动态类型)
- 任何东西都有值:不管是四则运算、逻辑表达式还是一个语句,都有回传值。
- 运算符重载
- 垃圾回收
- 强类型[3]
- 变量无需声明
- 在Windows上,加载DLL
让人惊讶之处
- Ruby的
false
等同与nil
,这点和C语言的‘用0代表false
’不同,常使用C的人可能会因此惊讶。 - Ruby的字符串是可改变的,这与Java固定不变的字符串不同,Java的字符串比较像Ruby的
Symbol
。 - Ruby的继承功能相当脆弱,尽管Ruby是一个面向对象语言,Ruby内的许多规则,却使得子类有可能不小心就改写了父类型的功能,在《The Ruby Programming Language》一书中,建议除非程序员对一个类型相当了解,否则尽可能不要使用继承。
和Perl 6比较
- CPAN上排名第一名,同时也是Perl 6的开发者的唐凤(Autrijus / Audrey)说:“Ruby就是‘没有到处打广告的Perl 6’”。[4]
- 松本行弘在接受欧莱礼(O'Reilly)访问时,提到“Ruby借用了很多Perl的东西……,Python远比Perl要少……”、“我认为Ruby这个名字作为Perl之后的一门语言的名字真是再恰当不过了。”[5]
- Perl之父拉里·沃尔(Larry Wall)说:“很多方面上我还是很喜欢Ruby的,这是因为那些部分是从Perl借过去的。:-)”、“我还喜欢Ruby的C<*>一元星号操作符,所以我把它加到Perl 6里面。”[6]
- Ruby的简体中文官方网站(简体中文)
- Ruby的繁体中文官方网站(正体中文)
- Ruby的官方网站(英文)
- Ruby Garden
- 《Programming Ruby》网络版
- Ruby Application Archive
- RubyForge提供一个类似SourceForge和Freshmeat的环境给用Ruby或给Ruby写的工具。
- Ruby Documentation project
- Ruby Forum
- Full Ruby on Rails Tutorial
- Try Ruby! (in your browser)(联机运行Ruby)(英文)