El descriptor 'Motor' se usa mucho: motor gráfico, motor RegEx, motor AI, etc., pero ¿qué hace que un software sea un motor? ¿Diseño, entrada / salida, propósito, tamaño?
design
terminology
Spacebob
fuente
fuente
Respuestas:
Un motor sería algo que está "debajo del capó", por así decirlo. No es, o al menos muy rara vez, es visible para el usuario final. Un motor de gráficos, por ejemplo, maneja todos los cálculos de renderizado pero pasa esos cambios al entorno real a modelar. Entrada: matemática. Salida: bonitos colores. Un motor también puede tener variables de trabajo muy diferentes que una interfaz de más alto nivel. Por ejemplo, en el ejemplo anterior, está utilizando datos numéricos sin procesar para manipular gráficos sin preocuparse de si algo es una sombra o una textura, todo eso se resume en las ecuaciones y las operaciones de matriz que realizará ese motor. Piense en el motor como el "núcleo" de un sistema dado, mientras que el resto sería más como el "Shell".
Para usar una analogía del mundo real, CS101, un motor es como el motor de un automóvil. Se necesitan dos entradas, aire y gas. Luego los pasa a una cámara, con lo cual se utiliza electricidad para generar el uso más pequeño del mundo de soldadura por arco. Las cosas luego explotan. Esto produce dos salidas, escape y una onda de presión que acciona un pistón. El resto es transferido al movimiento de la rueda por los diversos ejes de transmisión y tal. Entonces, el motor es el motor y el automóvil en sí mismo es la carcasa. Podría usar el motor de un automóvil para un propósito diferente, por ejemplo, conducir un generador de electricidad o un molino para moler granos. Podría usar diferentes entradas si el motor tiene los recubrimientos y tal para manejar cosas como el etanol o el biodiesel.
Para resumir, un motor es una pieza de software que generalmente no se encuentra aisladamente. Actúa como fuerza motriz para ese software, pero generalmente interactúa muy poco o nada con el mundo exterior. Varios motores pueden trabajar juntos para producir salidas complementarias o pueden conectarse juntos según sea necesario. Un motor no hace cosas relacionadas directamente con la experiencia del usuario en un sentido estético, sino que impulsa esas experiencias motivando el flujo de datos y respondiendo lo suficiente como para permitir un buen rendimiento de la aplicación.
fuente
La definición de motor es
sustantivo / ˈenjən / engine
, plural
Una máquina con partes móviles que convierte la energía en movimiento.
Una cosa que es el agente o instrumento de un proceso particular.
# 1 es el equivalente semántico
engine
en el sentido del software de que hace que algo suceda. Motor de gráficos 3D, toma entradas y las convierte en movimiento en la pantalla. Un motor regex toma entradas y las convierte en una salida diferente.# 2 es como usar la oración un motor de cambio . Esta semántica también se puede aplicar al software.
El software
engines
es más que marcos y bibliotecas que hacen cosas pasivamente. Los motores de software actúan por sí mismos en función de las entradas, no son pasivos y, por lo general, tienen su propiorun loop
procesamiento para su propia voluntad.fuente
La respuesta más cercana hasta ahora, en mi opinión, fue la que dijo que es una cosa de marketing.
Tratemos de pensar de dónde proviene el uso de la palabra en este contexto.
Ciertamente, los automóviles o los motores a reacción no se llaman así porque toman entrada y producen algo de salida. Si así fuera, entonces no solo funciona, sino que muchas cosas en la vida serían motores.
No es una coincidencia, en mi opinión, que una vaca definitivamente no es un motor, técnicamente hablando, y de ninguna manera sensata.
Los motores usan varios tipos de energía y la convierten en movimiento (es decir, un tipo especializado de energía).
¿Por qué lo usamos en software? Yo diría que la suposición más realista es porque simplemente suena genial. ¿Por qué llamamos a algunos programadores 'Arquitectos'? La misma razón, si me preguntas.
Otra razón podría ser que a los programadores generalmente les gusta usar metáforas para describir partes de su software, por lo que podrían ser más fáciles de entender (porque, naturalmente, a menudo no lo son).
Mi presentimiento es que es una mala práctica abusar de las metáforas de tal manera que el dominio de su aplicación esté lleno de ellas. Creo que podría ser útil al hablar con clientes o personas que no conocen o no se preocupan por la programación. Aparte de eso, simples diagramas de flujo y diagramas hacen el trabajo por mí.
fuente
El motor es cualquier cosa que toma algo de entrada, procesa esa entrada y entrega algo como salida . Según esta definición, un motor CMS es la parte que genera la respuesta HTTP sobre la marcha en función de la entrada. Un motor de base de datos es lo que toma la consulta, dibuja un plan de ejecución, lo ejecuta y devuelve el resultado.
Técnicamente hablando, incluso una vaca es una especie de motor. Toma pasto, lo procesa y entrega leche.
No olvide que el término motor se usa más en ingeniería mecánica, y hace exactamente lo mismo.
Otro aspecto de un motor, es ser el núcleo de un sistema. Por ejemplo, el motor de base de datos es el núcleo de cualquier RDMS. Sin embargo, los IDE para conectarse a ese motor, mientras toman la entrada y devuelven el resultado, no se consideran un motor.
fuente
En mi humilde opinión, un motor es solo otra palabra para subsistema, módulo o biblioteca. IE: uno o más componentes diseñados de manera coherente para un propósito específico.
fuente
Un motor es básicamente un software que se puede extender para crear algo.
Por ejemplo, en los juegos, escucharás mucho sobre el motor de juego 'algo'. Esto significa que un software en particular fue modificado y extendido para crear un juego totalmente único.
fuente
En mi trabajo, el término parece significar "Un único archivo de código en el formato
XEngine.cs
con múltiples clases dentro de ese archivo de código, que no contiene más que métodos estáticos". Vomito un poco por dentro cada vez que lo miro; bien podría ser un módulo VB6.Yo personalmente no usaría el término, es ambiguo y sin sentido (a menos, supongo, que estás escribiendo un software que simula un automóvil o quizás un juego de carreras) en la mayoría de los casos; es como las antiguas clases de "Gerente" de antaño: el nombre no dice nada más que "Esto hace muchas cosas" y, por lo general, eso significa que es una violación grave de
SOLID
.fuente