编程范式思维

本文探讨了程序设计的三大范式:过程范式、函数范式和对象范式。重点介绍了对象范式的概念,包括其如何通过逻辑分工降低大规模程序开发难度,提高灵活性,以及更适合现代计算环境的特点。同时,文章对比了Smalltalk和Simula两种消息传递机制,分析了它们在不同应用场景下的优劣。

程序设计有一个范式问题:就是组织程序的基本思想。它反映了程序设计者对程序的一个基本的哲学观,也就是说,他认为程序的本质是什么,他认为一个大的程序是由什么组成的。

范式目前有三种:过程范式、函数范式、对象范式。


  1. 过程范式认为,程序是由一个个过程经过顺序、选择和循环的结构组合而成。反映在现实世界,过程范式体现了劳动分工之前“大包大揽”的工作特点—能胜任所有事情,拥有所有的资源,高度集中在这个“人”身上,只不过具体的事情得一步步地有顺序来处理。
  2. 对象范式反映了劳动分工之后的团队协作的工作特点–每个人各司其职,各有所长,各自拥有私有资源,工件和信息彼此传递,最后完成工作。因此,对象范式也就形成了自己对程序的看法—程序是由一组对象组成,这些对象各有所能,通过消息传递实现协作。

后者较前者具有3个优势:

  1. 由于实现了逻辑分工,降低了大规模程序的开发难度。
  2. 灵活性更好–若干对象在一起,可以灵活组合,可以以不同的方式协作,完成不同的任务,也可以灵活的替换和升级。
  3. 对象范式更加适合图形化、网络化、消息驱动的现代计算环境。

对象范式的两大基本观念:

  • 程序是由对象组成的。
  • 对象之间互相发送消息,协作完成任务。

为了方便对象的构造,引入了类、继承等概念。 smalltalk构造了更灵活和纯粹的消息发送机制。

它实现了一个与目标对象无关的消息发机制,不管那个对象是谁,也不管他是不是能正确的处理一个消息,作为发送消息的对象来说,可以毫无顾忌的抓住一个对象就发送消息过去。接到消息的对象,要尝试理解这个消息,并最后调用自己的处理过程来处理消息。如果这个消息能被处理,那个对象自然会处理,如果不能处理,Smalltalk系统会向消息的发送者回传一个doesNotUnderstand消息,予以通知。对象不用关心消息是如何传递格给一个对象的,传递过程被分离出来(而不是向Simula那样明确地以成员函数调用的方式实现),可以是在内存中复制,也可以是进程间通讯。到了Smalktalk-80,消息传递甚至可以跨越网络。

不妨把源自Smalktalk的消息机制称为“动态消息机制”。

把源自Simula的消息机制称为“静态消息机制”。

对于消息转发机制的不同选择,主要是因为用途。Simula用于仿真程序开发,smalltalk用于图形界面环境构建。

到了1980年代,C出现了。Bjarne Stroustrup在博士期间深入研究Simula,于是在C语言基础上,几乎把Simula思想照搬过来,形成了最初的C。 大约在同期,Brad Cox根据Smalltalk的思想设计了Objective-C,可是由于其语法怪异,没有流行起来。只有Steve Jobs这种具有禅宗美学鉴赏力的世外高人,于1988年把Objective-C的团队和产品一口气买了下来。


转载于:https://juejin.im/post/5c02acfbe51d453c0a21b37e

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值