Che cosa rende un pezzo di software un motore? [chiuso]

39

Il descrittore "Engine" viene gettato molto: motore grafico, motore RegEx, motore AI, ecc. ma cosa rende effettivamente un pezzo di software un motore? Design, Input / Output, Scopo, Dimensione?

    
posta Spacebob 15.09.2011 - 21:34
fonte

7 risposte

32

Un motore sarebbe qualcosa che è "sotto il cofano", per così dire. Non è, o almeno raramente è, visibile all'utente finale. Un motore grafico, ad esempio, pilota tutti i calcoli di rendering ma passa 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 più alto livello. Ad esempio, nell'esempio precedente, sta usando dati numerici grezzi per manipolare la grafica senza preoccuparsi se qualcosa è un'ombra o una trama, tutto ciò è astratto nelle operazioni di equazione e matrice che devono essere eseguite da quel motore. Pensa al Motore come al "Kernel" di un dato sistema mentre il resto sarebbe più simile alla "Shell".

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

Per riassumere, un Motore è un software che di solito non si trova isolato. Agisce come forza motrice per quel pezzo di software, ma in genere interagisce molto poco se non con il mondo esterno. Diversi motori possono lavorare insieme per produrre output gratuiti o possono essere collegati insieme in base alle necessità. Un motore non fa direttamente le cose legate all'esperienza dell'utente in senso estetico, ma spinge comunque tali esperienze motivando il flusso di dati ed essendo abbastanza reattivo da consentire una buona performance delle applicazioni.

    
risposta data 15.09.2011 - 21:52
fonte
6

La definizione del motore è

sostantivo / enjən /
motori, plurale

  1. Una macchina con parti mobili che converte la potenza in movimento

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

# 1 è l'elemento semantico equivoco a engine nel senso del software che fa sì che qualcosa accada. 3D Graphics Engine, prende gli input e li converte in movimento sullo schermo. Un motore regex prende input e li converte in un output diverso.

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

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

    
risposta data 15.09.2011 - 22:56
fonte
3

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

Proviamo a pensare da dove provenisse l'uso della parola in questo contesto.

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

Non è una coincidenza, secondo la mia opinione, che una mucca non sia assolutamente un motore, non tecnicamente parlando, e non in un modo sano di parlare.

I motori usano vari tipi di energia e la trasformano in movimento (cioè un tipo specializzato di energia).

Perché lo usiamo nel software? Direi che l'ipotesi più realistica è perché sembra semplicemente interessante. Perché chiamiamo alcuni architetti di programmatori? Lo stesso motivo, se me lo chiedi.

Un altro motivo potrebbe essere che i programmatori generalmente preferiscono utilizzare metafore per descrivere parti del loro software, in modo che possano essere più facili da comprendere (perché naturalmente spesso non lo sono).

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

    
risposta data 15.09.2011 - 23:45
fonte
1

Il motore è tutto ciò che prende in input, processa quell'input e consegna 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 prende la query, disegna un piano di esecuzione, e lo esegue, e restituisce il risultato.

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

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

Un altro aspetto di un motore, è il cuore di un sistema. Ad esempio, il motore di database è il nucleo di qualsiasi RDMS. Tuttavia, gli IDE per connettersi a quel motore, mentre prendono input e restituiscono il risultato, non sono considerati un motore.

    
risposta data 15.09.2011 - 22:01
fonte
1

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

    
risposta data 15.09.2011 - 22:18
fonte
0

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

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

    
risposta data 16.09.2011 - 12:29
fonte
0

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". Mi butto un po 'dentro ogni volta che lo guardo; potrebbe anche essere un modulo VB6.

Personalmente non userò il termine, è ambiguo e privo di significato (a meno che, suppongo, tu stia 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 nient'altro che "Questo fa un sacco di cose" e solitamente significa che si tratta di una violazione grossolana di SOLID .

    
risposta data 16.09.2011 - 14:49
fonte

Leggi altre domande sui tag