有哪些流行的编程范式

编程范式(Programming Paradigm)是某种编程语言典型的编程风格或者说是编程方式。

命令式编程

命令式编程是最古老的范式,它是日常编程中广泛使用的范式。它主要关注的是要完成的步骤,即一步一步告诉计算机先做什么再做什么。它定义了一系列语句,操作必须按顺序进行。

比如:如果你想在一个数字集合中筛选大于 5 的数字,你需要这样告诉计算机:

  • 第一步,创建一个存储结果的集合变量 results;
  • 第二步,遍历这个数字集合 collection;
  • 第三步:一个一个地判断每个数字是不是大于 5,如果是就将这个数字添加到结果集合变量 results 中。

代码实现如下:

1
2
3
4
5
6
7
8
List<int> results = new List<int>();
foreach(var num in collection)
{
    if (num > 5)
    {
        results.Add(num);
    }
}

声明式编程

声明式编程侧重于忽略控制流的计算逻辑。它指定结果应该是什么,而不指定如何获得结果。声明性编程通常不包含 if-else、循环和其他控制流语句。命令式编程定义了获得结果的每个分钟步骤,而相反,声明性编程仅定义了计算逻辑。它的主要思想是告诉计算机应该做什么,但不指定具体要怎么做。

SQL 语句就是最明显的一种声明式编程的例子,例如:

1
SELECT * FROM collection WHERE num > 5

结构化编程

结构化编程是一种命令式编程,侧重于模块化编程。它广泛地使用 forwhile,子程序,块和子块。引入结构化编程作为对命令式编程方法的改进,以获得对程序的更多控制。

代码实现如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
List<int> results = new List<int>();
foreach(var num in collection)
{
    if (num > 5)
    {
        results.Add(num);
    }
}

foreach(var res in results)
{
    Console.WriteLine(res);
}

面向过程编程

面向过程编程源于结构化编程。它继承了结构化和命令式编程的所有属性。面向过程编程基于程序调用。

以下是面向过程编程的示例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
using System;
using System.Collections.Generic;
using System.Linq;

public class Program
{
  public static void Main()
  {
    foreach (var i in Fibonacci().Take(20))
    {
      Console.WriteLine(i);
    }
  }

  private static IEnumerable<int> Fibonacci()
  {
    int current = 1, next = 1;

    while (true) 
    {
      yield return current;
      next = current + (current = next);
    }
  }
}

面向对象编程

面向对象编程是使用最广泛的编程范式,它基于对象的概念。对象是真实世界的实体,我们周围的一切都是一个对象,每个对象都有两个重要的属性:属性(数据)和行为(函数)。

例如:

汽车是一个具有

属性:类型、颜色、型号等。

行为:加速、减速、转向等。

面向对象的编程也继承了命令式和程序式编程。

代码实现如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
using System;

public class Program
{
  public static void Main()
  {
    Student student=new Student{
      Name = "黄泰迪",
      Age = 18
    };

    Console.WriteLine(student.Name);
  }
}

public class Student{
  public string Name { get; set; }
  public int Age { get; set; }
}

函数式编程

函数式编程范式与上述所有范式是完全不同的编程方法。函数式编程使用函数调用的组合来驱动程序的流程。函数的结果成为另一个函数的输入。

代码实现如下:

1
merge([1,2],[3,4]).sort().search("2")