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?
design
terminology
Spacebob
quelle
quelle
Antworten:
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.
quelle
Die Definition von Motor ist
Nomen / /enj enginesn /
Motoren, Plural
Eine Maschine mit beweglichen Teilen, die Kraft in Bewegung umwandelt
Eine Sache, die der Agent oder das Instrument eines bestimmten Prozesses ist
# 1 ist die semantische Entsprechung
engine
im 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
engines
ist 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 Regelrun loop
auf eigene Faust verarbeitet werden.quelle
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.
quelle
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.
quelle
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.
quelle
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.
quelle
In meinem Beruf scheint der Begriff "Eine einzelne Codedatei im Format
XEngine.cs
mit 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
.quelle