Risposte:
Sì, i concetti sono diversi.
A simulation
è un sistema che si comporta in modo simile a qualcos'altro, ma è implementato in un modo completamente diverso. Fornisce il comportamento di base di un sistema, ma potrebbe non aderire necessariamente a tutte le regole del sistema simulato. È lì per darti un'idea di come funziona qualcosa.
Esempio
Pensa a un simulatore di volo come esempio. Sembra che tu stia pilotando un aereo, ma sei completamente disconnesso dalla realtà del volo dell'aereo e puoi piegare o infrangere quelle regole come ritieni opportuno. Ad esempio, fai volare un Airbus A380 sottosopra tra Londra e Sydney senza romperlo.
Un emulation
è un sistema che si comporta esattamente come qualcos'altro e aderisce a tutte le regole del sistema che viene emulato. Si tratta effettivamente di una replica completa di un altro sistema, fino a essere binariamente compatibile con gli input e gli output del sistema emulato, ma operando in un ambiente diverso dall'ambiente del sistema emulato originale. Le regole sono fisse e non possono essere modificate o il sistema ha esito negativo.
Esempio
Il sistema MAME è costruito attorno a questa premessa. Tutti quei vecchi sistemi arcade che sono stati a lungo dimenticati, che sono stati implementati quasi interamente nell'hardware o nel firmware dei loro sistemi hardware possono essere emulati fino ai bug e agli arresti originali che si verificherebbero quando si raggiungesse il punteggio più alto possibile.
Una simulazione è un modello costruito con qualcos'altro che riproduce alcune delle caratteristiche di quella cosa e ne esclude altre - ovviamente vuoi preservare le caratteristiche rilevanti per la tua query ed escludere quelle irrilevanti.
Ad esempio, una simulazione del traffico pendolare mattutino lascia fuori i nomi dei pendolari e forse anche le loro identità (usando una variabile contatore anziché un insieme reale di Commuter
oggetti), ma non può ignorare la loro velocità di arrivo.
L'emulazione è l'esecuzione di un software X creato per la piattaforma A sulla piattaforma B, senza modificare il software stesso. Ciò richiede la costruzione di un modello di A che gira su B, e ovviamente deve modellare tutto su A che implica l'esecuzione di codice. (In teoria potresti omettere il supporto per i codici operativi che sai che questo particolare software non userà mai, ma questo è raro: fare un emulatore è un duro lavoro, ed è molto più utile fare un lavoro approfondito e avere qualcosa di riutilizzabile di un kludge che funziona solo per S.)
Entrambi significano qualcosa che fa il lavoro di qualcos'altro.
La differenza è che la "simulazione" avviene a livello consapevole (rispetto all'utente) ed è finalizzata tipicamente per anticipare il risultato di una realtà senza toccare la realtà stessa.
L '"emulazione" avviene a livello inconscio e ha lo scopo di sostituire un componente sottostante con un altro diverso che, rispetto all'utente, funziona come il vecchio.
In altre parole, la simulazione avviene in un "mondo parallelo", mentre l' emulazione avviene in un "mondo sostituito".
Tecnicamente, entrambi fanno lo stesso: fanno qualcosa in un ambiente che si comporta come se fosse la cosa reale.
Concettualmente, tuttavia, c'è una differenza importante.
Una simulazione dovrebbe essere staccata dal mondo reale in una certa misura; l'output di una simulazione non è direttamente collegato all'oggetto che simula. Ad esempio, un simulatore di aeromobili non vola effettivamente e il pilota non comunica effettivamente con un vero controllore del traffico aereo.
Una simulazione di solito ha l' obiettivo di testare o prevedere alcuni processi della vita reale in un ambiente sicuro; poiché la simulazione è disconnessa dal mondo reale, non può succedere nulla di veramente brutto (un simulatore di aereo schiantato non uccide mai persone reali).
Un emulazione , al contrario, ha l'obiettivo di prendere il posto della cosa reale: ad esempio, se si emulare un microcontrollore semplice utilizzando un più sofisticato programmabili CPU, che la CPU può essere usato al posto del microcontrollore originale; sarà fisicamente collegato a qualche macchina e controllerà effettivamente quella macchina proprio come farebbe il microcontrollore.
L' obiettivo di un'emulazione è sostituire componenti hardware o software con equivalenti funzionali quando i moduli originali non sono disponibili (o sono diventati troppo costosi, se non altro per la manutenzione). L'emulazione può anche servire all'obiettivo di utilizzare l'hardware in modo più flessibile: lo stesso microcontrollore programmabile può raddoppiare per diversi controller più semplici, cambiando la modalità di emulazione secondo necessità.
"technically"
, sono completamente diversi. La differenza concettuale che descrivi è fondamentale per questa differenza.
Mentre l'etimologia non è rigorosamente accurata, pensa alla differenza tra simpatia, "posso immaginare come deve essere" ed empatia, "so come ci si sente". Una simulazione potrebbe includere la rappresentazione visiva di un problema, ma potrebbe non esserlo. Ad esempio, potrebbe semplicemente stampare colonne di numeri che rappresentano quante persone sono allineate per qualcosa o entrate totali o velocità media. Ha alcune caratteristiche che corrispondono alla realtà e altre no.
L'emulazione, che viene spesso utilizzata nel contesto di una piattaforma che finge di essere un'altra piattaforma, è molto più completa. Quindi gli sviluppatori di Windows Phone possono eseguire o eseguire il debug delle loro app del telefono su un computer Windows in un emulatore, che assomiglia a un telefono e si comporta anche come uno. Puoi anche eseguire i tuoi vecchi giochi Commodore 64 in un emulatore.
Le parole non sono precise. La maggior parte dei simulatori di volo sono più simili agli emulatori secondo me, ma il nome è rimasto intatto in un'epoca in cui non erano così coinvolgenti. Alcune persone riservano l'emulatore di parole per il caso multipiattaforma e lo rifiutano per qualsiasi altra cosa. Probabilmente non ti sbaglierai mai se fai lo stesso quando parli, ma capisci che alcune persone possono posizionare il confine tra le due parole in modo leggermente diverso, e prendere le misure quando qualcuno dice "questa è un'emulazione" per un simulazione completa.
Entrambi i termini sono molto simili nel concetto: imitazione.
Simulazione o Simulatori fanno uso di software per produrre un sistema replicato che è molto simile al modello target rispetto alla sua funzionalità di base sottostante (in particolare la sua metodologia di base).
Gli emulatori, d'altra parte, si concentrano maggiormente sulla somiglianza esteriore rispetto al sistema target. Ha una preoccupazione minima per "come" le funzioni sono imitate. Gli emulatori sono, in generale, utilizzati quando si lavora in un ambiente completamente diverso (ad esempio un sistema operativo diverso) rispetto al sistema originale.