Abstrakta maskiner, även kallade automater, är en del av teoretisk datavetenskap. En abstrakt maskin liknar en funktion i matematik. Den tar emot indata och producerar utdata enligt specificerade regler. Abstrakta maskiner skiljer sig från mer bokstavliga maskiner eftersom de antas fungera perfekt och oberoende av hårdvara. De är indelade i typer på basis av egenskaper som hur de utför sina operationer och vilka typer av input de kan ta emot.
När man klassificerar abstrakta maskiner gäller en av de enklaste distinktionerna antalet operationer som de får utföra vid en given punkt. En abstrakt maskin kallas deterministisk om det alltid bara finns ett sätt för den att gå vidare. Det är icke-deterministiskt om det finns flera möjligheter för maskinen i åtminstone ett av dess möjliga tillstånd. En ”pushdown”-automat är en som har kapacitet att manipulera sin stapel av ingångar, snarare än att bara svara på dem en efter en i den ordning som de visas.
Wolfram MathWorld ger två kända exempel på abstrakta maskiner. Ett av dessa exempel är Conways spel om livet, som är en deterministisk abstrakt maskin eftersom endast en konfiguration kan uppstå ur en annan. Det här spelet använder ett rutnät där varje ruta, eller cell, antingen kan ha tillståndet ”levande” eller ”död”. Tillståndet för hela nätet bestäms på basis av det tidigare tillståndet. Om en levande cell vidrör exakt två eller tre andra levande celler, fortsätter den att leva. Om den har en, två eller fler än tre grannar (upp till åtta möjliga) dör den. En död cell med exakt tre grannar kommer att vakna till liv; annars förblir den död.
Ett annat exempel, Turing-maskinen, är en av de mest grundläggande och grundläggande abstrakta maskinerna inom datavetenskap. En Turing-maskin utför operationer på ett band – en rad symboler – av obegränsad storlek. Den innehåller instruktioner både för att byta symboler och för att ändra den symbol som den fungerar på. En enkel Turing-maskin kanske bara har instruktionen ”omvandla symbol till 1, flytta sedan åt höger.” Den här maskinen skulle inte mata ut något annat än en sträng med 1:or. Denna enkla Turing-maskin är deterministisk, men det är också möjligt att konstruera icke-deterministiska Turing-maskiner som kan utföra flera olika operationer med samma input.
Dessa abstrakta maskiner kan tjäna många syften. De kan vara roliga teoretiska leksaker, men de kan också fungera som modeller för riktiga datorsystem. Den abstrakta maskinen är hjärtat av datavetenskap som disciplin.