Answers:
命令式编程范式有几个子范式,例如过程式或面向对象的编程范式。
在命令式编程范例中,您将以各种抽象程度逐步描述算法。
支持过程范例的编程语言示例:
它通常是指表现出类型层次结构的语言,这些类型既继承方法又继承从基本类型到派生类型的状态,但还包括基于原型的JavaScript。
支持OO范例的编程语言示例:
声明性编程范式有几个子范式,例如功能或逻辑编程范式。
在声明式编程范例中,您描述一个结果或一个目标,并通过“ 黑匣子 ” 获得它。的相对势在必行。
支持声明性编程范例的编程语言示例:
函数式编程强调没有副作用且没有可变状态的函数的应用。上面的声明性系统展现了功能编程的某些方面。
支持声明性功能范例的编程语言示例:
声明式编程是您说出所需内容而不必说如何做的地方。使用过程编程,您必须指定确切的步骤才能获得结果。
例如,SQL比程序性更具声明性,因为查询未指定产生结果的步骤。
让我给你一个现实的例子:我需要一杯茶。
程序:
声明式:
使用过程语言,您可以定义整个过程并提供执行步骤。您只需要提供订单并定义将如何处理流程即可。
用声明性语言,您只需设置命令或命令,并让它在系统上完成该命令的方式即可。您只需要您的结果,而无需深入研究应如何做。
两种编程语言之间的主要区别是:在过程编程中,我们告诉计算机如何解决问题,而在声明性编程中,我们告诉计算机我们要解决什么问题。
为了解决烦人的评论,并可能在两者之间的差异之间提供一个示例。Ansible是程序性的,例如木偶或terraform是声明性的。例如,您创建一个ansible yaml文件来部署10个ec2实例,如下所示:
-ec2:count:10 image:ami-058c6e5b73b074cd2 instance_type:t2.micro
如果要两次运行该文件,最终将有20个t2.micro ec2实例。如果您使用诸如terraform之类的声明性语言编写等效代码并运行两次,则无论您运行多少次,都只会运行10个t2.micro实例。声明性语言指定结束状态。过程语言只是按照您所说的去做,而不考虑当前或过去的状态。
那么YAML是声明性编程语言吗?因为我们定义了我们想要的东西,而不是编写实际的逻辑。
我之所以这样问是因为,如果有人知道Ansible这是配置管理工具,它会使用YAML,但它仍然属于过程语言类别。
在过程方法中,您对指令进行编码以达到结果。在声明性方法中,您将需要解决的问题定义为解决问题的知识。看一下我在两种方法中实现的过程式或声明性方法示例。
如您在示例中所看到的,采用声明式方法,您无需指示HOW即可解决问题。