liujunsong:
很多人说到面向对象,都认为是object-oriented的直接翻译.
其实不然.object-oriented的本意应该是"对象引导的",而不是面向对象.
两者有什么区别吗?有,但不是很明显.
如果说道面向对象,那么是谁来面向对象呢?潜台词是我来面向对象,在此过程中,我是作为主动者而存在,而对象是被我控制的.而在对象引导中,对象作为主动者而存在,我作为被动者被对象所引导.
同样的道理,在现在还有许多象message-oriented,service-oriented,在这些词的英文本意中,我都是作为一个被动者而存在的,可是在翻译成为中文以后,全部变成了面向...,主动和被动的关系就这样被颠倒了.
在国内翻译的许多计算机图书中,大量存在这样的无意中的概念偷换,最后再拿这些书籍来给人学习,最后大家都一头雾水,这是糟糕的翻译者自以为是,造成的恶果.
风雪漫天:
呵呵,港台叫“物件导向”,是不是觉得合适些。
liujunsong:
其实不是这样的,真正的object-oriented的设计思想中,我是不存在的,我只是一个旁观者.打个比喻.这个object-oriented的世界,是由我来创造的.
正如人是由神来创造的一样,object也是由我,我们来创造的.
现在你可以理解为什么要用create()这个函数了吗?create在英文中是一个非常严肃的词,带有强烈的感情色彩,Creator并不是指创造者,而是指造物主.
那么object是由我们人来创造的,可是一旦创造完成以后,他们要自己来进行交互和访问,从而构成一个完整的软件系统.
如果把软件系统比作社会的话,那么每一个object就是一个单独存在的人.
create就是人获得了生命,destroy就是人死去.
我们对于面向对象技术的难以理解,往往是因为文化的差异使得我们采用中国人的传统思维方式去理解它,可是对于它的理解是需要西方人的思维的.
如果有兴趣的话,可以看看创世纪的传说,就能够理解object-oriented的真正含义了.