Symulator komputerowy to program uruchamiany na komputerze w celu symulacji jakiegoś systemu, aby uzyskać lepsze wyobrażenie o jego funkcjonowaniu. Symulator komputerowy może być również używany do symulacji innego komputera. Istnieją dwa główne typy: symulator pełnego systemu i symulator zestawu instrukcji (ISS). Ten typ symulatora komputerowego jest często używany do testowania nowego oprogramowania na szerokiej gamie konfiguracji sprzętowych, bez konieczności korzystania z fizycznych komputerów.
Na najbardziej podstawowym poziomie symulator komputerowy służy do odtworzenia rzeczywistej sytuacji, w której testowanie wielu różnych stanów nie byłoby łatwe ani bezpieczne. W takim przypadku korzystanie z symulatora komputerowego oszczędza dużo czasu i zasobów, a w rzeczywistości może pozwolić na dogłębne testy, które byłyby fizycznie niemożliwe w prawdziwym świecie. Symulacje komputerowe są od pewnego czasu wykorzystywane w inżynierii i nauce, a w ostatnich latach, gdy sprzęt stał się bardziej wytrzymały, a oprogramowanie stało się bardziej wyrafinowane, symulacje te są w stanie osiągnąć coraz więcej.
Przykładem wykorzystania symulatora komputerowego może być firma inżynierska pracująca nad zaprojektowaniem lepszego skrzydła do samolotu. Zamiast wydawać środki na budowanie prototypów każdego nowego projektu i testowanie ich w tunelach aerodynamicznych lub na prawdziwym samolocie, można przeprowadzić symulację. Jeśli dynamika płynów wiatru zostanie dokładnie zamodelowana, można zmodyfikować dowolną liczbę zmiennych, aby przetestować wirtualne skrzydło w milionach różnych scenariuszy, z których niektóre mogą być niemożliwe do odtworzenia w rzeczywistym świecie. Dodatkowo, jeśli projekt okaże się nieidealny, można go łatwo zmodyfikować i ponownie przetestować, bez konieczności budowania nowego obiektu fizycznego. W ten sposób w stosunkowo krótkim czasie można wypróbować setki lub tysiące projektów, co pozwala na znacznie większy stopień dopracowania, niż byłoby to możliwe w innym przypadku.
Wraz z rozpowszechnianiem się sprzętu producenci oprogramowania również odczuwają potrzebę symulowania różnych środowisk dla swoich programów. Ponieważ uruchomienie oprogramowania na każdym komputerze na świecie byłoby niewykonalne, a tym bardziej na każdym zmodyfikowanym systemie z większą lub mniejszą ilością pamięci wideo, kartami dźwiękowymi innych firm i dziesiątkami innych komponentów, które można dostosować, zamiast tego używany jest symulator komputerowy. W ten sposób oprogramowanie może działać na dziesiątkach tysięcy hipotetycznych konfiguracji sprzętowych, a błędy mogą być wykrywane i naprawiane na długo przed wysłaniem produktu do klientów.
Symulatory zestawu instrukcji są powszechnie używane do tego zadania. Mogą modyfikować zmienne, które reprezentują różne ograniczenia sprzętowe różnych maszyn. Zmienne te można zmienić, program można uruchomić, a następnie zmienne można zmienić ponownie, co pozwala programiście przetestować wiele systemów w krótkim czasie.
Innym rodzajem symulatora jest symulator całego systemu. Chociaż jest podobny do ISS, symulator całego systemu pozwala na znacznie bardziej wszechstronne środowisko, umożliwiając symulację całych systemów operacyjnych i sterowników oprogramowania. Pozwala to na jeszcze większą dokładność symulacji, co daje lepszą możliwość wykrywania i naprawy błędów.