跳转到内容

宣告式編程:修订间差异

维基百科,自由的百科全书
删除的内容 添加的内容
Tang891228留言 | 贡献
Hojohan留言 | 贡献
首段:​ 修正筆誤
第11行: 第11行:
声明式编程通常被看做是[[形式逻辑]]的理论,把计算看做推导。声明式编程因大幅简化了[[并行计算]]的编写难度,自2009起备受关注。
声明式编程通常被看做是[[形式逻辑]]的理论,把计算看做推导。声明式编程因大幅简化了[[并行计算]]的编写难度,自2009起备受关注。


声明言包括数据库询语言([[SQL]],[[XQuery]]),[[正则表达式]],逻辑编程,函数式编程和组态管理系统。
宣告套件包括資料庫詢語言([[SQL]],[[XQuery]]),[[正则表达式]],逻辑编程,函数式编程和组态管理系统。


宣告式編程透過[[函數 (計算機科學)|函數]]、[[推論規則]]或[[项重写]](term-rewriting)規則,來描述變數之間的關係。它的語言執行器([[编译器|編譯器]]或[[解释器]])採用了一個固定的[[算法]],以從這些關係產生結果。
宣告式編程透過[[函數 (計算機科學)|函數]]、[[推論規則]]或[[项重写]](term-rewriting)規則,來描述變數之間的關係。它的語言執行器([[编译器|編譯器]]或[[解释器]])採用了一個固定的[[算法]],以從這些關係產生結果。

2018年7月14日 (六) 14:35的版本

宣告式編程(英語:Declarative programming)是一種编程范式,与指令式編程相對立。它描述目標的性質,讓電腦明白目標,而非流程。声明式编程不用告诉电脑问题领域,从而避免随之而来的副作用。而指令式编程则需要用算法来明确的指出每一步该怎么做。

声明式编程通常被看做是形式逻辑的理论,把计算看做推导。声明式编程因大幅简化了并行计算的编写难度,自2009起备受关注。

宣告式語言套件包括資料庫查詢語言(SQLXQuery),正则表达式,逻辑编程,函数式编程和组态管理系统。

宣告式編程透過函數推論規則项重写(term-rewriting)規則,來描述變數之間的關係。它的語言執行器(編譯器解释器)採用了一個固定的算法,以從這些關係產生結果。

宣告式編程語言通常用作解決人工智能約束滿足問題

定义

声明式编程通常被定义为除命令式以外的编程范式。同时存在一些其他的定义,这些定义不是简单的将宣告式编程和命令式编程做对比,例如:

  • 声明式编程是告诉计算机需要计算“什么”而不是“如何”去计算
  • 任何没有副作用的编程语言,或者更确切一点,任何引用透明的编程语言
  • 任何有严格计算逻辑的编程语言[1]

这些定义有一些是重合的。

子编程范式

声明式编程是一个大的概念,其下包含一些有名的子编程范式。

约束式编程

约束式编程中,变量之间的关系是在约束中说明的,定义了问题的解的范围。这些约束然后被应用程序来求解,以使得每个变量获得一个值,并让最多的约束得到满足。

约束式编程经常被用作函数式編程、逻辑编程甚至命令式编程的补充。

领域专属语言

一些著名的声明式领域专属语言(DSLs)包括yacc语法分析器,编译说明语言MakePuppet管理配置语言,正则表达式SQL的一些子集(例如Select queries等)。DSLs有时非常有用,并且不需要是图灵完全的,这往往让其很容易以一种纯宣告式的方式来表达。

很多文本标记语言例如HTMLMXMLXAMLXSLT往往是声明式的。

函数式编程

函数式编程,特别是纯函数式编程,尝试最小化状态带来的副作用,因此被认为是宣告式的。大多数函数式编程语言,例如SchemeClojureHaskellOCamlStandard MLUnlambda,允许副作用的存在。

逻辑式编程

逻辑式编程语言如Prolog声明关系并且对关系进行提问。同函数式编程一样,许多逻辑编程语言允许副作用的存在。

參見

參考

  1. ^ Chakravarty, Manuel M. T. On the Massively Parallel Execution of Declarative Programs (学位论文). Technische Universität Berlin. 14 February 1997 [26 February 2015]. In this context, the criterion for calling a programming language declarative is the existence of a clear, mathematically established correspondence between the language and mathematical logic such that a declarative semantics for the language can be based on the model or the proof theory (or both) of the logic. 

外部連結

「宣告式」與「指令式」