【问题标题】:What is the difference between imperative and object-oriented programming? [closed]命令式编程和面向对象编程有什么区别? [关闭]
【发布时间】:2016-11-26 09:28:26
【问题描述】:

当我查看众多网站时。有些人交替使用面向对象编程和命令式编程,而另一些人则说它们是不同的。

我想知道面向对象和命令式之间的区别以及这些范式有何不同。或者如果他们根本没有区别。

【问题讨论】:

  • 这个问题更适合programmers.stackexchange.com
  • @RobK 不,它真的不会。有关于这个主题的书籍和关于术语的圣战。除了论文之外,它在任何地方都无法回答。
  • @enderland “不太适合”然后呢?但我们同意它肯定不适合这里。
  • @RobK:对于问题迁移来说,这不是一个足够好的指标。

标签: oop imperative


【解决方案1】:

这是一个艰难的过程,因为所涉及的术语通常对不同的人有不同的含义。

粗略地说(尽管有些人会说“严格来说”)命令式与声明式相反。

严格的 OO 支持者可能会说 OO 是声明性的。请参阅 David West 的同名书籍和此博客中的“对象思维”风格:http://www.yegor256.com/

OO 因为它通常被实践,经常“转移”(同样,其他人会强烈反对)变成一种非常程序化和命令式的风格,在这种风格中,您开始告诉计算机要做什么,而不是描述和建模现实世界(在某种意义上)与您的对象。

Here's 一个可能有用的视频。它对比了过程式编程和 OO,为了我们的目的,这里的“过程”大致是“命令式”的同义词。)

我知道这不是一个很好的答案,但也许它很有用。

【讨论】:

  • 那么 OOP 在隐喻上就像是程序范式和命令式范式之间的中间人吗?
  • @attachPost,请编辑您的问题,或提出新问题,而不是在 cmets 中开始讨论。
  • 不完全确定你的意思@attachPost,但我想说OOP 可以被认为是命令式的或声明性的,这取决于你如何定义OOP。为了充分披露,我将直接转向“好的” OOP(正确理解的 OOP)从根本上说是声明性的观点。越是命令性或程序性,你就越错过了重点。理想情况下,这两种方法不应该有太多(如果有的话)混合。这种观点不会被很多人接受。但你至少应该注意两个“极端”。 :)
  • 啊,对不起@jaco0646。那么 cmets 有什么用呢? (这是一个真正的问题,以防它遇到刻薄的问题!)干杯。
  • @JohnPage 我知道这不是一个很好的答案,但也许它很有用我认为这是一个很好的答案。对于比较 OOP 和 FP 的人来说,这是常见的混淆来源
【解决方案2】:

从上到下,命令式语言有两种主要的子类型。

  • 过程语言(例如 BASIC、FORTRAN)- 代码和数据被视为完全分离,并具有简单的代码操作数据范式。

  • 面向对象 (OO) 语言 - 其中数据和代码(以方法的形式)被捆绑到对象中。在 OO 语言中,元数据(例如类信息)或多或少地强加了额外的结构。

【讨论】:

  • 不要将编程语言与编程范式混淆。大多数现代语言都支持多种范式。
猜你喜欢
  • 2020-05-23
  • 2011-06-29
  • 1970-01-01
  • 2012-01-02
  • 1970-01-01
  • 2010-09-06
  • 2022-10-15
  • 1970-01-01
相关资源
最近更新 更多