-1

我正在与一位同事讨论,他坚持认为 cp 是声明性的。对我来说,这似乎非常必要。这是我们要求计算机执行的指令,而不是定义或声明。为了它是声明性的,而不是:

cp a.zip b.zip

你可能有:

b.zip = a.zip

有人对此有任何意见吗?

4

2 回答 2

1

似乎您在两者几乎没有区别的水平上使用这些术语。例如,如果我正在为一个程序制作用户界面并且有一些文件说

Logo:
  Title: Cool UI
  Color: Green

这是我的 ui 的声明性表示。它是代表我希望计算机做什么的数据。如果我要使用类似的代码来制作我的 ui

l = Logo()
l.add(Title('Cool UI'))
l.add(Color('Green'))
ui.render(l)

那将是我的 ui 的必要表示。我告诉计算机每一步要做什么。当我们谈论 cp 命令时,值得思考“命令式”和“声明式”版本之间的区别是什么。一方面,你不能比告诉计算机更迫切

 cp a.zip b.zip

从某个角度来看,这就像说“嘿增加这个寄存器”或“嘿把这个内存地址上的东西移动到这个内存地址”,这在汇编中只是

mov r0, r1

话虽如此,如果您要在数据中描述您想要做什么,您会说类似

copy-paste: a.zip b.zip

其中,取出冒号并缩短名称,你会得到

cp a.zip b.zip

TL;DR 在这个级别的规范下,命令式和声明式基本没有区别

于 2017-07-31T05:38:31.523 回答
0

cp(1) 语法本身是声明性的,因为您在没有指定需要如何完成的情况下定义完成的任务。顺便说一句,这意味着您的两个示例都是声明性的。

您可能还想看看更广泛的讨论

于 2018-10-25T11:34:21.580 回答