编程范式的类型

148 阅读3分钟

每天,我们都会接触到不同的编程语言,用于特定的目的。一个程序可以通过多种方式建立,以提供解决问题的方案。

但我们选择的路径与代码的时间和空间复杂性、开发时间效率,甚至与其他编码者如何轻松理解代码有很大关系。在深入探讨这个问题之前,让我们一起了解一下编程范式的含义。

什么是编程范式?

编程范式是指以语言所规定的有组织的方式编写代码的过程。每种语言都是作为解决问题的工具,并有自己独特的风格,使用编程范式。

一个程序就像一台机器。它有许多组件和零件,可以有效地工作。这在开始时似乎很好,但这种复杂性会成为你自己的敌人,同时转化为现实世界的问题,提供简单而优雅的解决方案。

计算机科学家提出了不同的方法,我们可以按照这些方法来为我们的问题陈述创建高效的代码。

现在,让我们看看现有的不同类型的编程范式。它们大体上被分为命令式范式和声明式范式,它们又被进一步细分,如下图所示。

Types of Programming Paradigms

编程范式的类型

在现代编程世界中,大多数语言都是多范式语言。一种编程语言可以使用不同范式的各个方面,从而使我们从所有范式中获得最大的优势。

例如,Python是程序性、面向对象和功能性编程范式的混合体。该语言通常使用命令式编码,但如果需要,也可以使用声明式。

现在让我们详细看看每种编程范式,了解它们是如何工作的。

命令式编程

当你去购物时,你通常在到达商场前写下你需要购买的东西的名称。类似地,这种范式由一串编程语句组成。

它们首先被执行,然后将结果存储在一个变量中。它更像是给计算机的逐行指令。

让我们用一个C++程序来理解命令式编程,这个程序给了我们一个数字的阶乘。

例子。

#include<iostream>
using namespace std;
int main(){
  int fact=1;
  fact*=1;
  fact*=2;
  fact*=3;
  fact*=4;
  fact*=5;
  fact*=6;
  fact*=7;
  fact*=8;
  cout<<"Factorial of 8 is : "<<fact;
  return 0;
}

输出。

在这个例子中,我们给出了一个逐行的任务,由计算机用适当的指令来执行。这种类型的范式要考虑到步骤的顺序,因为不同的安排会产生不同的结果。

命令式编程又被进一步细分为程序式编程、结构式编程和面向对象编程。

程序性编程

这种编程范式遵循命令式编程的程序性调用。这些调用指导系统执行所需的任务。

每个程序或所谓的函数可以有多个命令要执行。函数一旦被定义,可以根据需要多次调用以执行相同的操作。

程序性编程被认为是最适合开始学习编码的人。初学者可以从程序性编程开始,因为它简单、高效,需要的内存少,而且更容易跟踪控制流。

一些使用程序性编程范式的语言有。

  • C
  • C++
  • 爪哇
  • Python
  • 帕斯卡

在C++中的示例程序。

#include<iostream>
using namespace std;
  int main(){
    int fact=1;
    for(int i=1;i<=8;i++)
    fact=fact*i;
    cout<<"Factorial of 8 is : "<<fact;
    return 0;
}

输出。

结构化编程

这是一种命令式的编程范式,我们使用嵌套循环、条件语句和子程序来定义程序的控制流。

这种范式有一个自上而下的实现方式,促进了代码的可读性和重用性。在商业应用中,这有助于减少开发时间和提高代码质量。

结构化编程的缺点是,与其他范式相比,它的执行效率降低。结构化编程语言有 "过度结构化 "和丧失效率的风险。

一些使用结构化编程范式的语言是。

  • Algol 60
  • PL/I
  • 帕斯卡
  • Ada 83
  • Modula

面向对象的编程

这是最广泛使用和最流行的编程范式。类、抽象、封装、继承和多态性构成了面向对象编程(OOP)的主干。

在这个范式中,程序中的每个实体都被认为是一个对象。对象可以有与之相关的数据,称为属性,并可以使用方法进行操作。

OOP的特点描述
抽象性它有助于隐藏不必要的属性,同时显示所需的属性。
继承性它有助于建立层次关系,促进代码的可重复使用。
多态性它允许不同的对象以不同的方式对相同的输入做出反应。
封装(Encapsulation)它是将数据绑定到一个单元中。

描述面向对象编程的特点的表格

一些使用面向对象编程范式的语言是。

  • Python
  • 红宝石
  • 爪哇
  • C++
  • Smalltalk

我已经写了一篇关于Python中面向对象编程的单独文章。如果你有兴趣的话,可以看看。

声明式编程

声明式编程是一种表达计算逻辑而不讨论其控制流程的编程方法。程序员必须指定程序必须完成的任务,但不需要指定它必须如何实现。

换句话说,声明式编程不是在教育 "如何达到一个目标",而是集中在 "首先需要完成什么"。

主要的区别是,命令式命令告诉你如何做,而声明式命令告诉你做什么。声明式编程范式进一步分为逻辑编程和函数式编程。

逻辑编程

逻辑编程范式使用基于逻辑的语句来传达事实和规则。逻辑推断是由指令或逻辑语句来做计算的。原子语句是使用这些谓语语句建立的。

在显示相关数据的同时,逻辑语言经常依赖查询。逻辑编程的一些具体用途是自然语言处理、数据库管理、预测分析等。

一些使用逻辑编程范式的语言有。

  • Prolog
  • GHC
  • 波尔卡
  • Vulcan
  • 水星

例子。

让我们来看看这句话:"吉米是一只狗。所有的狗都是杂食动物。所以吉米是一个杂食动物"。

因此,在Prolog代码中。

dog(Jimmy)omnivore(X) :- dog(X)

第一行说明Jimmy是一只狗。 :-可以被理解为如果。所以通过从右到左的阅读,"如果某物是狗,那么它就是杂食动物"。

为了测试这个程序,我们可以问Jimmy是否是杂食动物。

?- omnivore(Jimmy)

功能性编程

函数式编程是建立在数学函数之上的。它使用这些数学函数作为程序组件来解决问题。这种编程方式在处理并发性和并行性时使用。

范例算法由两部分组成:逻辑和控制。逻辑包括事实和规则,而控制则包含这些规则的顺序。逻辑规定了需要解决的问题,而控制则规定了应该如何解决的问题。

使用函数式编程的好处是,这些程序可以在多线程和多核环境中有效运行。程序员只需要指定逻辑,系统会自动找到最佳解决方案。

使用函数式编程,你可以用较少的行数实现事情。使用函数式编程也很容易进行单元测试和调试。

函数式编程的缺点是,没有for循环和while循环。相反,我们有递归的方式来迭代我们的代码。

例子。使用函数式编程的Javascript代码,打印 "Hello World "10次。

Array(10).fill("Hello World")
.map((msg) => {
  console.log(msg);
  return msg;
}); 

输出。

一些使用函数式编程范式的语言有。

  • Haskell
  • JavaScript
  • Scala
  • 埃尔朗
  • Lisp

最后的思考

编程范式帮助我们降低了代码的复杂性。人们必须知道何时根据他们的问题陈述使用哪种范式。

如果你刚刚开始,你可以从过程性编程开始。之后再探索其他类型的范式。学习并将它们应用到你的问题陈述中,并检查复杂度是如何降低的。

我希望你觉得这篇文章有用。如果你有任何疑问,请在评论区告诉我。编码愉快!