【发布时间】:2011-07-01 10:31:07
【问题描述】:
我听说这些术语似乎可以互换使用,所以我有点不清楚。请举出例子。
【问题讨论】:
-
有用的见解:引擎可以在框架之外构建,也可以作为组件在框架中存在。框架 = 更抽象。引擎 = 专业。
-
我投票决定将此问题作为离题结束,因为它要求的是单词的定义,而不是帮助中心定义的编程。
标签: frameworks programming-languages
我听说这些术语似乎可以互换使用,所以我有点不清楚。请举出例子。
【问题讨论】:
标签: frameworks programming-languages
这些术语和其他术语看起来确实非常相似。它们是从概念的角度命名的,因此可以定义如下:
【讨论】:
框架类似于一组旨在能够协同工作的库。这意味着您无需四处实现通用算法和数据结构。您使用这些库(框架)以某种方式排列它们,以便它们提供的功能可以帮助您解决问题。
引擎是一个系统,你向它提供数据,它就能完成工作。
值得注意的是,库可以有“引擎”,并且可以使用框架构建引擎。
【讨论】:
一个框架主要是一堆组件接口,但它并没有实现那些组件。该框架确实实现了一些胶水代码来帮助将框架连接在一起,并且它为您可能需要的东西提供了一些实用程序实现。
游戏引擎实现了框架中定义的所有组件……或者至少游戏引擎开发人员认为实现其游戏引擎所需的所有组件。在某些情况下,引擎可能不需要物理或网络等,因此游戏引擎开发人员可能会选择将这些组件排除在引擎之外。
【讨论】:
AFAIK 框架是您构建应用程序的结构。它与库的不同之处在于它具有控制反转(即在库中,您从代码中调用子例程,因此您拥有控制权;但在框架中,您将子例程绑定到框架,它会在需要时调用您的子例程 -所以控制权在框架上)。
引擎是一个完全不同的概念——它是框架和库的混合体。像框架一样,它可以控制应用程序。然而,与框架不同的是,您无需将子例程绑定到引擎,而是使用其内置 API 来执行某些任务(类似于库)。
总而言之,框架是应用程序的结构,您可以通过将子例程绑定到它来扩展和定制它。 OTOH,引擎是主要应用程序本身,您可以使用其公共 API 简单地指示它执行您想要的操作。
因此,框架更加灵活。然而,引擎是一个工作应用程序——因此它可以更快地完成工作,因为程序员不需要浪费时间重新发明轮子。他可以简单地指示引擎做什么,引擎将处理内部操作。
【讨论】:
An engine "does" the job for you.
一个简单的乘法程序。
A framework "simplifies" the job for you.
您无需编写将字符串转换为 int 并呈现给引擎的代码,而是使用另一个代码为您进行转换。这个简化代码是一个框架。
【讨论】:
框架示例:
引擎示例:
对每种不同类型的调查给出了一个线索......
分析引擎,计算机的概念,由 Charles Babbage 设计
艺术绘画、音乐作曲和机械 CAD
【讨论】: