声明式编程和命令式编程有什么区别

区别是:声明式编程是一种编程范式,与命令式编程相对立。它描述目标的性质,让计算机明白目标,而非流程。命令式编程是一种描述计算机所需作出的行为的编程典范。几乎所有计算机的硬件工作都是命令式的,大部分的编程语言都是命令式的。

声明式编程和命令式编程有什么区别-Worktile社区

声明式编程

声明式编程(英语:Declarative programming)是一种编程范式,与命令式编程相对立。它描述目标的性质,让计算机明白目标,而非流程。声明式编程不用告诉计算机问题领域,从而避免随之而来的副作用。而命令式编程则需要用算法来明确的指出每一步该怎么做。

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

声明式语言包包括数据库查询语言(SQL,XQuery),正则表达式,逻辑编程,函数式编程和组态管理系统。

声明式编程透过函数、推论规则或项重写(term-rewriting)规则,来描述变量之间的关系。它的语言运行器(编译器或解释器)采用了一个固定的算法,以从这些关系产生结果。

声明式编程语言通常用作解决人工智能和约束满足问题。

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

声明式编程是告诉计算机需要计算“什么”而不是“如何”去计算

任何没有副作用的编程语言,或者更确切一点,任何引用透明的编程语言

任何有严格计算逻辑的编程语言

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

命令式编程

命令式编程(英语:Imperative programming),是一种描述计算机所需作出的行为的编程典范。几乎所有计算机的硬件工作都是命令式的;几乎所有计算机的硬件都是设计来运行机器码,使用命令式的风格来写的。较高阶的命令式编程语言使用变量和更复杂的语句,但仍依从相同的典范。虽非计算机程序,但与命令式编程有相似的风格:每步都是指令,有形的世界控制情况。因为命令式编程的基础观念,不但概念上比较熟悉,而且较容易具体表现于硬件,所以大部分的编程语言都是命令式的。

命令式编程,顾名思义,是一种编程范式,它指定计算机为完成或完成目标而应采取的步骤。在这种情况下,函数在解决问题所需的每个步骤中都被隐式编码。简单来说,它包括计算机执行的命令。程序编写速度更快,应用程序也更容易优化。它允许将函数视为特殊情况构造,因为在命令式编程中,很少允许从方法返回整个方法调用。它是算法编程的一种形式。

程序编程是一种命令式编程,其中程序是从一个或多个过程(也称为子程序或函数)构建的。这些术语通常用作同义词,但程序的使用会对命令式程序的出现以及它们的构造方式产生巨大影响。重度过程编程是一种结构化编程形式,其中状态更改本地化为过程或仅限于显式参数和从过程返回。从 20 世纪 60 年代开始,结构化编程和模块化编程一般被推广为提高命令性程序的可维护性和整体质量的技术。面向对象编程背后的概念试图扩展这种方法。

延伸阅读:

什么是编程?

编程是编定程序的中文简称,就是让计算机代码解决某个问题,对某个计算体系规定一定的运算方式,使计算体系按照该计算方式运行,并最终得到相应结果的过程。

为了使计算机能够理解人的意图,人类就必须将需解决的问题的思路、方法和手段通过计算机能够理解的形式告诉计算机,使得计算机能够根据人的指令一步一步去工作,完成某种特定的任务。这种人和计算体系之间交流的过程就是编程。

编程:设计具备逻辑流动作用的一种“可控体系”【注:编程不一定是针对计算机程序而言的,针对具备逻辑计算力的体系,都可以算编程。】

在计算机系统中,一条机器指令规定了计算机系统的一个特定动作。一个系列的计算机在硬件设计制造时就用了若干指令规定了该系列计算机能够进行的基本操作,这些指令一起构成了该系列计算机的指令系统。在计算机应用的初期,程序员使用机器的指令系统来编写计算机应用程序,这种程序称为机器语言程序。使用机器语言编写的程序,由于每条指令都对应计算机一个特定的基本动作,所以程序占用内存少、执行效率高。缺点也很明显,如:编程工作量大,容易出错;依赖具体的计算机体系,因而程序的通用性、移植性都很差。

文章标题:声明式编程和命令式编程有什么区别,发布者:小编,转载请注明出处:https://worktile.com/kb/p/38496

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023年2月15日 下午11:08
下一篇 2023年2月16日 下午10:55

相关推荐

  • 需求管理工具有什么用

    需求管理工具是一种软件或服务,用于帮助企业或组织管理其项目的需求,包括收集、跟踪、分析、评估和审批需求。这种工具可以提高项目的效率、准确性和透明度,从而促进项目的成功。 一、为什么需要需求管理工具 在项目中,需求管理是非常重要的一环。如果没有一个有效的需求管理系统,项目可能会遇到以下问题: 综上所述…

    2023年3月2日
    9300
  • 动态作用域(Dynamic Scope)是为什么而设计出来的

    动态作用域在设计时考虑了简化代码实现和增加灵活性两个原因。动态作用域是一种变量作用域的工作方式。与静态作用域不同,动态作用域的变量绑定在程序运行时而不是在编译时确定。 动态作用域是一种变量作用域的工作方式。与静态作用域不同,动态作用域的变量绑定在程序运行时而不是在编译时确定。动态作用域在设计时考虑了…

    2023年2月28日
    7900
  • int (*pf)(1024)为什么是函数调用

    在C语言中,函数指针是一个非常重要的概念,它允许程序员将函数作为参数传递给其他函数,或者将函数作为返回值返回给其他函数。函数指针的定义通常采用以下形式: 其中,return_type是函数返回值的类型,pointer_name是函数指针的名称,argument_list是函数的参数列表。 在本文中,…

    2023年3月2日
    5000
  • 监控项目具体包括什么工作

    监控项目具体包括以下工作:1、开展基层局部监控;2、分析和预测的结果;3、开展高层全局监控;4、审批变更请求;5、处理其他问题。开展基层局部监控指监督风险、沟通和相关方参与过程,得到工作绩效信息,分析绩效偏差的程度和原因,并预测未来绩效。

    2023年1月17日
    24300
  • Java开发:面向对象的特点有哪些

    Java开发:面向对象的特点有:1、封装;2、继承;3、多态。在面向对象语言中,我们操作的是一个又一个对象。这些对象的数据与操作数据的方法会被封装到特定的类里面,我们在使用的时候不需要关心该对象的某些方法是如何实现的,只需要调用类提供的接口即可使用这些方法。 一、Java语言的面向对象特性 Java…

    2023年5月12日
    10600
  • 团队协同效应是什么

    团队协同效应是:1、团队成员间共同协作,各司其职,形成一个整体;2、通过成员之间相互沟通、相互了解,从而达到有效的沟通和决策;3、以同一目标为目标,协同努力的行为,在保证目标实现的同时让团队成员各自发挥其长处和潜力;4、协同效应不能只是靠一方来完成;5、团队的凝聚力和战斗力是项目成功的保障。

    2022年11月14日
    50301
  • h2数据库优缺点是什么

    h2数据库是一个纯Java编写的嵌入式关系型数据库。因为其体积小、可嵌入、功能完整、速度快等优点,越来越多的人开始采用它。使用h2数据库时,需要先引入相关的jar包,并且通过JDBC连接到数据库,然后执行增删改查等操作。 一、h2数据库优缺点 优点:h2数据库体积小、可嵌入、功能完整、速度快、操作简…

    2023年7月22日
    18400
  • 大型网络游戏的数据库是怎么设计的呢

    大型网络游戏的数据库是怎么设计的:1、数据库结构设计;2、数据库性能设计;3、数据库安全设计;4、数据库备份和恢复;5、数据库版本控制。在设计数据库时,需要考虑游戏的数据结构和关系,这可以帮助您定义数据库表格的结构、主键、外键以及其他必要的字段。 一、数据库结构设计 在设计数据库时,需要考虑游戏的数…

    2023年6月7日
    13900
  • 文档编辑有哪些工具

    文档编辑工具有:一、WPS Office;二、手机Word文档;三、word文档;四、永中Office;五、word;六、word办公软件;七、Word文档表格编辑;八、Office文档编辑;九、PPT办公Office云文档;十、word文件编辑器。WPS Office是非常实用的移动办公平台,可以…

    2023年4月27日
    9100
  • 什么是主动学习

    主动学习是机器学习中的一种策略,它允许模型在训练过程中选择自己认为最有价值的数据进行学习,而不是被动地接受所有提供的数据。通过这种方式,主动学习试图用更少的标注数据获得更高的性能,减少人工标注的成本和时间。 主动学习是机器学习中的一种策略,它允许模型在训练过程中选择自己认为最有价值的数据进行学习,而…

    2023年7月30日
    5300

发表回复

登录后才能评论
联系我们
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部