fbpx
维基百科

宣告式編程

宣告式編程(英語:Declarative programming)或译为声明式编程,是對與指令式編程不同的編程範型的一種合稱。它们建造计算机程序的结构和元素,表达计算的逻辑而不用描述它的控制流程[1]

概述 编辑

常見的宣告式語言包括:資料庫查詢語言SQL的查询子集和XQuery英语XQuery正则表达式配置管理系统如Puppet管理配置语言。歸入這種範型的很多語言,描述问题领域英语Domain knowledge内目標的性質,讓電腦明白目標,而非流程,从而尝试极小化有关的副作用[2]。而指令式编程则需要用语言原语英语Language primitive来明确的指出每一步该怎么做[3]

可归入声明式编程范型的领域专属语言(DSL)还包括:yacc语法解析器,编译说明语言Make等。DSL不需要是图灵完全的,往往容易以一种纯声明式的方式来表达。很多文本标记语言例如HTMLMXMLXAMLXSLT往往是声明式的。

定义 编辑

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

  • 告诉计算机需要计算“什么”而不是“如何”去计算的高级程序。
  • 明确的对应数理逻辑的编程语言[4]
  • 任何没有副作用的编程语言,或者更确切一点,任何参照透明英语referential transparency的编程语言。

这些定义存在着一些重合。

子编程范型 编辑

声明式编程是一个笼统的概念,除了一些特定的领域专属语言之外,一些更加知名的编程范型也被归类为其子范型。

逻辑式编程 编辑

逻辑编程通常被看做是形式逻辑的理论,把计算看做推导,透過函數推理规则重写規則,來描述變數之間的關係。它的語言執行器(編譯器解释器)採用了一個固定的算法,以從這些關係產生結果。作为典型代表的Prolog语言,声明关系并且对关系进行提问;它和许多逻辑编程语言,都允许副作用的存在。

函数式编程 编辑

函数式编程,尝试最小化状态英语State (computer science)带来的副作用,因此可以被归类入宣告式编程,它現在因大幅简化了并行计算的编写难度而备受关注[5]。除了纯函数式编程语言如Haskell,多数函数式编程语言如SchemeClojureOCamlStandard ML等,允许副作用的存在。

约束式编程 编辑

约束式编程中,变量之间的关系是在约束中说明的,定义了问题的解的范围。这些约束然后被应用程序来求解,以使得每个变量获得一个值,并让最多的约束得到满足。约束式编程经常被用作函数式編程、逻辑编程甚至指令式编程的补充,用来解決人工智能中的約束滿足問題

參見 编辑

參考 编辑

  1. ^ Lloyd, J.W., Practical Advantages of Declarative Programming 
  2. ^ . FOLDOC. 17 May 2004 [26 January 2020]. (原始内容存档于2015-08-10). 
  3. ^ Sebesta, Robert. Concepts of programming languages. Boston: Pearson. 2016. ISBN 978-0-13-394302-3. OCLC 896687896. 
  4. ^ Chakravarty, Manuel M. T. On the Massively Parallel Execution of Declarative Programs (学位论文). Technische Universität Berlin. 14 February 1997 [26 February 2015]. (原始内容于2015-09-23). 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. 
  5. ^ Marlow, Simon. Parallel and Concurrent Programming in Haskell: Techniques for Multicore and Multithreaded Programming. O'Reilly Media. 18 June 2013. ISBN 978-1449335946. 

外部連結 编辑

  • Frans Coenen. . 1999.
  • Robert Harper英语Robert Harper (computer scientist).
    • What, If Anything, Is A Declarative Language? (页面存档备份,存于互联网档案馆). 2013.
    • There Is Such A Thing As A Declarative Language, and It’s The World’s Best DSL (页面存档备份,存于互联网档案馆). 2013.
  • Olof Torgersson. . 1996.

宣告式編程, 英語, declarative, programming, 或译为声明式编程, 是對與指令式編程不同的編程範型的一種合稱, 它们建造计算机程序的结构和元素, 表达计算的逻辑而不用描述它的控制流程, 目录, 概述, 定义, 子编程范型, 逻辑式编程, 函数式编程, 约束式编程, 參見, 參考, 外部連結概述, 编辑常見的宣告式語言包括, 資料庫查詢語言如sql的查询子集和xquery, 英语, xquery, 正则表达式, 配置管理系统如puppet管理配置语言, 歸入這種範型的很多語言, 描述问题领域. 宣告式編程 英語 Declarative programming 或译为声明式编程 是對與指令式編程不同的編程範型的一種合稱 它们建造计算机程序的结构和元素 表达计算的逻辑而不用描述它的控制流程 1 目录 1 概述 2 定义 3 子编程范型 3 1 逻辑式编程 3 2 函数式编程 3 3 约束式编程 4 參見 5 參考 6 外部連結概述 编辑常見的宣告式語言包括 資料庫查詢語言如SQL的查询子集和XQuery 英语 XQuery 正则表达式 配置管理系统如Puppet管理配置语言 歸入這種範型的很多語言 描述问题领域 英语 Domain knowledge 内目標的性質 讓電腦明白目標 而非流程 从而尝试极小化有关的副作用 2 而指令式编程则需要用语言原语 英语 Language primitive 来明确的指出每一步该怎么做 3 可归入声明式编程范型的领域专属语言 DSL 还包括 yacc语法解析器 编译说明语言Make等 DSL不需要是图灵完全的 往往容易以一种纯声明式的方式来表达 很多文本标记语言例如HTML MXML XAML和XSLT往往是声明式的 定义 编辑声明式编程 通常被定义为除指令式以外的任何编程范型 同时存在一些其他的定义 简单的将宣告式编程和命令式编程做对比 例如 告诉计算机需要计算 什么 而不是 如何 去计算的高级程序 明确的对应数理逻辑的编程语言 4 任何没有副作用的编程语言 或者更确切一点 任何参照透明 英语 referential transparency 的编程语言 这些定义存在着一些重合 子编程范型 编辑声明式编程是一个笼统的概念 除了一些特定的领域专属语言之外 一些更加知名的编程范型也被归类为其子范型 逻辑式编程 编辑 逻辑编程通常被看做是形式逻辑的理论 把计算看做推导 透過函數 推理规则或重写規則 來描述變數之間的關係 它的語言執行器 編譯器或解释器 採用了一個固定的算法 以從這些關係產生結果 作为典型代表的Prolog语言 声明关系并且对关系进行提问 它和许多逻辑编程语言 都允许副作用的存在 函数式编程 编辑 函数式编程 尝试最小化状态 英语 State computer science 带来的副作用 因此可以被归类入宣告式编程 它現在因大幅简化了并行计算的编写难度而备受关注 5 除了纯函数式编程语言如Haskell 多数函数式编程语言如Scheme Clojure OCaml Standard ML等 允许副作用的存在 约束式编程 编辑 在约束式编程中 变量之间的关系是在约束中说明的 定义了问题的解的范围 这些约束然后被应用程序来求解 以使得每个变量获得一个值 并让最多的约束得到满足 约束式编程经常被用作函数式編程 逻辑编程甚至指令式编程的补充 用来解決人工智能中的約束滿足問題 參見 编辑 對立的 指令式編程 函數式編程和邏輯編程參考 编辑 Lloyd J W Practical Advantages of Declarative Programming declarative language FOLDOC 17 May 2004 26 January 2020 原始内容存档于2015 08 10 Sebesta Robert Concepts of programming languages Boston Pearson 2016 ISBN 978 0 13 394302 3 OCLC 896687896 Chakravarty Manuel M T On the Massively Parallel Execution of Declarative Programs 学位论文 Technische Universitat Berlin 14 February 1997 26 February 2015 原始内容存档于2015 09 23 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 Marlow Simon Parallel and Concurrent Programming in Haskell Techniques for Multicore and Multithreaded Programming O Reilly Media 18 June 2013 ISBN 978 1449335946 外部連結 编辑Frans Coenen Characteristics of declarative programming languages 1999 Robert Harper 英语 Robert Harper computer scientist What If Anything Is A Declarative Language 页面存档备份 存于互联网档案馆 2013 There Is Such A Thing As A Declarative Language and It s The World s Best DSL 页面存档备份 存于互联网档案馆 2013 Olof Torgersson A Note on Declarative Programming Paradigms and the Future of Definitional Programming 1996 取自 https zh wikipedia org w index php title 宣告式編程 amp oldid 78599044, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。