编程范式

所谓的编程范式,指的是计算机的编程风格或典范模式。编程的目的是为了解决问题,而解决问题的思路和角度却有很多种,其中被普遍认可和采纳的解决问题的思路和角度就形成了一种编程规范。由于着眼点和思维方式的不同,不同的范式就各有侧重点和倾向,换言之就是不同的范式去引导人从不同的角度分析问题,解决问题,无论哪种编程范式都是依赖于编程语言,通过编程语言去实现。

面向过程编程

又叫过程化编程,也被称为命令式编程,是最原始,最传统,也是人们最熟悉的编程方式。他是“冯.诺依曼机”运行机制的抽象,它的编程思维方式源于计算机指令的顺序排列。
过程化编程的步骤是:(1)将一些列待解决问题的解决方案抽象为一系列概念化的步骤;(2)通过编程方式将这些步骤转化为程序算法,这样待解决的问题就转换为计算机认识的指令集。
面向过程编程的有效辅助方法就是程序流程图。面向过程编程特别适合解决线性的算法问题(或者说自上而下,套路很固定的问题)。特别适合开发运行较快且对系统资源利用率较高的程序,而且有许多成熟的经典范例,可以直接拿来解决问题。但是不适合拿来解决算法特别复杂的程序,因为无法给出算法详细的说明和运行先后顺序。

函数式编程

把运算过程尽量写成一系列嵌套的函数调用,函数式编程是面向数学的抽象,关心数据(代数结构)之间的映射关系。
函数式编程就是一种抽象程度很高的编程范式,纯粹的函数式编程语言编写的函数没有变量,因此,任意一个函数,只要输入是确定的,输出就是确定的,这种纯函数我们称之为没有副作用。而允许使用变量的程序设计语言,由于函数内部的变量状态不确定,同样的输入,可能得到不同的输出,因此,这种函数是有副作用的。
函数式编程充分利用高阶函数,闭包等可以到到各种问题的解,利用函数的递归和惰性计算特性,可以在需要表达式的值时进行计算,可摒弃一些冗余计算,每次计算返回一个新的值,不改变系统的变量,不修改状态。
函数式编程有如下好处:代码简洁,开发快速;接近自然语言,易于理解,可读性强;更方便代码管理;易于并发编程;代码的热升级。

面向对象编程OOP

面向对象的程序设计包含了三个基本概念:封装性、继承性、多态性。面向对象的程序设计通过类,方法,对象和消息传递来支持面向对象的程序设计范式。
1)对象
python中一切皆对象,面向对象的程序设计是将待解决的问题抽象成为面向对象中的对象,利用封装使每个对象都拥有个体的身份。程序便是成堆的对象,彼此通过消息传递,请求其他对象进行工作。
2)类
每个对象都是类的一个实体。类是相似对象的集合,类中的对象可以接收相同的消息,也就是说类包含和描述了“具有共同属性(数据属性)和共同行为(函数属性)”的一组对象。比如:香蕉,苹果,梨都属于水果这个类。
3)封装
也被称为信息隐藏,就是把数据和行为结合在一个包中,并对对象的使用者隐藏实现过程,使对象实现了“黑盒子”特性,这是对象再利用和实现可靠性的关键步骤。在python中,_A表示类内部定义的属性,不影响调用(但是这个标识告诉你该属性不应该在外部被调用);__A在生成类的属性字典时,Python会自动重命名为_类名__A,此时外部也能访问,如果直接访问__A是不行的,在内部使用完全没有问题,但是可以在类内部封装一个接口函数可供外部调用。
4)继承
继承的思想是允许在已经存在的类上构建新的类,一个子类能够继承父类的所有数据属性和函数属性。
继承的主要作用:通过继承实现代码重用,通过接口继承实现代码被重用,实现一种编程规范。
5)多态
不同的对象可以调用相同的方法。对象通过他们共同的属性和动作来操作及访问,而不需考虑他们具体的类;反应在运行时状态(继承的一种体现机制);

事件驱动编程

事件驱动编程主要用于图形用户界面的程序设计中,程序中的许多部分完全在不可预料的情况下被执行,往往这些程序的执行是由用户与正在执行的程序的互动激发所致。
1)事件
就是通知某个特定的事情已经发生(事件 就有随机性),静静的等待某件事情的发生。
2)轮询
轮询的行为是不断的观察和判断,是一种无休止的行为方式,可以理解为卸了一个死循环,在这个死循环中做一系列的判断和响应。
3)事件处理器
是对事件响应时所执行的一段代码,能够对用户的行为作出反应。

面向切面编程AOP

AOP主要实现的目的是针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合性的隔离效果。AOP的编程,好像就是把我们在某个方面的功能提出来与一批对象进行隔离,这样与一批对象之间降低了耦合性,可以就某个功能进行编程。

<后期有更多理解再添加更新–>

你可能感兴趣的:(编程范式)