Qu'est-ce qui fait qu'un logiciel est un moteur? [fermé]


39

Le descripteur 'Engine' est souvent utilisé: moteur graphique, moteur RegEx, moteur AI, etc. Mais qu'est-ce qui fait qu'un logiciel est un moteur? Conception, entrée / sortie, objectif, taille?


62
Le département marketing.
Oded

2
@Oded: le terme 'moteur' est couramment utilisé par les programmeurs eux-mêmes. Essayez de trouver des alternatives et vous verrez pourquoi.
Mai

2
un moteur, c’est ce qui fait que je ne veux pas réinventer le virage
Flexo

@Flexo, alors - une bibliothèque?
Vorac

Réponses:


33

Un moteur serait quelque chose qui est "sous le capot", pour ainsi dire. Ce n'est pas visible, ou du moins très rarement, pour l'utilisateur final. Un moteur graphique, par exemple, pilote tous les calculs de rendu mais transmet ces modifications à l'environnement réel à modéliser. Entrée: math. Sortie: jolies couleurs. Un moteur peut également avoir des variables de travail très différentes de celles d’une interface de niveau supérieur. Par exemple, dans l'exemple précédent, il utilise des données numériques brutes pour manipuler des graphiques sans se soucier de savoir s'il s'agit d'une ombre ou d'une texture. Tout cela est résumé dans les équations et les opérations matricielles à exécuter par ce moteur. Pensez au moteur comme au "noyau" d'un système donné, le reste ressemblant davantage au "shell".

Pour utiliser un monde réel, par analogie avec CS101, un moteur ressemble à un moteur de voiture. Il faut deux entrées, air et gaz. Il les fait ensuite passer dans une chambre, après quoi l’électricité est utilisée pour générer la plus petite utilisation au monde de la soudure à l’arc. Le truc explose ensuite. Cela produit deux sorties, un échappement et une onde de pression qui entraîne un piston. Le reste est transféré en mouvement de roue par les différents arbres de transmission et autres. Donc, le moteur est le moteur et la voiture elle-même est la coque. Vous pouvez utiliser un moteur de voiture à des fins différentes, par exemple conduire une génératrice à l'électricité ou une minoterie pour moudre le grain. Vous pouvez utiliser différentes entrées si le moteur a les revêtements et autres pour traiter des choses comme l’éthanol ou le biodiesel.

Pour résumer, un moteur est un logiciel qui ne se trouve généralement pas isolément. Il agit comme une force motrice pour ce logiciel, mais n'interagit généralement que très peu, voire pas du tout, avec le monde extérieur. Plusieurs moteurs peuvent fonctionner ensemble pour produire des sorties complémentaires ou être combinés au besoin. Un moteur ne fait pas directement les choses liées à l'expérience utilisateur dans un sens esthétique, mais motive néanmoins ces expériences en motivant le flux de données et en étant suffisamment réactif pour permettre de bonnes performances applicatives.


9
Donc, un pilote est l'outil qui contrôle le moteur et bloque le shell?
MikeJ-UK

J'ai vraiment aimé et bénéficié de votre réponse, mais je pense que la question était plus de savoir comment maintenant ce morceau de code / logiciel devrait être appelé une bibliothèque ou une API ou un moteur? si vous pouvez ajouter une explication à cela, ce sera une réponse parfaite
Ali le

Les bibliothèques et les API fonctionnent à un niveau différent de celui d'un moteur. Mieux vaut rester concentré sur le terme en question que de diverger en une mer potentiellement infinie de variations et de noms.
Ingénieur mondial

6

La définition de moteur est

nom / ˈenjən / 
engines, pluriel

  1. Une machine avec des pièces mobiles qui convertit la puissance en mouvement

  2. Une chose qui est l'agent ou l'instrument d'un processus particulier

Le n ° 1 est l'équivalent sémantique enginedu logiciel dans le sens où il provoque quelque chose. Le moteur graphique 3D prend les entrées et les convertit en mouvement à l'écran. Un moteur de regex prend les entrées et les convertit en une sortie différente.

# 2, c'est comme utiliser la phrase comme moteur de changement . Cette sémantique peut également être appliquée aux logiciels.

Les logiciels enginessont plus que des frameworks et des bibliothèques qui font des choses passivement. Les moteurs logiciels agissent seuls en fonction des entrées, ils ne sont pas passifs et ont généralement le leur run looppour effectuer le traitement de leur propre chef.


3

La réponse la plus proche jusqu'à présent, à mon avis, était celle qui disait que c'était une chose de marketing.

Essayons de penser d'où vient l'utilisation du mot dans ce contexte.

Certes, les moteurs de voitures ou de réacteurs ne sont pas appelés ainsi, car ils prennent des entrées et produisent des sorties. Si tel était le cas, alors non seulement les fonctions, mais beaucoup de choses dans la vie seraient des moteurs.

À mon avis, ce n'est pas un hasard si une vache n'est absolument pas un moteur, ni techniquement, ni de façon raisonnable.

Les moteurs utilisent différents types d'énergie et les transforment en mouvement (c.-à-d. Un type d'énergie spécialisé).

Pourquoi l'utilisons-nous dans les logiciels? Je dirais que la supposition la plus réaliste est que ça sonne simplement bien. Pourquoi appelons-nous des architectes de programmeurs? Même raison, si vous me demandez.

Une autre raison pourrait être que les programmeurs préfèrent généralement utiliser des métaphores pour décrire certaines parties de leurs logiciels, ce qui les rend plus faciles à comprendre (car ce n’est bien souvent pas le cas).

Mon intuition est que c’est une mauvaise pratique d’abuser des métaphores de telle sorte que votre domaine d’application en soit rempli. Je pense que cela pourrait être utile pour parler à des clients ou à des personnes qui ne connaissent pas la programmation ou ne se soucient pas de la En dehors de cela, de simples organigrammes et diagrammes font le travail pour moi.


1

Un moteur est tout ce qui prend une entrée, traite cette entrée et fournit quelque chose en sortie . Selon cette définition, un moteur CMS est la partie qui génère la réponse HTTP à la volée en fonction de l'entrée. Un moteur de base de données est ce qui prend la requête, dessine un plan d'exécution, l'exécute et renvoie le résultat.

Techniquement, même une vache est une sorte de moteur. Il prend de l'herbe, la traite et fournit du lait.

N'oubliez pas que le terme moteur est plus utilisé en génie mécanique et qu'il fait exactement la même chose.

Un autre aspect d’un moteur est d’être le noyau d’un système. Par exemple, le moteur de base de données est le noyau de tout SGDD. Cependant, les IDE pour se connecter à ce moteur, tout en prenant une entrée et en renvoyant un résultat, ne sont pas considérés comme un moteur.


5
+1 pour le "moteur à lait", je mangeais du yaourt et m'étouffais presque quand j'ai lu cela. ;)
FrustratedWithFormsDesigner

5
Votre définition ferait de chaque fonction un moteur.
back2dos

Toutes les fonctions ne sont pas fonction de ses entrées.
Michael Burge

Je suis d'accord. Votre explication semble un peu floue et arbitraire.
Yam Marcovic

1
Un programmeur est aussi un moteur. Il prend le café en entrée et produit du code en sortie.
SF.

1

À mon humble avis, un moteur n'est qu'un autre mot pour un sous-système, un module ou une bibliothèque. IE - un ou plusieurs composants conçus de manière cohésive dans un but spécifique.


2
Downvoters: s'il vous plaît élaborer. Qu'un moteur (par exemple, le moteur Quake) soit un sous-système, un module ou une bibliothèque n'est évidemment pas faux.
Keppla

3
Alors que le moteur est généralement implémenté en tant que sous-système, le terme est généralement utilisé uniquement pour les sous-systèmes "sous le capot". Ils ne sont pas utilisés comme synonymes.
Mai

Le principe de cette question est qu'un moteur n'est pas simplement un sous-système, c'est un type particulier de sous-système.
Will Sheppard

0

Un moteur est essentiellement un logiciel qui peut être étendu pour créer quelque chose.

Par exemple, dans les jeux, vous entendez beaucoup parler du moteur de jeu «quelque chose». Cela signifie qu'un logiciel particulier a été modifié et étendu pour créer un jeu totalement unique.


0

Dans mon travail, le terme semble signifier "Un fichier de code unique dans le format XEngine.csavec plusieurs classes à l'intérieur de ce fichier de code, qui ne contiennent que des méthodes statiques". Je vomis un peu à l'intérieur chaque fois que je le regarde; pourrait aussi bien être un module VB6.

Personnellement, je n’utiliserais pas le terme, il est ambigu et dénué de sens (à moins que vous n’écriviez un logiciel simulant une automobile ou peut-être un jeu de course) dans la plupart des cas; c'est comme les anciennes classes "Manager" de jadis - le nom ne vous dit rien d'autre que "Cela fait beaucoup de choses" et signifie généralement que c'est une violation flagrante de SOLID.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.