后来大家总结出了一套流程结构化的定律:任何程序都可以用顺序、选择、循环三种基本控制结构来表示 。
- 顺序:代码是至上往下顺序执行的 。
- 选择:if-else/switch选择执行 。
- 循环:for/while控制循环执行 。
b. 面向对象编程
结构化编程思维,比较靠近机器运行的思维,当程序越来越复杂的时候,大家发现简单靠结构化思维编程,很难构建起一个庞大的应用 。而在编码过程中,大家不知不觉的把一些数据和逻辑封装了起来,形成一个个可复用的组件 。慢慢大家总结出了一套符合人类理解客观世界的编程范式:利用事物的信息建模概念,如实体、关系、属性等,同时运用封装、继承、多态等机制来构造模拟现实系统的方法 。
- 封装:核心是对实体建模,把客观世界的属性和行为,封装成类的数据和方法,同时通过控制访问权限(private/protect/public),对外隐藏细节 。
- 继承:在封装的基础上,可以定义子类,从而使子类获得父类的属性和行为,这也符合人类从抽象到具象的认知思维 。
- 多态:继承使得子类获得父类的行为,总有儿子不听爸爸话的时候,当子类重写了父类行为时,多态使得父类引用执行方法时,实际执行的是子类的行为 。
因此,面向对象编程的本质,是规范了数据和行为的封装,同时限制了程序控制权的间接转移 。
c. 函数式编程
函数式思维,是一种数学思维,把一个问题分解为一系列函数 。函数式编程有多种定义,但是从根本上来看,它的核心是“纯函数”和“引用透明”:
- 纯函数:无副作用,同样的输入永远得到同样的输出 。
- 引用透明:任意函数直接用它的计算结果替代,而不影响任何调用它的程序 。
因此,函数式编程的本质,是规范了函数(一等公民/高阶函数/声明式/闭包等),同时限制了赋值行为 。
d. 编程范式总结
编程范式的本质,更多是告诉我们不能做什么,并且通过规范来约束我们的行为 。
- 结构化编程:限制对程序的控制权做直接转移,请按照控制结构规范来 。
- 面向对象编程:限制对程序控制权的间接转移,请按照封装、继承、多态的规范来 。
- 函数式编程:限制了赋值行为,请按照函数的规范来 。
- 为什么面向对象编程大受推崇?
- 为什么多数人在用面向对象语言写面向过程代码?
- 为什么函数式编程束之高阁,很难产业化大规模使用?
- 面向过程符合人类的直线直觉思维,不需要太多深度思考,可以快语直言 。
- 面向对象需要充分了解客观主体信息,才能从中思考和提炼出要素(实体)、关系(方法)和目标(职责),要求有系统性的抽象思维 。
- 函数式编程基于数学,缺少合适的抽象机制,纯函数式编程很难满足企业级应用要求的严格和复杂的业务需求 。
推荐阅读
- 车辆识别代码是什么意思
- 音序怎么写在四线格里 音序怎么写
- 2022年各高校专业代码四位数 2022年各高校专业代码
- 诗歌的特征包括 诗歌的特征包括哪四个
- 新课程教学反思中的问题有哪些
- 幼儿园教学经验总结 教师个人教学经验总结
- 罗牛山学校教学质量怎么样
- 月份天数口诀手指视频 月份天数口诀歌
- python编程入门自学 游戏代码大全可复制免费
- 教学过程的本质表现在哪些方面 教学过程的本质属性是