Cosa rende un software un motore? [chiuso]


39

Il descrittore "Engine" è molto diffuso: motore grafico, motore RegEx, motore AI, ecc. Ma cosa rende effettivamente un software un motore? Design, input / output, scopo, dimensioni?


62
Il dipartimento marketing.
Oded,

2
@Oded: il termine 'motore' è comunemente usato dai programmatori stessi. Prova a trovare alternative e capirai perché.
MaR

2
un motore è ciò che rende le ruote che non voglio reinventare in curva
Flexo

@Flexo, quindi - una libreria?
Vorac,

Risposte:


33

Un motore sarebbe qualcosa che è "sotto il cofano", per così dire. Non è, o almeno molto raramente, visibile all'utente finale. Un motore grafico, ad esempio, guida tutti i calcoli di rendering ma trasmette tali modifiche all'ambiente reale da modellare. Input: matematica. Uscita: bei colori. Un motore potrebbe anche avere variabili di lavoro molto diverse rispetto a un'interfaccia di livello più elevato. Ad esempio, nell'esempio precedente, utilizza dati numerici grezzi per manipolare la grafica senza preoccuparsi che qualcosa sia un'ombra o una trama, tutto ciò viene sottratto alle equazioni e alle operazioni di matrice che devono essere eseguite da quel motore. Pensa al motore come al "kernel" di un determinato sistema, mentre il resto sarebbe più simile alla "shell".

Per usare un mondo reale, analogia CS101, un motore è proprio come un motore di un'auto. Ci vogliono due ingressi, aria e gas. Quindi li passa in una camera, per cui l'elettricità viene utilizzata per generare il più piccolo uso al mondo di saldatura ad arco. La roba poi esplode. Ciò produce due uscite, scarico e un'onda di pressione che aziona un pistone. Il resto viene trasferito nel movimento della ruota dai vari alberi di trasmissione e simili. Quindi il motore è il motore e l'auto stessa è il guscio. Potresti usare un motore di automobile per uno scopo diverso, ad esempio guidare un generatore per l'elettricità o un mulino per macinare il grano. È possibile utilizzare input diversi se il motore ha i rivestimenti e tali per gestire cose come l'etanolo o il biodiesel.

Per riassumere, un motore è un software che di solito non si trova in isolamento. Agisce come forza motrice per quel software ma in genere interagisce pochissimo se non altro con il mondo esterno. Diversi motori possono collaborare per produrre output gratuiti o possono essere collegati in pipeline secondo necessità. Un motore non fa direttamente le cose relative all'esperienza dell'utente in senso estetico, ma guida comunque quelle esperienze motivando il flusso di dati ed essendo abbastanza reattivo da consentire buone prestazioni dell'applicazione.


9
Quindi un driver è lo strumento che controlla il motore e si blocca la shell?
MikeJ-UK,

mi è davvero piaciuto e mi ha dato il meglio della tua risposta, ma penso che la domanda fosse più su come ora questo pezzo di codice / software dovrebbe essere chiamato una libreria o API o motore? se puoi aggiungere spiegazioni anche per questo sarà una risposta perfetta
Ali

Le librerie e le API funzionano a un livello diverso rispetto a un motore. Meglio tenerlo concentrato sul termine a portata di mano piuttosto che divergere in un mare potenzialmente infinito di variazioni e nomi.
Ingegnere mondiale,

6

La definizione di motore è

sostantivo / ˈenjən / 
engine, plurale

  1. Una macchina con parti in movimento che trasforma la potenza in movimento

  2. Una cosa che è l'agente o lo strumento di un particolare processo

Il n. 1 è l'equivalente semantico enginenel senso del software che fa accadere qualcosa. Motore grafico 3D, accetta input e li converte in movimento sullo schermo. Un motore regex accetta input e li converte in output diversi.

# 2 è come usare la frase un motore di cambiamento . Questa semantica può essere applicata anche al software.

Il software enginesè più di framework e librerie che fanno passivamente le cose. I motori software agiscono autonomamente in base agli input, non sono passivi e di solito hanno il proprio run loopda fare per l'elaborazione da soli.


3

La risposta più vicina finora, secondo me, è stata quella che ha detto che è una cosa di marketing.

Proviamo a pensare da dove viene la parola in questo contesto.

Certamente i motori di auto o jet non sono chiamati in quel modo perché prendono input e producono alcuni output. Se così fosse, allora non solo funzioni, ma molte cose nella vita sarebbero motori.

Non a caso, secondo me, una mucca non è sicuramente un motore, né tecnicamente parlando, né in alcun modo sano di parlare.

I motori utilizzano vari tipi di energia e la trasformano in movimento (ovvero un tipo specializzato di energia).

Perché lo usiamo nel software? Direi che l'ipotesi più realistica è perché sembra semplicemente bello. Perché chiamiamo alcuni programmatori "Architects"? Stesso motivo, se me lo chiedi.

Un altro motivo potrebbe essere che i programmatori generalmente amano usare metafore per descrivere parti del loro software, quindi potrebbero essere più facili da comprendere (perché naturalmente non lo sono spesso).

La mia impressione è che sia una cattiva pratica abusare delle metafore in modo tale che il dominio dell'applicazione sia pieno di esse. Penso che potrebbe essere utile quando si parla con clienti o persone che non conoscono o non si preoccupano della programmazione. Oltre a ciò, semplici diagrammi di flusso e diagrammi fanno il lavoro per me.


1

Il motore è tutto ciò che accetta alcuni input, li elabora e fornisce qualcosa come output . Con questa definizione, un motore CMS è la parte che genera la risposta HTTP al volo in base all'input. Un motore di database è ciò che accetta la query, disegna un piano di esecuzione, lo esegue e restituisce il risultato.

Tecnicamente parlando, anche una mucca è una specie di motore. Prende l'erba, la elabora e trasporta il latte.

Non dimenticare che il termine motore è più utilizzato nell'ingegneria meccanica e fa esattamente lo stesso.

Un altro aspetto di un motore è l'essenza di un sistema. Ad esempio, il motore di database è il nucleo di qualsiasi RDMS. Tuttavia, gli IDE per la connessione a quel motore, pur assumendo input e restituendo risultati, non sono considerati un motore.


5
+1 per il "motore del latte", stavo mangiando yogurt e mi sono quasi soffocato quando l'ho letto. ;)
FrustratedWithFormsDesigner

5
La tua definizione renderebbe ogni funzione un motore.
back2dos,

Non tutte le funzioni sono una funzione dei suoi ingressi.
Michael Burge,

Devo essere d'accordo La tua spiegazione sembra un po 'sfocata e arbitraria.
Yam Marcovic,

1
Anche un programmatore è un motore. Prende il caffè in ingresso e produce codice in uscita.
SF.

1

IMHO, un motore è solo un'altra parola per sottosistema, modulo o libreria. IE: uno o più componenti progettati in modo coerente per uno scopo specifico.


2
downvoter: si prega di elaborare. Che un motore (ad esempio, Quake Engine) sia un sottosistema, un modulo o una libreria non è ovviamente falso.
keppla,

3
Mentre il motore è implementato tipicamente come sottosistema, il termine è comunemente usato solo per sottosistemi "sotto il cofano". Non sono usati come sinonimi.
MaR

La premessa di questa domanda è che un motore non è solo un sottosistema, è un tipo particolare di sottosistema.
Will Sheppard,

0

Un motore è fondamentalmente un software che può essere esteso per creare qualcosa.

Ad esempio, nei giochi, sentirai molto parlare del motore di gioco "qualcosa". Ciò significa che un particolare software è stato modificato ed esteso per creare un gioco assolutamente unico.


0

Nel mio lavoro il termine sembra significare "Un singolo file di codice nel formato XEngine.cscon più classi all'interno di quel file di codice, che non contengono altro che metodi statici". Vomito un po 'dentro ogni volta che lo guardo; potrebbe anche essere un modulo VB6.

Personalmente non userei il termine, è ambiguo e insignificante (a meno che, suppongo, non stiate scrivendo software che simula un'automobile o forse un gioco di corse) nella maggior parte dei casi; è come le vecchie classi "Manager" di un tempo - il nome non dice altro che "Questo fa un sacco di cose" e di solito significa che è una grave violazione di SOLID.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.