命令式和声明性编程语言之间的差异?

时间:2015-10-29 11:58:51

标签: declarative paradigms imperative-programming

我知道它们是什么:

  

在命令式编程语言中,您可以告诉编译器您希望逐步执行的操作,而在声明性语言中,您可以编写描述结果但不一定如何实现所需结果的代码。

但是,我不知道使用任何一种编程语言的优化。除此之外 - 是否涉及任何并发症?例如,运行以任一语言开发的程序需要空间/时间。

1 个答案:

答案 0 :(得分:2)

Comparison of programming paradigms WikiPedia页面的性能比较部分几乎涵盖了您通常所要求的内容。

  

纯粹在总指令路径长度方面,编码的程序   一个命令式的风格,根本就没有使用任何子程序   最低的数量。但是,这样的程序的二进制大小可能是   大于使用子程序编码的相同程序(如在函数中   和程序编程)并会引用更多“非本地”   物理指令可能会增加缓存未命中和增加   现代处理器中的指令获取开销。

     

广泛使用子程序的范例(包括功能,   程序性和面向对象的)并且也不使用重要的   因此,内联(通过编译器优化)将使用a   子程序链接上总资源的百分比更大   他们自己。面向对象的程序,不会故意改变   直接编程状态,而不是使用mutator方法(或“setter”)   封装这些状态变化,作为直接后果,   有更大的开销。这是由于消息传递的事实   本质上是一个子程序调用,但还有三个额外的   开销:动态内存分配,参数复制和动态   调度。从堆中获取内存并复制参数   消息传递可能涉及远远超过的重要资源   国家所需的那些改变了。访问者(或“获取者”)   仅返回私有成员变量的值也取决于   在类似的消息传递子例程,而不是使用更多   直接分配(或比较),增加总路径长度。

......它继续