Skip to content

Ohjelmistokielen kääntäjä - Compiler

Kuvauksen kirjoitti: Tatu Alatalo, N4927

Kuvaus

Kääntäjä (compiler) on ohjelmistotyökalu joka kääntää korkeamman tason kielellä (C++, Python, Java, C# jne.) kirjoitettuja ohjelmia niiden konekieliseksi vastineeksi (binääritiedostoksi). Eli ihmiselle helposti luettavissa oleva lähdekoodi käännetään tietokoneen ymmärtämään muotoon.

Kääntäjä ja tulkki

Kääntäjää ei kannata sekoittaa tulkkiin (interpreter), joka on eri asia. Eroavaisuus kääntäjän ja tulkin välillä on se, että tulkki joutuu ensin analysoimaan lähdekoodin ja sen jälkeen vasta suorittamaan sen. Kääntäjä ei suorita ohjelmaa sekä käännetty konekielinen ohjelma on nopeampi kuin tulkin käyttäminen.

Kääntäjällä voidaan myös kääntää koodi tavukoodiksi jonka tulkki sitten suorittaa. Tällöin voidaan hyödyntää sekä kääntäjän että tulkin etuja.

Kääntäjän toiminta

Kääntäjän design Kääntäjän design

Vaiheita voi olla useita, mutta ne jaetaan yleensä kolmeen osaan.

  • Front end: Tarkistaa lähdekoodin syntaksin virheiden varalta ja muuttaa lähdekoodin välikoodiksi (intermediate representation, IR) middle endiä varten.
  • Middle end: Optimoi välikoodin back endiä varten. Käyttämättömän koodin poistaminen jne. Optimointi riippuu minkälaiselle suoritinarkkitehtuurille koodia optimoidaan.
  • Back end: Analysoi, muuttaa ja optimoi koodin kyseiselle suoritinarkkitehtuurille. Back endistä tullut koodi on tarkoitettu nimenomaan tietylle prosessorille ja käyttöjärjestelmälle.

Vaiheista löydät tarkempaa tietoa wikipedian tästä artikkelista

Muuta aiheeseen liittyvää

Nykyään on olemassa myös kääntäjiä (source-to-source compiler) joilla voidaan kääntää saman tasoisilta ohjelmointikieliltä lähdekoodia esimerkiksi toiselle tai saman kielen vanhemmasta versiosta uudempaan. Esimerkkeinä kuten vaikkapa Python koodia Javascriptille, Python 2 koodia Python 3:lle, vanhasta API versiosta uuteen API versioon jne.

Linkit ulkopuolisiin lähteisiin

Avainsanat harjoitustehtävän repositoriossa