我和同事讨论过,他坚持认为cp是声明性的。对我来说,这似乎非常迫切。它是我们要求计算机执行的指令,而不是定义或声明。因为它是声明性的,而不是:
cp a.zip b.zip
你可能有:
b.zip = a.zip
有没有人对此有任何意见?
答案 0 :(得分:1)
似乎你在两者没有什么区别的水平上使用这些术语。例如,如果我为程序创建用户界面并且有一些文件说
Logo:
Title: Cool UI
Color: Green
这是我的ui的声明性表示。它是表示我希望计算机执行操作的数据。如果我是通过使用像
这样的代码来改造我的uil = 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在这个规范级别,命令式和声明性之间基本没有区别
答案 1 :(得分:0)
cp(1)语法本身是声明性的,因为您定义了要完成的操作而未指定需要完成的方式。顺便说一下,这意味着您的两个示例都是声明性的。
您可能还想看看wider discussion。