我经常遇到面向对象和函数式编程之间的比较,以及命令式和函数式编程之间的比较。 “面向对象”和“命令式”是两个截然不同的术语,在我的理解中,它们彼此无关。不过,它们都与功能编程相比。面向对象和命令式编程之间的关系是什么促使这种比较?
答案 0 :(得分:4)
原因很简单,主流OO编程(即Java,C#)是命令式编程的子类别。
这是一张粗略的图表:
progamming
/ \
declarative imperative
/ \ / \
functional \ OO procedural
logic
(prolog)
在声明性编程中,您说出您想要计算的内容。假设我们想要计算链表的长度:
在命令式编程中,您基本上按照特定顺序操作内存:
int length = 0; // put starting value in memory
while (!list.isEmpty()) {
length++; // update memory
list = list.next(); // update list pointer for next iteration
}
// result is in memory location associated with length
因此,正确的比较将是: