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?
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?
Risposte:
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.
sostantivo / ˈenjən /
engine, plurale
Una macchina con parti in movimento che trasforma la potenza in movimento
Una cosa che è l'agente o lo strumento di un particolare processo
Il n. 1 è l'equivalente semantico engine
nel 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 loop
da fare per l'elaborazione da soli.
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.
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.
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.
Nel mio lavoro il termine sembra significare "Un singolo file di codice nel formato XEngine.cs
con 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
.