面向过程、面向对象、模块化概念的通俗解释
有网友、粉丝互动时说:可以讲讲面向过程与面向对象。
啊!这不都是说了多少年的事了吗。专著、书籍、网络、……,到处都可以查到面向过程与面向对象的叙述、诉说吗。
本人想了想。嗨!还真是的。面向对象这个概念能想清楚。也就是大脑很肯定。可以具体、可以抽象;可以现实、可以虚拟或程序;能说深、能说浅;可说深、可说通俗;反说正说、……;反正是明白的,自己把自己问不糊涂。
可说道面向过程,真有点犯难了。是呀,应该清楚呀。整天在按照面向过程的思想、方法、模式在编写程序。怎么就不明白呢。会做、在做却说不清。或说没意识到在那么做。
那就来从根上说吧。查词典,看看这些词的本意-词根是什么意思。
手头有年版的英语词典,年版的汉语词典。
年版的英语词典年版的汉语词典查询了几个词汇:
过程-注意:汉语是以字为基本单位;英语是以词为基本单位
英语process
查英语单词process汉语有字-过,还有词-过程
查汉语有字-过查汉语有词-过程这个概念两种语言解释没有本质区别。英语咱就不说了,那是英语母语国的人们由习惯产生概念。请特别注意汉语词典给出的扩展词汇-生产过程。咱还是用中国人的习惯来解释吧。
这个我懂。生产过程,比如(本人特别习惯类比、比较。相似的、相反的、相同的等)种小麦、种水稻的过程;做饭的过程;生产汽油的过程;炼钢炼铁的过程;盖房子的过程;造机器的过程;多了去了。可是,好像工业中比较专业的称呼是:什么、什么工艺。像化工工艺、冶金工艺、轧钢工艺、建筑施工工艺、食品加工工艺、……。有的叫过程工程研究所(过去叫化工冶金研究所)。
过程工程研究所案例够了吧。可以下一个抽象化的、形式化的定义了吧。
可本人在抽象、严格、规范方面实在是笨拙。只懂意会不懂言传。
那计算机语言的程序设计中说的-面向过程又是什么呢?
还得再看一下面向这个词。查吧。
英语词汇-Orient母语是英语的人们,Oriet-特别指面向-脸朝向东方(亚洲)。这可好玩了。
那汉语呢?《商务印书馆》出版的汉语词典里没这个词!有面对这个词。还有朝向这个词意思最接近。
用汉语面来组词面对面、面对过程还好说。面对对象,这个说法念起来不顺口。意思与汉语的词根表达也不太吻合、贴切。
那就叫面向……好了。
对象这个词不用细查了。容易理解。
现在来说面向过程:
还得说计算机发明之初的目的和功能要求-数字计算。
数学问题的解决辅助工具是计算机器。
看一代计算题:5+3*[2/(6-2)+(5-3*2)];大括号就不用了吧。
如果写成5+3*2/6-2+5-3*2;这两个结果不一样吧。
为什么呢?这就是运算规则。人可以大脑判断那些数学规则该咋用。计算机呢。所以要人要告诉计算机应该按照什么顺序(秩序(体育用语-秩序册)、程序)-过程来操作。这就是面向过程的由来吧。
为了解决大型复杂数学问题的求解编程,采用了模块化的思想-模式。就像Basic语言的Sub格式,Fortran语言的program格式,C语言的Function()格式。对了,C语言还专门强调性的填加了一个大括号来标识模块之间的区分。
Main(){
}
现在来处理5+3*[2/(6-2)+(5-3*2)]或5+3*2/6-2+5-3*2。那就是按部就班的遵循数学计算规则编程吧。也就是计算过程。
对于复杂问题,还是应用了这个思路—初期的计算机应用追主要的还是数学工作者。因此,早期的计算机语言中使用了大量的数学名词概念和思想。
随着计算机应用领域的快速扩充,以数学思想为基础的概念与词汇显然不能适应和满足。非数学领域的人员加入到计算机应用领域,带来了新的需求和词汇。就是新概念、新思想、新方法、新称谓、新名词-面向对象、类、封装、继承等。
面向过程的做饭过程是:择菜、洗菜、切菜、放锅、倒油、点火、炒菜、搅拌、拿盘、出锅、上桌、……等环节。
面向对象的做饭过程是:菜、手、盆子、水、油瓶、灶具、炒勺、锅、盘子、桌子、……等对象。每一个对象都为做饭的过程服务-调用这些对象来提供服务。服务的方法就是函数(成员函数)-连续的操作-行为描述—就是程序段。对象就有了特征属性,一组数值来表达-数据成员。
这算说清了吗。
计算机程序与软件,底层还是要用面向过程的模块。上层抽象复杂的表达就用面向对象-组件。这样的好处多多,到处都写着它的好处(并行工作、重用、升级迭代、维护保养、……,数据保护、保密、……)。不一一再说了。
敬请读者斧正。