Ruby是什么~~在新视点里的插图

Python013

Ruby是什么~~在新视点里的插图,第1张

Ruby,一种为简单快捷面向对象编程(面向对象程序设计)而创的脚本语言,由日本人松本行弘(まつもとゆきひろ,英译:Yukihiro Matsumoto,外号matz)开发,遵守GPL协议和Ruby License。Ruby的作者认为Ruby >(Smalltalk + Perl) / 2,表示Ruby是一个语法像Smalltalk一样完全面向对象、脚本执行、又有Perl强大的文字处理功能的编程语言。其他特色包括:

* 运算符重载

* 自动垃圾回收

* 弱类型(动态类型 | 标量变量)

* 变量无需声明 (不必事先宣告变量)

* 在Windows上,加载DLL

* 巨大的标准库(函式库;Library)

编辑本段历史

Ruby的作者于1993年2月24日开始编写Ruby,直至1995年12月才正式公开发布于fj(新闻组)。之所以称为Ruby,是因为Perl的发音与6月的诞生石pearl(珍珠)相同,因此Ruby以7月的诞生石ruby(红宝石)命名。

Ruby明显比其他类似的编程语言(如Perl或Python)年轻,又因为Ruby是日本人发明的,所以早期的非日文资料和程序都比较贫乏,所以现在在网上仍然可以找到Ruby的资料太少之类的批评。约于2000年,Ruby开始进入美国,英文的资料开始发展。

Ruby现在的稳定版本是1.8.6(2007年3月12日发布)。

2008年8月Ruby 1.8.7-p72 和 1.8.6-p287 发布。先前的发布版本不完全,新的版本包括了对之前发布的关于dl的漏洞的修正。

编辑本段Ruby 的理念

减少编程时候的不必要的琐碎时间,令编写程序的人高兴,是设计 Ruby 语言的 Matz 的一个首要的考虑;其次是良好的界面设计。他强调系统设计必须强调人性化,而不是一味从机器的角度设想。

“ 人们特别是电脑工程师们,常常从机器着想。他们认为:“这样做,机器就能运行的更快;这样做,机器运行效率更高;这样做,机器就会怎样怎样怎样。”实际上,我们需要从人的角度考虑问题,人们怎样编写程序或者怎样使用机器上应用程序。我们是主人,他们是仆人。 ”

遵循上述的理念,Ruby 语言通常非常直观,按照编程人认为它应该的方式运行。

Semantics

Ruby 是完全面向对象的:任何一点数据都是对象,包括在其他语言中的基本类型(比如:整数,布尔逻辑值),每个过程或函数都是方法。

编辑本段Ruby的Hello World程序

下面是一个在标准输出设备上输出Hello World的简单程序,这种程序通常作为开始学习编程语言时的第一个程序:

#!/usr/bin/env ruby

puts "Hello, world!"

你的问题是不是“ruby 语言的特点”吧??哈哈~~还是我自做多情啦~~~~

Ruby特点

一般认为,他有如下特点:

简单

解释型语言,所以不必事先编译,直接运行,开发周期短,调试方便。

变量没有类型的区分,变量不需要定义,而且是弱类型,即可以改变类型。

irb(main):004:0>a=1

=>1

irb(main):005:0>a.class

=>Fixnum

irb(main):006:0>a*3

=>3

irb(main):007:0>a="str"

=>"str"

irb(main):008:0>a.class

=>String

irb(main):009:0>a*3

=>"strstrstr"

irb(main):010:0>

简单的语法,多从Eiffel继承而来,容易学习。

不需要内存管理,系统提供GC处理机制。其实自从学习JAVA之后,几乎就很少想起指针和内存分配了。

它是纯的面向对象的语言

一切都是对象,像整数等类型从开始就被设计为对象来处理。

有类,实例,模块,继承,方法重载等。

module和Mixin ,实现多重继承。

比Python,Java,C++等更OO。

脚本语言

解释执行

很强的文字处理能力和正则表达式

直接访问OS,用ruby编写系统程序也是可能的。

其他

支持多种长整数,如果内存允许,可以进行很大数的计算操作。

具备异常处理能力,类似java的异常处理功能。

动态载入。可以在运行时候重定义自己,类也可以在运行时继承/取消继承。

线程支持。

反射(Reflection)。Ruby可以看到程序的内部,比如一个模块是否含一个特定方法,一个对象是哪个class等等。类似java的反射功能。

扩展性。使用C API可以轻松的建立国更多的应用库,比如Ruby Mysql模块就是用C语言编写以供Ruby调用Mysql数据库用的。

迭代器和闭包。一个在闭包开始时定义的资源在闭包结束后会被释放,适合于socket,数据库连接,文件句柄等。而迭代器则是非常方便的工具。

跨平台,支持Linux,Unix,Windows,Mac等更重操作系统。

发行许可证。基于Ruby Artistic License (BSD样式的)和GPL。

像其它开源软件一样,有活跃的社区,大量面向Ruby的软件越来越多。

拿C++和php打比,php强语言,c++弱语言.

1)语法有区别,最明显的弱语言不需要设定变量类型,强语言需要

2)底层上,弱语言是解释执行,强语言是编译执行(java另说,生成中间字节码)

3)性能上差距太大,强语言大大快于php

4)开发效率,弱语言要快于强语言,所以web开发弱语言很高效

5)学习曲线不同,弱语言简单好学但是精通的太少了,很多强语言的特性都没有或者牵强的模拟实现强语言入门门槛高,学不容易,语言特性多,逼着你都学会,另外由于传统软件行业对编程的要求本来就高于web行业导致写传统软件的人的编程素质要远远强于web行业的

6)最佳的应用场景不同,php只能做web,c++做底层 软件,也可以做web(但是没人这么做)

我用最通俗的话告诉你了区别,但是不仅限于这些.

所以无论做软件还是web,建议强语言(c++ java等)和弱语言(php python perl ruby等)都至少懂一种,另外单独的像js这种基于原型的客户端脚本语言也必须要会!