simula(simulator language)与smalltalk 两种最早的面向对象语言,simula以过程调用的方式向对象发送消息;(消息的发送方式被直接处理成成员函数的调用,或虚函数的调用)但是必须要知道对象是谁,它的消息机制可称为“静态消息机制”
smalltalk构造了更加灵活纯粹的消息发送机制;(目标无关的消息发送机制)不关心对象是谁,也不关心对象能不能处理消息,它的消息机制可称为“动态消息机制”
从过程范式与对象范式两种基本对立观点看面向对象语言的发展:
simula 是C++的前身,smalltalk是Object-C的前身;
C++语言处理消息你要确保它能处理这个消息。(必须具有合适的类型),window的消息机制跟C++语言的静态消息机制无法配合,所以window使用的是C语言的面向对象本质实现的;
C++的静态消息机制导致“面向对象的设计”偏向“面向类的设计”然而一种对象级别的委托机制能弥补这一缺陷;
delegate机制即对象回调机制;对象A把一个事件委托给对象B的方法去处理,而不需要A;B之间有关联;在C/C++里面通过函数/成员函数指针实现;
objective-c的委托机制作为它这门语言的特性,有一套自己的流程,添加协议,指定委托对象,实现委托方法等,其实质其实就是一种方法回调;
今天在学习boost线程池的时候无意间看到大师们对bind和function的分析,讲到C++语言和objective-C语言的静态消息,动态消息机制,其实这两种语言我都使用过,同样作为面向对象的语言,都兼容C,其中的差别联系值得去学习。