Was macht eine Software zu einer Engine? [geschlossen]

39

Der Deskriptor 'Engine' wird häufig verwendet: Grafik-Engine, RegEx-Engine, AI-Engine usw. Aber was macht eigentlich eine Software zur Engine? Design, Input / Output, Zweck, Größe?

Spacebob
quelle
62
Die Marketingabteilung.
Oded
2
@Oded: Der Begriff "Engine" wird häufig von Programmierern selbst verwendet. Versuchen Sie, Alternativen zu finden, und Sie werden sehen, warum.
16.
2
Ein Motor macht die Räder aus, die ich nicht neu erfinden möchte
Flexo
@Flexo, also - eine Bibliothek?
Vorac

Antworten:

33

Ein Motor wäre sozusagen "unter der Haube". Es ist für den Endbenutzer nicht oder nur sehr selten sichtbar. Beispielsweise steuert eine Grafik-Engine alle Rendering-Berechnungen, gibt diese Änderungen jedoch an die zu modellierende tatsächliche Umgebung weiter. Eingabe: math. Ausgabe: schöne Farben. Eine Engine hat möglicherweise auch andere Arbeitsvariablen als eine übergeordnete Schnittstelle. Im vorherigen Beispiel werden beispielsweise numerische Rohdaten verwendet, um Grafiken zu bearbeiten, ohne sich darum zu kümmern, ob es sich um einen Schatten oder eine Textur handelt. All dies wird in die von dieser Engine auszuführenden Gleichungen und Matrixoperationen abstrahiert. Stellen Sie sich die Engine als "Kernel" eines bestimmten Systems vor, während der Rest eher der "Shell" ähnelt.

Um eine reale Welt, CS101-Analogie, zu verwenden, ist ein Motor genau wie ein Automotor. Es werden zwei Eingänge benötigt, Luft und Gas. Anschließend werden sie in eine Kammer geleitet, in der mithilfe von Elektrizität das weltweit kleinste Verfahren zum Lichtbogenschweißen eingesetzt wird. Sachen explodieren dann. Dies erzeugt zwei Ausgänge, Abgas und eine Druckwelle, die einen Kolben antreibt. Der Rest wird durch die verschiedenen Antriebswellen und dergleichen in Radbewegung versetzt. Der Motor ist also der Motor und das Auto selbst ist die Hülle. Sie könnten einen Automotor für einen anderen Zweck verwenden, beispielsweise um einen Generator für Elektrizität oder eine Mühle zum Mahlen von Getreide anzutreiben. Sie können verschiedene Eingaben verwenden, wenn der Motor über Beschichtungen verfügt, um beispielsweise Ethanol oder Biodiesel zu handhaben.

Zusammenfassend ist eine Engine eine Software, die normalerweise nicht isoliert vorkommt. Es wirkt als treibende Kraft für diese Software, interagiert jedoch in der Regel nur sehr wenig oder gar nicht mit der Außenwelt. Mehrere Motoren können zusammenarbeiten, um ergänzende Leistungen zu erzielen, oder können nach Bedarf zusammengeschaltet werden. Eine Engine führt nicht direkt ästhetische Aufgaben im Zusammenhang mit der Benutzererfahrung aus, sondern treibt diese Erfahrungen dennoch voran, indem sie den Datenfluss motiviert und so reaktionsschnell ist, dass eine gute Anwendungsleistung erzielt wird.

Weltingenieur
quelle
9
Ein Fahrer ist also das Werkzeug, das den Motor steuert und die Shell zum Absturz bringt?
MikeJ-UK
Ich mochte und profitierte von Ihrer Antwort, aber ich denke, die Frage war eher, wie dieses Stück Code / Software jetzt als Bibliothek, API oder Engine bezeichnet werden sollte. Wenn Sie auch eine Erklärung hinzufügen können, ist dies die perfekte Antwort
Ali
Bibliotheken und APIs arbeiten auf einer anderen Ebene als eine Engine. Es ist besser, sich auf den Begriff zu konzentrieren, als sich in ein Meer von Variationen und Namen zu verwandeln.
Welt Ingenieur
6

Die Definition von Motor ist

Nomen / /enj enginesn / 
Motoren, Plural

  1. Eine Maschine mit beweglichen Teilen, die Kraft in Bewegung umwandelt

  2. Eine Sache, die der Agent oder das Instrument eines bestimmten Prozesses ist

# 1 ist die semantische Entsprechung engineim Sinne von Software, dass dadurch etwas passiert. 3D Graphics Engine, nimmt Eingaben entgegen und wandelt diese in Bewegungen auf dem Bildschirm um. Eine Regex-Engine nimmt Eingaben entgegen und wandelt sie in eine andere Ausgabe um.

# 2 ist wie die Verwendung des Satzes als Motor der Veränderung . Diese Semantik kann auch auf Software angewendet werden.

Software enginesist mehr als Frameworks und Bibliotheken, die Dinge passiv erledigen. Software-Engines agieren auf der Grundlage von Eingaben auf eigene Faust, sind nicht passiv und müssen in der Regel run loopauf eigene Faust verarbeitet werden.


quelle
3

Meiner Meinung nach war die Antwort, die bisher am nächsten kam, die, dass es sich um eine Marketing-Sache handelt.

Lassen Sie uns überlegen, woher der Gebrauch des Wortes in diesem Zusammenhang kommt.

Sicherlich werden Auto- oder Düsentriebwerke nicht so genannt, weil sie Input nehmen und etwas Output produzieren. Wenn das so wäre, dann funktionieren nicht nur die Funktionen, sondern viele Dinge im Leben wären Motoren.

Es ist meines Erachtens kein Zufall, dass eine Kuh definitiv kein Motor ist, weder technisch noch in irgendeiner vernünftigen Weise.

Motoren verbrauchen verschiedene Arten von Energie und wandeln sie in Bewegung um (dh eine spezielle Art von Energie).

Warum verwenden wir es in Software? Ich würde sagen, die realistischste Vermutung ist, dass es einfach cool klingt. Warum nennen wir einige Programmierer "Architekten"? Gleicher Grund, wenn Sie mich fragen.

Ein weiterer Grund könnte sein, dass Programmierer im Allgemeinen gerne Metaphern verwenden, um Teile ihrer Software zu beschreiben, damit sie leichter zu verstehen sind (da dies natürlich häufig nicht der Fall ist).

Ich vermute, dass es eine schlechte Praxis ist, Metaphern so zu missbrauchen, dass Ihre Anwendungsdomäne voll davon ist. Ich denke, es könnte nützlich sein, wenn Sie mit Kunden oder Leuten sprechen, die sich mit Programmieren nicht auskennen oder sich nicht dafür interessieren. Davon abgesehen erledigen einfache Flussdiagramme und Diagramme die Arbeit für mich.

Yam Marcovic
quelle
1

Engine ist alles, was Eingaben entgegennimmt, verarbeitet und als Ausgabe liefert . Nach dieser Definition ist eine CMS-Engine der Teil, der die HTTP-Antwort basierend auf der Eingabe im Handumdrehen generiert. Ein Datenbankmodul übernimmt die Abfrage, zeichnet einen Ausführungsplan und führt ihn aus und gibt das Ergebnis zurück.

Technisch gesehen ist sogar eine Kuh eine Art Motor. Es nimmt Gras auf, verarbeitet es und liefert Milch.

Vergessen Sie nicht, dass der Begriff Motor im Maschinenbau häufiger verwendet wird und genau dasselbe tut.

Ein weiterer Aspekt eines Motors ist das Kernstück eines Systems. Beispielsweise ist das Datenbankmodul der Kern eines jeden RDMS. IDEs, die eine Verbindung zu dieser Engine herstellen, während sie Eingaben entgegennehmen und Ergebnisse zurückgeben, werden jedoch nicht als Engine betrachtet.

Saeed Neamati
quelle
5
+1 für den "Milchmotor", ich aß Joghurt und erstickte fast daran, als ich das las. ;)
FrustratedWithFormsDesigner
5
Ihre Definition würde jede Funktion zu einem Motor machen.
back2dos
Nicht jede Funktion ist eine Funktion ihrer Eingänge.
Michael Burge
Ich muss zustimmen. Ihre Erklärung klingt etwas verschwommen und willkürlich.
Yam Marcovic
1
Ein Programmierer ist auch ein Motor. Es nimmt Kaffee bei der Eingabe und erzeugt Code bei der Ausgabe.
SF.
1

IMHO ist eine Engine nur ein anderes Wort für Subsystem, Modul oder Bibliothek. IE - eine oder mehrere Komponenten, die zusammenhängend für einen bestimmten Zweck entwickelt wurden.

Heath Lilley
quelle
2
Downvoter: bitte erläutern. Dass eine Engine (z. B. die Quake Engine) ein Subsystem, ein Modul oder eine Bibliothek ist, ist nicht offensichtlich falsch.
Keppla
3
Während der Motor typischerweise als Subsystem implementiert ist, wird der Begriff üblicherweise nur für Subsysteme "unter der Haube" verwendet. Sie werden nicht als Synonyme verwendet.
16.
Die Voraussetzung für diese Frage ist, dass eine Engine nicht nur ein Subsystem ist, sondern eine bestimmte Art von Subsystem.
Will Sheppard
0

Eine Engine ist im Grunde eine Software, die erweitert werden kann, um etwas zu erstellen.

Zum Beispiel hören Sie beim Spielen viel über die Spiel-Engine "Etwas". Dies bedeutet, dass eine bestimmte Software modifiziert und erweitert wurde, um ein völlig einzigartiges Spiel zu erstellen.

jzm
quelle
0

In meinem Beruf scheint der Begriff "Eine einzelne Codedatei im Format XEngine.csmit mehreren Klassen in dieser Codedatei, die alle nichts als statische Methoden enthalten" zu bedeuten . Jedes Mal, wenn ich es mir ansehe, muss ich mich ein wenig übergeben. könnte genauso gut ein VB6-Modul sein.

Ich persönlich würde den Begriff nicht verwenden, er ist in den meisten Fällen mehrdeutig und bedeutungslos (es sei denn, Sie schreiben Software, die ein Automobil oder vielleicht ein Rennspiel simuliert). Es ist wie in den alten "Manager" -Klassen von früher - der Name sagt nichts anderes als "Das macht eine Menge Sachen" und das bedeutet normalerweise, dass es eine grobe Verletzung von ist SOLID.

Wayne Molina
quelle