定义
声明式编程通常被定义为除命令式以外的编程范式。同时存在一些其他的定义,这些定义不是简单的将声明式编程和命令式编程做对比,例如:
-
声明式编程是告诉计算机需要计算“什么”而不是“如何”去计算
-
任何没有副作用的编程语言,或者更确切一点,任何引用透明的编程语言
-
任何有严格计算逻辑的编程语言
这些定义有一些是重合的。
子编程范式
声明式编程是一个大的概念,其下包含一些有名的子编程范式。
约束式编程
在约束式编程中,变量之间的关系是在约束中说明的,定义了问题的解的范围。这些约束然后被应用程序来求解,以使得每个变量获得一个值,并让最多的约束得到满足。
约束式编程经常被用作函数式编程、逻辑编程甚至命令式编程的补充。
领域专属语言
一些著名的声明式领域专属语言(DSLs)包括yacc语法分析器,编译说明语言Make,Puppet管理配置语言,正则表达式和SQL的一些子集(例如Select queries等)。DSLs有时非常有用,并且不需要是图灵完全的,这往往让其很容易以一种纯声明式的方式来表达。
函数式编程
函数式编程,特别是纯函数式编程,尝试最小化状态带来的副作用,因此被认为是声明式的。大多数函数式编程语言,例如Scheme、Clojure、Haskell、OCaml、Standard ML和Unlambda,允许副作用的存在。
逻辑式编程
逻辑式编程语言如Prolog声明关系并且对关系进行提问。同函数式编程一样,许多逻辑编程语言允许副作用的存在。
参见
-
(对立的)命令式编程
https://wapbaike.baidu.com/item/声明式编程