ruby是一个完全面向对象的语言。在许多其他语言里不是对象的东西在ruby里也都是对象,比如整数。更神奇的是,类也是对象。为什么说神奇呢?看一下下面的代码:
class A
end
puts A.class
结果是Class。可以看到,类A 也是一个对象,它是类Class的实例。接着看
puts Class.class
原来Class是Class类自己的实例。
puts Class.superclass
puts Module.superclass
puts Object.superclass
puts Object.class
类Class的爸爸是Module,Module的爸爸是Object。而Object是所有类的祖宗。但是类Object还是类Class的实例。很神奇吧。
我们知道,对象是类的实例,是由类创建的。而在ruby中,类本身也是一个对象,这就形成了一种鸡生蛋蛋生鸡的循环。似乎这是周而复始,无穷无尽的,就像下面那幅埃舍尔的名画
这两个相互描绘的手就像是ruby中的类和对象。两只手相互描绘在现实世界里是不可能的。那么在ruby中,又是如何打破这个僵局的呢?其实很简单,这两只相互描绘的手只是一幅画而已。而让两只手相互描绘则是画家。在画面内部无法解决的矛盾跳到画面外面就很简单了。在ruby里也是如此。在语言层面,类和对象似乎也像是这两只相互描绘的手,但不要忘了,还有一个ruby虚拟机的存在。一切的对象都是由它创建,而语言里的ClassName.new并没有直接创建对象。在一切的开始,虚拟机创建了Class,Module,Object,之后,这三个东西就可以滋生出整个对象世界。虚拟机就像是至高无上的神,创建了整个世界。但是在一个ruby代码的世界里,能看到的却只有对象,而不能直接看到虚拟机的存在。我们可以写完全面向对象的代码,而不用去操心这些对象究竟是怎么来的。
回到现实世界。不知道大家有没有想过我们的现实世界是怎么来的。根据被普遍接受的物质不灭理论,物质不会消失,也不会凭空出现。那么这些物质最初又是怎么来的呢?话说我们的宇宙是由一个很小的核心爆炸,不断膨胀而产生的,又话说宇宙在膨胀到极限后又会重新收缩,又变回一个很小的核心,周而复始。那么这一切又是如何开始的呢?在这个宇宙之外又是什么样呢?如果这些问题存在答案的话,要么接受一个创造这一切的“神”的存在,要么就只能说,物质是无须创造而自然存在的。
神,,,这个东西咱不敢瞎说
不说还好
说错了 下去后受罚的
其实一切皆类也是smalltalk开始的吧~
java也可以做到,只是为了效率没那么做~
ruby早早就出现了,火也是随了ROR吧~
写的很好…….受益了
宇宙是神创造的,那神是谁创造的?
呵呵,据说自然世界是客观存在的。。。
我觉得我倾向于接受这个神的存在,但是,我不认为它是我们描述中的任何一个神。
我只是觉得,它就是这么存在着。所以人可以没有信仰,但是一定要心存敬畏~!