📜  编程范式介绍

📅  最后修改于: 2021-09-10 02:39:11             🧑  作者: Mango

范式也可以称为解决某些问题或完成某些任务的方法。编程范式是一种使用某种编程语言解决问题的方法,或者我们也可以说它是一种使用我们可用的工具和技术按照某种方法解决问题的方法。有很多已知的编程语言,但所有这些语言在实现时都需要遵循一些策略,并且这种方法/策略是范式。除了各种编程语言之外,还有许多范例可以满足每个需求。下面讨论它们:

1. 命令式编程范式:
它是最古老的编程范式之一。它与机器架构密切相关。它基于冯诺依曼架构。它的工作原理是通过赋值语句改变程序状态。它通过改变状态来逐步执行任务。主要关注的是如何实现目标。范式由几个语句组成,并在执行后存储所有结果。

优势:

  1. 实施起来非常简单
  2. 它包含循环、变量等。

坏处:

  1. 复杂的问题无法解决
  2. 效率低下,生产力低下
  3. 并行编程是不可能的
Examples of Imperative programming paradigm:

C : developed by Dennis Ritchie and Ken Thompson
Fortan : developed by John Backus for IBM
Basic : developed by John G Kemeny and Thomas E Kurtz 
C
// average of five number in C
 
int marks[5] = { 12, 32, 45, 13, 19 } int sum = 0;
float average = 0.0;
for (int i = 0; i < 5; i++) {
    sum = sum + marks[i];
}
average = sum / 5;


C++
#include 
using namespace std;
int main()
{
    int i, fact = 1, num;
    cout << "Enter any Number: ";
    cin >> number;
    for (i = 1; i <= num; i++) {
        fact = fact * i;
    }
    cout << "Factorial of " << num << " is: " << fact << endl;
    return 0;
}


Java
import java.io.*;
   
class GFG {
    public static void main(String[] args)
    {
        System.out.println("GfG!");
        Signup s1 = new Signup();
        s1.create(22, "riya", "riya2@gmail.com", 'F', 89002);
    }
}
   
class Signup {
    int userid;
    String name;
    String emailid;
    char sex;
    long mob;
   
    public void create(int userid, String name, 
                        String emailid, char sex, long mob)
    {
        System.out.println("Welcome to 
                 GeeksforGeeks\nLets create your account\n");
        this.userid = 132;
        this.name = "Radha";
        this.emailid = "radha.89@gmail.com";
        this.sex = 'F';
        this.mob = 900558981;
        System.out.println("your account has been created");
    }
}


命令式编程分为三大类:过程式、OOP 和并行处理。这些范式如下:

  • 过程式编程范式——
    这种范式强调在底层机器模型方面的程序。程序性方法和命令性方法之间没有区别。它具有代码重用的能力,因为它的可重用性,在当时使用它是一个福音。
Examples of Procedural programming paradigm:

C : developed by Dennis Ritchie and Ken Thompson
C++ : developed by Bjarne Stroustrup
Java : developed by James Gosling at Sun Microsystems
ColdFusion : developed by J J Allaire
Pascal : developed by Niklaus Wirth 

C++

#include 
using namespace std;
int main()
{
    int i, fact = 1, num;
    cout << "Enter any Number: ";
    cin >> number;
    for (i = 1; i <= num; i++) {
        fact = fact * i;
    }
    cout << "Factorial of " << num << " is: " << fact << endl;
    return 0;
}

然后是OOP,

  • 面向对象编程——
    该程序被编写为用于通信的类和对象的集合。最小和基本的实体是对象,所有类型的计算都只对对象进行。更强调数据而不是程序。它可以处理当今场景中几乎所有类型的现实生活问题。

好处:

  • 数据安全
  • 遗产
  • 代码可重用性
  • 灵活和抽象也存在
Examples of Object Oriented programming paradigm:

Simula : first OOP language
Java : developed by James Gosling at Sun Microsystems
C++ : developed by Bjarne Stroustrup
Objective-C : designed by Brad Cox
Visual Basic .NET : developed by Microsoft
Python : developed by Guido van Rossum
Ruby : developed by Yukihiro Matsumoto 
Smalltalk : developed by Alan Kay, Dan Ingalls, Adele Goldberg 

Java

import java.io.*;
   
class GFG {
    public static void main(String[] args)
    {
        System.out.println("GfG!");
        Signup s1 = new Signup();
        s1.create(22, "riya", "riya2@gmail.com", 'F', 89002);
    }
}
   
class Signup {
    int userid;
    String name;
    String emailid;
    char sex;
    long mob;
   
    public void create(int userid, String name, 
                        String emailid, char sex, long mob)
    {
        System.out.println("Welcome to 
                 GeeksforGeeks\nLets create your account\n");
        this.userid = 132;
        this.name = "Radha";
        this.emailid = "radha.89@gmail.com";
        this.sex = 'F';
        this.mob = 900558981;
        System.out.println("your account has been created");
    }
}
  • 并行处理方法——
    并行处理是通过将程序指令划分到多个处理器来处理程序指令。并行处理系统拥有许多处理器,目的是通过划分它们以在更短的时间内运行程序。这种方法似乎是分而治之。例子是 NESL(最古老的之一)和 C/C++ 也支持,因为一些库函数。

2.声明式编程范式:
它分为逻辑,功能,数据库。在计算机科学中,声明式编程是一种构建程序的风格,它表达计算逻辑而不讨论其控制流。它通常将程序视为某种逻辑的理论。它可以简化编写并行程序。重点是需要做什么,而不是应该如何做,基本上强调代码代码实际在做什么。它只是声明了我们想要的结果,而不是它是如何产生的。这是命令式(如何做)和声明式(做什么)编程范式之间的唯一区别。深入我们将看到逻辑、功能和数据库。

  • 逻辑编程范式——
    它可以被称为计算的抽象模型。它将解决逻辑问题,如拼图、系列等。在逻辑编程中,我们有一个我们之前知道的知识库,连同提供给机器的问题和知识库,它产生结果。在普通的编程语言中,这种知识库的概念是不可用的,但是在使用人工智能、机器学习的概念时,我们有一些模型,例如使用相同机制的感知模型。
    在逻辑编程中,主要强调知识库和问题。程序的执行很像数学陈述的证明,例如Prolog
sum of two number in prolog:

  predicates
  sumoftwonumber(integer, integer)
clauses

  sum(0, 0).
   sum(n, r):-
        n1=n-1,
        sum(n1, r1),
        r=r1+n 
  • 函数式编程范式——
    函数式编程范式源于数学,并且与语言无关。这种范式的关键原理是执行一系列数学函数。抽象的中心模型是用于某些特定计算的函数,而不是数据结构。数据与函数松散耦合。函数隐藏了它们的实现。函数可以用它们的值替换而不改变程序的含义。一些语言如 perl、javascript 大多使用这种范式。
Examples of Functional programming paradigm:

JavaScript : developed by Brendan Eich
Haskwell : developed by Lennart Augustsson, Dave Barton
Scala : developed by Martin Odersky
Erlang : developed by Joe Armstrong, Robert Virding
Lisp : developed by John Mccarthy
ML : developed by Robin Milner
Clojure : developed by Rich Hickey 

下一种方法是数据库。

  • 数据库/数据驱动的编程方法——
    这种编程方法基于数据及其运动。程序语句由数据定义,而不是对一系列步骤进行硬编码。数据库程序是商业信息系统的核心,提供文件创建、数据输入、更新、查询和报告功能。有几种编程语言主要是为数据库应用程序开发的。例如 SQL。它应用于结构化数据流,用于过滤、转换、聚合(如计算统计)或调用其他程序。所以它有自己广泛的应用。
CREATE DATABASE databaseAddress;
CREATE TABLE Addr (
    PersonID int,
    LastName varchar(200),
    FirstName varchar(200),
    Address varchar(200),
    City varchar(200),
    State varchar(200)
);