¿Qué hace que una pieza de software sea un motor? [cerrado]

39

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?

Spacebob
fuente
6262
El departamento de marketing.
Oded
2
@Oded: el término 'motor' es comúnmente utilizado por los programadores mismos. Intenta encontrar alternativas y verás por qué.
MaR
2
un motor es lo que hace que las ruedas que no quiero reinventar
giren
@Flexo, entonces, ¿una biblioteca?
Vorac

Respuestas:

33

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.

Ingeniero mundial
fuente
9
Entonces, ¿un controlador es la herramienta que controla el motor y bloquea la carcasa?
MikeJ-UK
Realmente me gustó y me beneficié su respuesta, pero creo que la pregunta era más sobre cómo ahora este código / software debería llamarse biblioteca, API o motor. si puedes agregar una explicación para esto también será la respuesta perfecta
Ali
Las bibliotecas y las API funcionan a un nivel diferente al de un motor. Es mejor mantenerlo enfocado en el término en cuestión que divergir en un mar potencialmente interminable de variaciones y nombres.
Ingeniero mundial
6

La definición de motor es

sustantivo / ˈenjən / engine 
, plural

  1. Una máquina con partes móviles que convierte la energía en movimiento.

  2. Una cosa que es el agente o instrumento de un proceso particular.

# 1 es el equivalente semántico engineen 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 engineses 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 propio run loopprocesamiento para su propia voluntad.


fuente
3

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í.

Ñame Marcovic
fuente
1

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.

Saeed Neamati
fuente
55
+1 para el "motor de la leche", estaba comiendo yogurt y casi me ahogo cuando lo leí. ;)
FrustratedWithFormsDesigner
55
Su definición haría de cada función un motor.
back2dos
No todas las funciones son función de sus entradas.
Michael Burge
Tengo que estar de acuerdo. Su explicación suena un poco borrosa y arbitraria.
Yam Marcovic
1
Un programador también es un motor. Toma café en la entrada y produce código en la salida.
SF.
1

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.

Heath Lilley
fuente
2
Votantes: por favor explique. Que un motor (p. Ej., Quake Engine) sea un subsistema, un módulo o una biblioteca no es obviamente falso.
keppla
3
Si bien el motor se implementa típicamente como un subsistema, el término se usa comúnmente solo para subsistemas "bajo el capó". No se usan como sinónimos.
MaR
La premisa de esta pregunta es que un motor no es solo un subsistema, es un tipo particular de subsistema.
Will Sheppard
0

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.

jzm
fuente
0

En mi trabajo, el término parece significar "Un único archivo de código en el formato XEngine.cscon 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.

Wayne Molina
fuente