For høynivå programmeringsspråk skiller en gjerne mellom – hvor en kompilator oversetter programteksten til direkte kjørbar maskinkode – og – hvor en programtolk leser programmet og utfører det fortløpende. Etter hvert er det kommet til ulike mellomstadier, spesielt språk hvor programteksten oversettes til en plattformuavhengig bytekode som deretter eksekveres av en programtolk/et kjøretidsmiljø. Typiske eksempler på det siste er Java, Python og noen LISP-dialekter. Skillet mellom kompilerte og interpreterte programmeringsspråk er flytende – to forskjellige implementasjoner av samme språk kan godt være henholdsvis det ene og det andre.