I datoranvändning är en översättare ett program som konverterar ett program skrivet på ett programmeringsspråk (källspråket) till ett annat programmeringsspråk (målspråket). Denna process kallas översättning. Det finns flera typer av översättare, var och en med ett annat tillvägagångssätt:
* kompilator: En kompilator översätter hela källkoden till maskinkod (eller en mellanliggande representation som bytekod) * innan * programmet körs. Den resulterande maskinkoden kan sedan köras direkt av datorns processor. Kompilatorer producerar vanligtvis optimerad kod för bättre prestanda, men själva sammanställningsprocessen kan ta tid. Exempel inkluderar GCC (GNU Compiler Collection) och Clang.
* tolk: En tolk översätter och kör källkodlinjen för rad utan att skapa en oberoende körbar fil. Detta möjliggör snabbare feedback under utvecklingen eftersom fel identifieras så snart de stöter på. Emellertid körs tolkad kod i allmänhet långsammare än sammanställd kod. Exempel inkluderar Pythons tolk och JavaScript -motorer i webbläsare.
* Assembler: En monterare är en specifik typ av översättare som konverterar monteringsspråk (ett program på låg nivå) till maskinkod. Monteringsspråk använder mnemonics (korta förkortningar) som representerar maskininstruktioner, vilket gör det lite mer mänskligt läsbart än ren maskinkod.
* Transpiler (eller Cource-till-källkompilerare): En transpiler översätter källkod från ett program på hög nivå till programmeringsspråk till ett annat program på hög nivå. Det genererar inte maskinkod direkt. Detta är användbart för att porta kod mellan olika språk eller för att modernisera äldre kod. Exempel inkluderar BABEL (Transpiling JavaScript ES6+ till ES5) och TypeScript Compilers (Transpiling TypeScript till JavaScript).
Den viktigaste skillnaden mellan dessa typer ligger i * när * och * hur * översättningen inträffar. Kompilatorer översätter allt på förhand, tolkarna översätter och kör linje för rad och transpilers översätts mellan språk på hög nivå. Assemblers är en specialiserad form av kompilator med fokus på ett mycket lågnivåspråk.