Käännetty kieli
Käännösprosessin yleiskustannusten vuoksi käännetyt ohjelmat, jotka on käännetty natiivikoodiksi käännösaikana, ovat yleensä nopeampia kuin suoritusaikana käännetyt ohjelmat. Uudemmat tekniikat, kuten just-in-time-kääntäminen ja käännösprosessin yleiset parannukset, alkavat kuitenkin kaventaa tätä eroa. Sekaratkaisut, joissa käytetään tavukoodia, pyrkivät yleensä kohti välitehokkuutta.
Matalan tason ohjelmointikielet käännetään tyypillisesti, erityisesti silloin, kun tehokkuus on tärkein huolenaihe, eikä niinkään monialustatuki. Tällaisissa kielissä ohjelmoidun koodin ja konekoodin suorittamien laitteisto-operaatioiden välillä on enemmän yksi-yhteen vastaavuuksia, jolloin ohjelmoijien on helpompi ohjata keskusyksikön (CPU) ja muistin käyttöä hienojakoisesti.
Jollain vaivalla on aina mahdollista kirjoittaa kääntäjiä myös perinteisesti tulkatuille kielille. Esimerkiksi Common lisp voidaan kääntää Java-bytekoodiksi (jonka Java-virtuaalikone sitten tulkkaa), C-koodiksi (joka sitten käännetään natiiviksi konekoodiksi) tai suoraan natiiviksi koodiksi. Ohjelmointikielet, jotka tukevat useita kääntökohteita, antavat kehittäjille enemmän valinnanvaraa valita joko suoritusnopeus tai alustojen välinen yhteensopivuus.