Unix 的 'cp' 命令是声明性的还是命令式的?



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

cp a.zip b.zip

您可能有:

b.zip = a.zip

有人对此有什么意见吗?

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

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 在这个规范级别,命令式和声明式基本没有区别

cp(1( 语法本身是声明性的,因为你定义了你想要完成的事情,而没有指定它需要如何完成。顺便说一下,这意味着你的两个例子都是声明性的。

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

相关内容

  • 没有找到相关文章

最新更新