我正在和一位同事讨论,他坚持认为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( 语法本身是声明性的,因为你定义了你想要完成的事情,而没有指定它需要如何完成。顺便说一下,这意味着你的两个例子都是声明性的。
您可能还想查看更广泛的讨论。