编程范式的理解 | 青训营笔记

82 阅读4分钟

编程范式 一些理解

所谓编程范式,指的是计算机编程的基本风格或典范模式,不同的编程语言也会提倡不同的“编程范型”。一些语言是专门为某个特定的范型设计的,如Smalltalk和Java支持面向对象编程。而Haskell和Scheme则支持函数式编程。现代编程语言的发展趋势是支持多种范型,如 C#、Java 8+、Kotlin、 Scala、ES6+ 等等。

高级语言通常都支持四种基本的语句:

(1)运算语句

一般来说都表现了在存储器内的数据进行运算的行为,然后将结果存入存储器中以便日后使用。

(2)循环语句

容许一些语句反复运行数次。循环可依据一个默认的数目来决定运行这些语句的次数;或反复运行它们,直至某些条件改变。

(3)条件分支

容许仅当某些条件成立时才运行某个区块。否则,这个区块中的语句会略去,然后按区块后的语句继续运行。

(4)无条件分支

容许运行顺序转移到程序的其他部分之中。包括跳跃、副程序和Procedure等。

循环、条件分支和无条件分支都是控制流程。

1、结构化编程

开始使用分支和循环语句代替 goto,对程序控制权的直接转移做出了限制和规范,即我们的编程的重心,放在了目标程序实现某些功能的执行过程上。在这个阶段,我们设计程序的思路,都是将程序的功能,以计算机的视角,抽象成输入输出等计算任务,来组合实现我们的目标功能。

结构化编程和面向对象编程的区别并不在于是否使用函数或者类,也就是说用到类或对象的可能是结构化编程,只用函数而没有类的也可能是面向对象编程。面向过程其实是最为实际的一种思考方式,可以说面向过程是一种基础的方法,它考虑的是实际地实现。一般的面向过程是从上往下步步求精,所以面向过程最重要的是模块化的思想方法。当程序规模不是很大时,面向过程的方法还会体现出一种优势。因为程序的流程很清楚,按着模块与函数的方法可以很好的组织。

 

2.面向对象编程

面向对象的程序设计包含了三个基本概念:封装性、继承性、多态性。面向对象的程序设计通过类,方法,对象和消息传递来支持面向对象的程序设计范式。

1)对象

面向对象编程认为一切皆对象,面向对象的程序设计是将待解决的问题抽象成为面向对象中的对象,利用封装使每个对象都拥有个体的身份。程序便是成堆的对象,彼此通过消息传递,请求其他对象进行工作。

2)类

每个对象都是类的一个实体。类是相似对象的集合,类中的对象可以接收相同的消息,也就是说类包含和描述了“具有共同属性和共同行为特征”的一组对象。比如:香蕉,苹果,梨都属于水果这个类。

3)封装

也被称为信息隐藏,就是把数据和行为结合在一个包中,并对对象的使用者隐藏实现过程,使对象实现了“黑盒子”特性,这是对象再利用和实现可靠性的关键步骤。

4)继承

继承的思想是允许在已经存在的类上构建新的类,一个子类能够继承父类的所有数据属性和函数属性。

继承的主要作用:通过继承实现代码重用,通过接口继承实现代码被重用,实现一种编程规范。

5)多态

不同的对象可以调用相同的方法。对象通过他们共同的属性和动作来操作及访问,而不需考虑他们具体的类;反应在运行时状态(继承的一种体现机制)。