编程范式(一)---编程范式介绍

142 阅读3分钟

编程范式

编程范式(Programming paradigm),指的是程序的编写模式。使用了什么编程范式,通常意味着,主要使用的是什么样的代码结构。从设计的角度说,编程范式决定了在设计的时候,可以使用的元素有哪些。

现在主流的编程范式主要有三种:

  • 结构化编程(structured programming)

    是大部分程序员最熟悉的编程范式,它通过一些结构化的控制结构进行程序的构建。最熟悉的控制结构应该就是if/else这样的选择结构和do/while这样的循环结构了。

    结构化编程是最早普及的编程范式,现在最典型的结构化编程语言是C语言。C语言控制结构的影响极其深远,成为了很多程序设计语言的基础。

  • 面向对象编程(object-oriented programming)

    是现在最主流的编程范式,它的核心概念就是对象。用面向对象风格写出的程序,本质上就是一堆对象之间的交互。面向对象编程给我们提供了一种管理程序复杂性的方式,其中最重要的概念就是多态(polymorphism)。

    现在主流的程序设计语言几乎都提供面向对象编程能力,其中最典型的代表当属Java。

  • 函数式编程(functional programming)

    是近些年重新崛起的编程范式。顾名思义,它的核心概念是函数。但是,它的函数来自于数学里面的函数,所以,和我们常规理解的函数有一个极大的不同:不变性。也就是说,一个符号一旦创建就不再改变。

编程范式不仅仅是提供了一个个的概念,更重要的是,它对程序员的能力施加了约束。

  • 结构化编程,限制使用goto语句,它是对程序控制权的直接转移施加了约束。
  • 面向对象编程,限制使用函数指针,它是对程序控制权的间接转移施加了约束。
  • 函数式编程,限制使用赋值语句,它是对程序中的赋值施加了约束。

多范式编程

从道理上讲,编程范式与具体语言的关系不大,这就好比你的思考与用什么语言表达是无关的。但在实际情况中,每一种语言都有自己的主流编程范式。比如,C语言主要是结构化编程,而 Java主要是面向对象编程。不过也可以将不同编程范式中的优秀元素吸纳进来。比如Java8中引入Lamdba语法,可以更优雅地写出函数式编程的代码。

无论是在以结构化编程为主的语言中引入面向对象编程,还是在面向对象为主的语言中引入函数式编程,在一个程序中应用多种编程范式已经成为了一个越来越明显的趋势。

之所以多范式编程会越来越多,是因为关注点是做出好的设计,写出更容易维护的代码,所以,会尝试着把不同编程风格中优秀的元素放在一起。比如,采用面向对象来组织程序,而在每个类具体的接口设计上,采用函数式编程的风格,在具体的实现中使用结构化编程提供的控制结构

学习不同的编程范式,将不同编程范式中的优秀元素应用在我们日常的软件设计之中,已经由原来的可选项变成了现在的必选项

编程范式.png