写点什么

编程范式( Programming paradigm )简介

用户头像
引花眠
关注
发布于: 2021 年 02 月 08 日

什么是编程范式( Programming paradigm )

paradigm 表示范式,其含义是做事的方式。那么编程范式就可以理解为如何编程,按照什么样的模式或风格编程。 或者说你使用什么样的世界观来看待问题,是一套方法论用于解决你遇到问题。


与具体编程语言之间的关系

它与具体的编程语言没有直接的联系,既然它是一种风格,那么在任何语言中都可以用这种风格来进行编程。 比如在 Java 是面向对象语言,但是你可以在其中模拟部分函数式编程的风格,用对象来模拟函数。


所谓的某某式编程语言,是它很容易支持用某种范式来编程,比如用 C 语言也可以使用面向对象范式来编程,但是在实际中会感觉很别扭,因为在语言层面是没有对这一范式的支持。


如果一个编程语言支持用一种范式来编程,比如说函数式,那么可以说这种编程语言是函数式语言。


如果一种编程语言只支持一种编程范式,那么它就是纯粹的某某式语言,比如 Haskell 就是纯粹的函数式语言。在现代的编程语言中可能一个语言就满足多个编程范式,比如 Java,它可以是面向对象也可以是面向过程。


编程范式的分类

从宏观上,编程语言可以大致分为两类,一类是命令使,一类是声明式。


命令式 严格规定命令的顺序并改变状态 就是我告诉机器你要怎么做,步骤都给你写好了,你就这么干 声明式 描述我要什么 我告诉机器我要什么,至于你怎么得到这个结果,不关心。常见的声明式语言有 SQL 、HTML、正则表达式语言等,函数式与逻辑式也是声明式的。


从这两方面的对比可以看出,其实声明式更靠近人脑的思维逻辑。


当然这两中编程范式只是在宏观上看,毕竟到了最底层,都是 CPU 执行一个个命令。 可以简单的分类:命令式之外的就是声明式的。


常见的编程范式

既然编程范式是按照某种模式来编程,那么从不同的角度看待问题,那么解决问题的思路也会不同。


过程式

它是命令式的一种,从结构化编程而来,是一种基础的编程范式,它将问题分解为一个一个过程,以从上到下的方式逐步细化,在每个过程中用逻辑指令组织完成特定的功能。


过程式编程语言有:C


面向对象

面向对象可以说是目前很流行的编程范式,它将数据和行为抽象为一个一个对象,对象之间进行通行,利用继承、多态等来增强可维护性、可扩展性和可重用性。


可以说面向对象编程非常符合人们看待问题的方式,所以很容易理解。


面向对象与过程式编程不同,在面向对象中每个对象之间是平等的,每个对象都可以互相发消息,但是在过程式中,只有上级才能发消息,下级只能被动的响应。


所以在面向对象的设计中,是一个一个对象聚合交互,最终解决问题,就好像从下到上。


面向对象语言: Java 、 Python 、 C++ 、C# 等


函数式

在函数式编程中,类似于数学中的函数,它将问题看成一系列表达式,通过一列的变换最终获得结果。所以函数编程中,其程序是由一系列函数经过组合执行构成的,在其中函数是绝对的核心(一等公民),类似于面向对象中的对象:


  1. 在任意的地方创建

  2. 作为入参

  3. 作为返回值

  4. 作为属性

  5. 。。。


想象数学中的函数 y=f(x) , 对于特定的 x,总会返回特定的 y 值,所以在函数式编程中,对于同一个输入肯定会有相同的输出。这样的好处就是可以将函数任意组合、任意复制而不用担心会有什么副作用。


在函数是编程中也没有全局状态,每个变量都只是在函数的作用域中生效。


函数式语言: JavaScript , Clojure , Scala, Haskell 等


泛型编程

泛型也是一种编程范式,它关注的是将算法与实际的数据类型分离。它是以算法为导向的,以算法为中心,逐渐涉及到的其他内容抽象,扩大算法的适用范围。所以泛型编程的核心是算法抽象。


在泛型编程中,可以泛化的内容不仅仅是数据类型,函数、运算等都可以泛化。


目前有很多语言都支持泛型编程,比如 C++ 、 Java 、Haskell 等。


在 Java 语言中泛型是通过类型擦出来实现的在实际的 JVM 中,并没有泛型对象的存在,只有普通的对象。而在 C++中,泛型是通过模板实现的,每个模板都会实例化不同的类型,可能会造成代码膨胀。


逻辑编程

算法 = 逻辑 + 控制 ,其中逻辑是算法的核心,控制主要用于改善算法的效率。在逻辑编程中程序员只需要表达逻辑之间的关系,而控制交给了编程语言的解释器或编译器执行。


在逻辑编程中没有明显的输入和输出之分,其模拟的是人类的思维逻辑,类似于解决证明题,在机器证明、专家系统、自然语言处理、博弈等人工智能领域如鱼得水,同时在非学术领域的知识管理、智能决策分析等方面也能大显身手。 逻辑编程的要点是将正规的逻辑风格带入计算机程序设计之中。逻辑编程建立了描述一个问题里的世界的逻辑模型。逻辑编程的目标是对它的模型建立新的陈述。通过陈述事实——因果关系。程序自动推导出相关的逻辑。


逻辑编程语言: Prolog


发布于: 2021 年 02 月 08 日阅读数: 15
用户头像

引花眠

关注

还未添加个人签名 2018.06.11 加入

还未添加个人简介

评论

发布
暂无评论
编程范式( Programming paradigm )简介