2017-07-31 86 views
0

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

cp a.zip b.zip 

你可能有:

b.zip = a.zip 

没有人对此有什么看法?

+1

无论是没有什么区别。这是一个命令(它可能内置在shell中),但'cp'不是一种编程语言。 –

+3

命令本身既不是。相反,如果* shell脚本语言*是声明式的或者是命令式的,那么您应该将其视为更广泛的问题。 –

回答

1

看来你似乎在两个人几乎没有区别的级别使用这些术语。举例来说,如果我正在为一个程序的用户界面,并有一些文件说

Logo: 
    Title: Cool UI 
    Color: Green 

这是我的UI的声明表示。这是表示我希望计算机执行的数据。如果我不是让我的用户界面,通过使用类似的代码

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

这将是我的用户界面的命令性表示。我正在告诉计算机每一步要做什么。当我们谈论cp命令时,它值得思考“命令式”和“声明式”版本之间的区别。在一方面,你不能得到更多的当务之急比告诉计算机

cp a.zip b.zip 

,从某个角度来说就像是说:“嘿,增加此注册”或“哎,在这个内存地址移到什么这个内存地址”,它在装配只是

mov r0, r1 

话虽这么说,如果你在数据来描述你想做的事,你会说什么像

copy-paste: a.zip b.zip 

WHI CH,取出结肠和缩短的名字,你会得到

cp a.zip b.zip 

TL; DR在这个层面规范的,基本上命令性和声明