是什么使软件成为引擎?[关闭]


39

描述符“引擎”到处都是:图形引擎,RegEx引擎,AI引擎等,但是究竟是什么使软件成为引擎呢?设计,输入/输出,目的,尺寸?


62
市场部。
奥德

2
@Oded:“引擎”一词是程序员自己常用的。尝试寻找替代方法,您会明白为什么。
2011年

2
引擎是使我不想重新发明轮子的原因
Flexo

@Flexo,所以-一个图书馆?
Vorac 2013年

Answers:


33

可以说,引擎将是“引擎盖下的”东西。最终用户看不到它,或者至少很少看到它。例如,图形引擎驱动所有渲染计算,但是将这些更改传递到要建模的实际环境。输入:数学。输出:漂亮的色彩。与更高级别的界面相比,引擎可能还具有截然不同的工作变量。例如,在前面的示例中,它使用原始数值数据来操纵图形,而不必担心某物是阴影还是纹理,所有这些都抽象为要由该引擎执行的方程式和矩阵运算。将引擎视为给定系统的“内核”,而其余部分则更像是“外壳”。

用CS101打个比方,在现实世界中,引擎就像汽车引擎一样。它需要两个输入,空气和气体。然后将它们传递到一个腔室中,然后使用电能产生世界上最小的电弧焊。东西然后爆炸。这产生两个输出,排气和驱动活塞的压力波。其余的通过各种驱动轴等传递到车轮运动中。因此,引擎是引擎,汽车本身就是外壳。您可以将汽车发动机用于其他目的,例如驱动发电机发电或使用磨机碾磨谷物。如果引擎具有涂层,并且可以处理乙醇或生物柴油之类的东西,则可以使用不同的输入。

综上所述,引擎是一种通常无法孤立找到的软件。它充当该软件的原动力,但通常与外界之间的交互作用很小,甚至根本不起作用。几个引擎可以一起工作以产生互补的输出,也可以根据需要一起流水线在一起。引擎不会直接在美学意义上做与用户体验有关的事情,而是通过激励数据流和足够的响应以允许良好的应用程序性能来驱动这些体验。


9
那么驱动程序是控制引擎并使外壳崩溃的工具吗?
MikeJ-UK 2011年

我真的很喜欢您的回答并从中受益,但我认为问题更多是关于如何将这段代码/软件称为库,API或引擎?如果您也可以为此添加解释,那将是一个完美的答案
阿里

库和API的运行级别与引擎不同。最好使它专注于手边的术语,而不是陷入可能无休止的变体和名称之海。
世界工程师

6

引擎定义

名词/ ˈenjən / 
engines,复数

  1. 具有运动部件的机器,可将动力转化为运动

  2. 是特定过程的代理或工具的事物

#1 engine在软件上等同于语义,它导致某些事情发生。3D图形引擎,接受输入并将其转换为屏幕上的运动。正则表达式引擎接受输入并将其转换为不同的输出。

#2就像用这句话成为变革的动力。该语义也可以应用于软件。

软件engines不仅仅是被动地做事的框架和库。软件引擎根据输入自行运行,它们不是被动的,通常具有run loop自己的意愿来进行处理。


3

我认为,到目前为止,最接近的答案是说这是一种营销活动。

让我们尝试思考在此上下文中使用该词的来源。

当然,汽车或喷气式发动机并没有这样称呼,因为它们吸收了输入并产生了一些输出。如果是这样,那么不仅是功能,而且生活中的许多事情都将成为引擎。

在我看来,从技术上讲,从任何角度来讲,奶牛绝对不是引擎,这绝非偶然。

发动机使用各种类型的能量并将其转化为运动(即一种特殊类型的能量)。

我们为什么要在软件中使用它?我会说最现实的猜测是因为它听起来很酷。为什么我们称某些程序员为“建筑师”?同样的原因,如果你问我。

另一个原因可能是程序员通常喜欢使用隐喻来描述其软件的各个部分,因此它们可能更易于掌握(因为自然而然地不是)。

我的直觉是,滥用隐喻是一种不好的做法,以使您的应用程序域中充满隐喻。我认为与客户或不了解或不关心编程的人交谈时可能会很有用。除此之外,简单的流程图和图表对我来说是有用的。


1

引擎是任何需要一些输入,处理该输入并将某些内容作为输出传递的东西。根据此定义,CMS引擎是根据输入即时生成HTTP响应的部分。数据库引擎负责查询,绘制执行计划,然后执行执行计划并返回结果。

从技术上讲,即使是母牛也是一种引擎。它需要草,对其进行处理并输送牛奶。

不要忘记,引擎一词在机械工程中使用更多,并且功能完全相同。

引擎的另一个方面是系统的核心。例如,数据库引擎是任何RDMS的核心。但是,在获取输入和返回结果的同时,连接到该引擎的IDE不被视为引擎。


5
+1是“牛奶引擎”,我正在吃酸奶,当我读酸奶时几乎被cho住了。;)
FrustratedWithFormsDesigner

5
您的定义将使每个功能成为引擎。
back2dos

并非每个函数都是其输入的函数。
Michael Burge

我必须同意。您的解释听起来有些模糊和随意。
Yam Marcovic

1
程序员也是引擎。输入时要喝咖啡,输出时要产生代码。
SF。

1

恕我直言,引擎只是子系统,模块或库的代名词。IE-为特定目的而设计的一个或多个组件。


2
投票者:请详细说明。引擎(例如Quake引擎)是子系统,模块或库,显然不是错误的。
keppla 2011年

3
尽管引擎通常作为子系统实现,但该术语通常仅用于“引擎盖下”的子系统。它们不用作同义词。
2011年

这个问题的前提是,引擎不仅仅是一个子系统,而是一种特定类型的子系统。
Will Sheppard '18

0

引擎基本上是可以扩展以创建某些东西的软件。

例如,在游戏中,您会听到很多有关“某物”游戏引擎的信息。这意味着对特定软件进行了修改和扩展,以创建一个完全独特的游戏。


0

在我的工作中,该术语似乎表示“格式单一的文件,其中的代码文件中XEngine.cs包含多个类,所有这些文件都只包含静态方法”。每当我看着它时,我都会在里面扔一点东西;也可能是VB6模块。

在大多数情况下,我个人不会使用该术语,因为它是模棱两可且毫无意义的(除非我想,除非您正在编写用于模拟汽车或赛车游戏的软件)。就像过去的旧“ Manager”类一样-该名称只告诉您“这会做很多事情”,通常意味着严重违反SOLID

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.