Koontaja vs tulkki
Yleensä kääntäjä on tietokoneohjelma, joka lukee yhdellä kielellä kirjoitetun ohjelman, jota kutsutaan lähdekieleksi, ja kääntää sen toiselle kielelle, jota kutsutaan kohdekieleksi. Perinteisesti lähdekieli on korkean tason kieli, kuten C++, ja kohdekieli on matalan tason kieli, kuten kokoonpanokieli. On kuitenkin kääntäjiä, jotka voivat muuntaa Assembly-kielellä kirjoitetun lähdeohjelman ja muuntaa sen konekoodiksi tai objektikoodiksi. Kokoonpanijat ovat sellaisia työkaluja. Toisa alta tulkit ovat työkaluja, jotka suorittavat jollain ohjelmointikielellä kirjoitettuja ohjeita. Tulkki voi joko suorittaa suoraan korkean tason lähdekoodin tai kääntää ne keskitason koodiksi ja sitten tulkita sen tai suorittaa esikäännetty koodi.
Mikä on Assembler?
Assembler on ohjelmisto tai työkalu, joka kääntää Assembly-kielen konekoodiksi. Assembly on siis eräänlainen kääntäjä ja lähdekoodi on kirjoitettu kokoonpanokielellä. Assembly on ihmisen luettavissa oleva kieli, mutta sillä on tyypillisesti yksi yhteen suhde vastaavan konekoodin kanssa. Siksi kokoajan sanotaan suorittavan isomorfisen (yksi yhteen mappauksen) käännöksen. Edistyneet kokoajat tarjoavat lisäominaisuuksia, jotka tukevat ohjelman kehitystä ja virheenkorjausprosesseja. Esimerkiksi makrokokoajiksi kutsutut kokoajat tarjoavat makrotoiminnon.
Mikä on tulkki?
Tulkki on tietokoneohjelma tai työkalu, joka suorittaa ohjelmointikäskyjä. Tulkki voi joko suorittaa lähdekoodin suoraan tai muuntaa lähteen välikoodiksi ja suorittaa sen suoraan tai suorittaa kääntäjän tuottaman esikäännetyn koodin (jotkin tulkkijärjestelmät sisältävät kääntäjän tätä tehtävää varten). Kielet, kuten Perl, Python, MATLAB ja Ruby, ovat esimerkkejä ohjelmointikielistä, jotka käyttävät välikoodia. UCSD Pascal tulkitsee esikäännetyn koodin. Kielet, kuten Java, BASIC ja Samlltalk, kääntävät ensin lähteen välikoodiksi nimeltä tavukoodi ja sitten tulkitsevat sen.
Mitä eroa on kokoonpanijalla ja tulkilla?
Assembleria voidaan pitää erityisenä kääntäjänä, joka vain kääntää Assembly-kielen konekoodiksi. Tulkit ovat työkaluja, jotka suorittavat jollain kielellä kirjoitettuja ohjeita. Tulkkijärjestelmissä voi olla kääntäjä, joka esikääntää koodin ennen tulkintaa, mutta tulkkia ei voida kutsua kääntäjän erikoistyypiksi. Kokoonpanijat tuottavat objektikoodin, joka saattaa joutua linkittämään linkkiohjelmilla toimiakseen koneessa, mutta useimmat tulkit voivat suorittaa ohjelman suorittamisen itse. Kokoonpanija tekee tyypillisesti yksittäisen käännöksen, mutta tämä ei pidä paikkaansa useimpien tulkkien kohdalla. Koska Assembly-kielessä on yksi-yksi-mappaus konekoodin kanssa, assemblerillä voidaan tuottaa koodia, joka toimii erittäin tehokkaasti tilanteissa, joissa suorituskyky on erittäin tärkeää (esim. grafiikkamoottorit, sulautetut järjestelmät, joiden laitteistoresurssit ovat rajalliset verrattuna henkilökohtaiseen tietokoneeseen kuten mikroa altouunit, pesukoneet jne.). Toisa alta tulkkeja käytetään silloin, kun tarvitaan suurta siirrettävyyttä. Esimerkiksi samaa Java-tavukoodia voidaan ajaa eri alustoilla käyttämällä sopivaa tulkintaa (JVM).