【C++】1-1.2 c++编程范式

1.什么是编程范式

编程范式:programming paradigm;
实现相同的功能可以采取不同的编写方式,形成不同的编程风格,即编程范式。
下面介绍结构化编程、面向对象编程、泛型编程、函数式编程;

2.结构化编程

结构化编程:structural programming;
可以把程序看成函数和数据;
在结构化编程中,所有函数都可以访问数据,即数据是暴露在所有的函数逻辑下。
由于数据是完全暴露的,这会导致一些副作用:
比如数据被函数错误的修改,导致另外的函数拿不到需要的数据。

3.面向对象编程

面向对象编程:object-oriented programming即OOP;
由于结构化编程会导致一些副作用,特别是在编写大型程序时候,尤其明显。
为解决这种副作用,引入了面向对象编程。

与结构化编程不同,面向对象编程的数据和函数是被封装到一个特定的环境中。
通常只有在该特定环境的函数才能直接访问数据;外部的函数想要访问数据,需要通过这个特定环境封装的接口,这样就能够使得数据在被保护的前提下被外部函数访问。

总体来说,面向对象编程使得开发和维护变得更加容易!

4.泛型编程

泛型编程:generic programming即GP;
由于在结构化编程以及面向对象编程中,数据类型与函数直接对应。
当数据类型改变了,对应处理数据的逻辑函数就发生改变,那么就需要重写函数。

所以引入了泛型编程,泛型编程主要针对数据类型改变,做了一些工作。在泛型编程中不需要关心数据的具体类型,当程序遇到具体的类型的时候会由编译器根据程序写的泛型代码来生成处理具体类型的函数。

在泛型编程中,数据类型变了,编译器会自动处理!

这使得程序变得足够通用,也避免了大量的重写过程!

5.函数式编程

函数编程:functional programming即FP;
C++引入了lambda表达式,即函数式编程。
函数接受数据,对数据处理,然后输出数据。在非函数式编程中,函数处理可能带来副作用;而函数式编程有着自己独立的作用域,不会对外部产生额外的影响。

关于副作用的说明:
即函数不仅返回值,还对外部产生了影响,比如修改了外部的变量,抛出异常等。

对于函数式编程,只要接收固定的输入,函数一定会产生相同的输出,同时它可以接受函数作为参数,可以输出一个函数作为输出结果!

Haskell 语言就是纯粹的函数式编程,没有面向对象的概念。

猜你喜欢

转载自blog.csdn.net/jn10010537/article/details/115034199