为了账号安全,请及时绑定邮箱和手机立即绑定

函数式,声明式和命令式编程

函数式,声明式和命令式编程

功能性,声明性和命令性编程的含义是什么?
查看完整描述

3 回答

?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

这些实际上并没有任何明确,客观的定义。这是我如何定义它们:


势在必行 -重点在于计算机应采取的步骤,而不是计算机将要执行的操作(例如C,C ++,Java)。


声明式 -重点在于计算机应该做什么而不是应该如何做(例如SQL)。


功能性 -声明性语言的子集,主要关注递归


查看完整回答
反对 回复 2019-10-23
?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

命令式声明式描述了两种相反的编程风格。命令式是传统的“循序渐进配方”方法,而声明式则更是“这就是我想要的,现在您要确定如何做”。

这两种方法在整个编程过程中都会发生-即使使用相同的语言和相同的程序。通常,声明式方法被认为是更可取的,因为它使程序员不必指定太多细节,同时也减少了错误发生的机会(如果您描述了所需的结果,并且经过良好测试的自动过程可以从此倒退为定义步骤,那么您可能希望事情比手动指定每个步骤更可靠)。

另一方面,命令式方法可以为您提供更多的低级控制-这是编程的“微管理器方法”。这样可以使程序员利用有关问题的知识来给出更有效的答案。因此,以声明性的方式编写程序的某些部分并不罕见,而对于速度至关重要的部分则更为必要。

就像您想象的那样,用于编写程序的语言会影响您的声明式能力-一种内置“智能”语言的语言,用于在给出结果描述的情况下确定要做什么,这将使声明性更强这种方法比程序员需要先在命令式代码中添加这种智能,然后才能够在顶部构建更具说明性的层的方法要多。因此,例如,像prolog这样的语言被认为是非常声明性的,因为它具有内置的搜索答案的过程。

到目前为止,您会注意到我还没有提到函数式编程。那是因为这是一个其含义与其他两个含义没有直接关系的术语。最简单的函数式编程意味着您可以使用函数。特别是,您使用支持功能作为“第一类值”的语言-这意味着您不仅可以编写函数,而且可以编写编写函数的函数(编写编写的函数,并将...传递给职能。简而言之-函数像字符串和数字一样灵活且通用。

因此,经常将功能性,命令性和声明性一起提到是很奇怪的。原因是将功能编程的想法“极端化”的结果。从最纯粹的意义上讲,一个函数是数学中的东西-一种“黑匣子”,需要一些输入并始终提供相同的输出。这种行为不需要存储更改的变量。因此,如果您设计一种旨在实现非常纯净,受数学影响的函数式编程思想的编程语言,您最终会在很大程度上拒绝可以改变的值(在某种特定的,有限的技术意义上)的思想。

如果这样做-如果限制了变量的更改方式-几乎无意中,您最终会迫使程序员编写更具声明性的程序,因为命令式编程的很大一部分都在描述变量的更改方式,并且您不能再去做!因此事实证明,函数式编程(尤其是使用函数式语言的编程)往往会提供更具说明性的代码。

总结一下,然后:

  • 命令式和声明式是两种相反的编程样式(相同的名称用于鼓励使用这些样式的编程语言)

  • 函数式编程是一种编程样式,其中函数变得非常重要,结果,更改值变得不那么重要。指定值更改的能力有限,这会强制采用更具声明性的样式。

因此“函数式编程”通常被称为“声明式”。


查看完整回答
反对 回复 2019-10-23
  • 3 回答
  • 0 关注
  • 860 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信