描述符“引擎”到处都是:图形引擎,RegEx引擎,AI引擎等,但是究竟是什么使软件成为引擎呢?设计,输入/输出,目的,尺寸?
描述符“引擎”到处都是:图形引擎,RegEx引擎,AI引擎等,但是究竟是什么使软件成为引擎呢?设计,输入/输出,目的,尺寸?
Answers:
可以说,引擎将是“引擎盖下的”东西。最终用户看不到它,或者至少很少看到它。例如,图形引擎驱动所有渲染计算,但是将这些更改传递到要建模的实际环境。输入:数学。输出:漂亮的色彩。与更高级别的界面相比,引擎可能还具有截然不同的工作变量。例如,在前面的示例中,它使用原始数值数据来操纵图形,而不必担心某物是阴影还是纹理,所有这些都抽象为要由该引擎执行的方程式和矩阵运算。将引擎视为给定系统的“内核”,而其余部分则更像是“外壳”。
用CS101打个比方,在现实世界中,引擎就像汽车引擎一样。它需要两个输入,空气和气体。然后将它们传递到一个腔室中,然后使用电能产生世界上最小的电弧焊。东西然后爆炸。这产生两个输出,排气和驱动活塞的压力波。其余的通过各种驱动轴等传递到车轮运动中。因此,引擎是引擎,汽车本身就是外壳。您可以将汽车发动机用于其他目的,例如驱动发电机发电或使用磨机碾磨谷物。如果引擎具有涂层,并且可以处理乙醇或生物柴油之类的东西,则可以使用不同的输入。
综上所述,引擎是一种通常无法孤立找到的软件。它充当该软件的原动力,但通常与外界之间的交互作用很小,甚至根本不起作用。几个引擎可以一起工作以产生互补的输出,也可以根据需要一起流水线在一起。引擎不会直接在美学意义上做与用户体验有关的事情,而是通过激励数据流和足够的响应以允许良好的应用程序性能来驱动这些体验。
我认为,到目前为止,最接近的答案是说这是一种营销活动。
让我们尝试思考在此上下文中使用该词的来源。
当然,汽车或喷气式发动机并没有这样称呼,因为它们吸收了输入并产生了一些输出。如果是这样,那么不仅是功能,而且生活中的许多事情都将成为引擎。
在我看来,从技术上讲,从任何角度来讲,奶牛绝对不是引擎,这绝非偶然。
发动机使用各种类型的能量并将其转化为运动(即一种特殊类型的能量)。
我们为什么要在软件中使用它?我会说最现实的猜测是因为它听起来很酷。为什么我们称某些程序员为“建筑师”?同样的原因,如果你问我。
另一个原因可能是程序员通常喜欢使用隐喻来描述其软件的各个部分,因此它们可能更易于掌握(因为自然而然地不是)。
我的直觉是,滥用隐喻是一种不好的做法,以使您的应用程序域中充满隐喻。我认为与客户或不了解或不关心编程的人交谈时可能会很有用。除此之外,简单的流程图和图表对我来说是有用的。
引擎是任何需要一些输入,处理该输入并将某些内容作为输出传递的东西。根据此定义,CMS引擎是根据输入即时生成HTTP响应的部分。数据库引擎负责查询,绘制执行计划,然后执行执行计划并返回结果。
从技术上讲,即使是母牛也是一种引擎。它需要草,对其进行处理并输送牛奶。
不要忘记,引擎一词在机械工程中使用更多,并且功能完全相同。
引擎的另一个方面是系统的核心。例如,数据库引擎是任何RDMS的核心。但是,在获取输入和返回结果的同时,连接到该引擎的IDE不被视为引擎。
恕我直言,引擎只是子系统,模块或库的代名词。IE-为特定目的而设计的一个或多个组件。
在我的工作中,该术语似乎表示“格式单一的文件,其中的代码文件中XEngine.cs
包含多个类,所有这些文件都只包含静态方法”。每当我看着它时,我都会在里面扔一点东西;也可能是VB6模块。
在大多数情况下,我个人不会使用该术语,因为它是模棱两可且毫无意义的(除非我想,除非您正在编写用于模拟汽车或赛车游戏的软件)。就像过去的旧“ Manager”类一样-该名称只告诉您“这会做很多事情”,通常意味着严重违反SOLID
。