七周七语言(2)
这周主要看了ruby,和prolog语言
对于ruby语言,ruby是解释型语言,对命令一条条解释,其实个人认为也可以先编译,在执行,加快效率,甚至可以和java的JIT一样,编译成本地语言,加快执行速度。
ruby明显特点就是动态性,变量不需要定义直接可以赋值,相对与java这样的静态语言,变量需要先定义变量名和变量类型,然后进行赋值,而ruby就可以直接进行赋值,赋值的过程包含在定义里面。这种特定对于开发效率非常高,但是排错的情况就比较复杂。
对于里面提到的鸭子类型,并没有太大的感觉,和接口有点类似,实现了某一个接口的类就具有接口的类型,唯一不同的是ruby没有接口,可以通过mixin机制来实现类的共通属性功能。
对于mixin机制,思路是实现多继承,组合类的功能。在java里面是没有办法做到多继承的,只能实现多个接口。但是如果一个类想实现多个其他类的功能,其实只能通过组合的方式进行,通过反射机制动态的给类增加功能,这个只能动态的进行。而ruby则可以通过module的方式,给类引入新的特性。
对于元编程,这个非常有用。和我们车写程序的思维有点类似,程序可以先分解成为几个独立功能,然后在细化功能。可以使用函数,然后在去实现函数,有一点意思,java里面是做不到的,因为java没有定义函数直接使用的花,就会报错。这一特性也是ruby的动态性决定的,执行的时候去找关联的函数。