Mikä on kääntäjä?
Kääntäjä on tietokoneohjelma, joka muuntaa korkealla ohjelmointikielellä kirjoitetun koodin konekoodiksi. Se on ohjelma, joka kääntää ihmisen luettavan koodin kielelle, jonka tietokoneen prosessori ymmärtää (binääriset 1 ja 0 bittiä). Tietokone käsittelee konekoodin vastaavien tehtävien suorittamiseksi.
Kääntäjän tulee noudattaa sen ohjelmointikielen syntaksisääntöä, jolla se kirjoitetaan. Kääntäjä on kuitenkin vain ohjelma, eikä se voi korjata kyseisessä ohjelmassa havaittuja virheitä. Joten jos teet virheen, sinun on tehtävä muutoksia ohjelman syntaksiin. Muuten se ei käänny.
Mikä on tulkki?
Tulkki on tietokoneohjelma, joka peittää kaikki korkean tason ohjelmalauseet konekoodiksi. Tämä sisältää lähdekoodin, valmiiksi kootun koodin ja komentosarjat. Sekä kääntäjä että tulkit tekevät saman työn, joka muuntaa ylemmän tason ohjelmointikielen konekoodiksi. Kääntäjä kuitenkin muuntaa koodin konekoodiksi (luo exe) ennen ohjelman suorittamista. Tulkit muuntavat koodin konekoodiksi, kun ohjelma suoritetaan.
TÄRKEÄ ERO
- Kääntäjä muuntaa korkean tason ohjelmointikielellä kirjoitetun koodin konekoodiksi kerralla, ennen kuin ohjelma suoritetaan, kun taas tulkki peittää jokaisen korkean tason ohjelmalauseen yksitellen konekoodiksi ohjelman ajon aikana.
- Käännetty koodi toimii nopeammin, kun tulkittu koodi toimii hitaammin.
- Kääntäjä näyttää kaikki virheet kääntämisen jälkeen, toisaalta tulkki näyttää kunkin rivin virheet yksitellen.
- Kääntäjä perustuu käännöksen linkitys-latausmalliin, kun taas tulkki perustuu tulkintamenetelmään.
- Kääntäjä vie koko ohjelman, kun taas tulkki ottaa yhden koodirivin.
Ero kääntäjän ja tulkin välillä
Eron perusta | Kääntäjä | Tulkki |
---|---|---|
Ohjelmointivaiheet |
|
|
Etu | Ohjelmakoodi on jo käännetty konekoodiksi. Siten koodin suoritusaika on lyhyempi. | Tulkkeja on helpompi käyttää, etenkin aloittelijoille. |
Haitta | Et voi muuttaa ohjelmaa menemättä takaisin lähdekoodiin. | Tulkitut ohjelmat voivat toimia tietokoneissa, joissa on vastaava tulkki. |
Konekoodi | Tallenna koneen kieli konekoodina levylle | Ei tallenna konekoodia lainkaan. |
Käyntiaika | Käännetty koodi toimii nopeammin | Tulkittu koodi toimii hitaammin |
Malli | Se perustuu kielen translationlinking-loading-malliin. | Se perustuu tulkintamenetelmään. |
Ohjelman luominen | Luo lähtöohjelman (exe-muodossa), joka voidaan suorittaa erillään alkuperäisestä ohjelmasta. | Älä luo lähtöohjelmaa. Joten he arvioivat lähdeohjelmaa aina suorituksen aikana. |
Suoritus | Ohjelman toteutus on erillinen kokoamisesta. Se suoritettiin vasta sen jälkeen, kun koko lähtöohjelma on koottu. | Ohjelman toteutus on osa tulkintaprosessia, joten se suoritetaan rivi riviltä. |
Muistivaatimus | Kohdeohjelma suorittaa itsenäisesti eikä vaadi kääntäjää muistiin. | Tulkki on muistissa tulkinnan aikana. |
Sopii parhaiten | Rajoitettu tiettyyn kohdekoneeseen eikä sitä voi siirtää. C ja C ++ ovat suosituin ohjelmointikieli, joka käyttää kääntämismallia. | Verkkoympäristöihin, joissa latausajat ovat tärkeitä. Kaikkien tyhjentävien analyysien vuoksi kääntäminen vie suhteellisen enemmän aikaa edes pienen koodin kokoamiseen, jota ei välttämättä suoriteta useita kertoja. Tällaisissa tapauksissa tulkit ovat parempia. |
Koodin optimointi | Kääntäjä näkee koko koodin etukäteen. Siksi ne suorittavat paljon optimointeja, jotka tekevät koodista nopeamman | Tulkit näkevät koodin riveittäin, joten optimoinnit eivät ole yhtä vankkoja kuin kääntäjät |
Dynaaminen kirjoittaminen | Vaikea toteuttaa kääntäjinä ei voi ennustaa, mitä tapahtuu käännöshetkellä. | Tulkitut kielet tukevat dynaamista kirjoittamista |
Käyttö | Se soveltuu parhaiten tuotantoympäristöön | Se sopii parhaiten ohjelmaan ja kehitysympäristöön. |
Virhe suorituksessa | Kääntäjä näyttää kaikki virheet ja varoitukset kokoamisajankohtana. Siksi et voi suorittaa ohjelmaa korjaamatta virheitä | Tulkki lukee yhden lauseen ja näyttää mahdollisen virheen. Sinun on korjattava virhe tulkita seuraava rivi. |
Tulo | Se vie koko ohjelman | Se vie yhden rivin koodia. |
Tuotos | Täyttäjät muodostavat välimaisen machnie-koodin. | Tulkki ei koskaan luo välitöntä machnie-koodia. |
Virheet | Näytä kaikki virheet kokoamisen jälkeen, kaikki samaan aikaan. | Näyttää jokaisen rivin kaikki virheet yksitellen. |
Ohjelmointikielet | C, C ++, C #, Scala, Java käyttävät kaikki yhteensopivuutta. | PHP, Perl, Ruby käyttää tulkkia. |
Kääntäjän rooli
- Täyttäjät lukevat lähdekoodin, antavat suoritettavan koodin
- Kääntää korkeammalla kielellä kirjoitetun ohjelmiston ohjeisiin, jotka tietokone ymmärtää. Se muuntaa ohjelmoijan kirjoittaman tekstin CPU: n ymmärtämään muotoon.
- Kokoamisprosessi on suhteellisen monimutkainen. Se viettää paljon aikaa ohjelman analysointiin ja käsittelyyn.
- Suoritettava tulos on jonkinlainen konekohtainen binäärikoodi.
Tulkin rooli
- Tulkki muuntaa lähdekoodin rivi riviltä RUN-ajan aikana.
- Tulkki kääntää korkean tason kielellä kirjoitetun ohjelman kokonaan konetasolle.
- Tulkki mahdollistaa ohjelman arvioinnin ja muokkaamisen sen suorituksen aikana.
- Suhteellisen vähemmän aikaa ohjelman analysointiin ja käsittelyyn
- Ohjelman toteutus on suhteellisen hidasta kääntäjään verrattuna
KORKEAT KIELET
Korkean tason kielet, kuten C, C ++, JAVA jne., Ovat hyvin lähellä englantia. Se tekee ohjelmointiprosessista helppoa. Se on kuitenkin käännettävä konekielelle ennen suoritusta. Tämän käännösprosessin suorittaa joko kääntäjä tai tulkki. Tunnetaan myös nimellä lähdekoodi.
KONEEN KOODI
Konekielet ovat hyvin lähellä laitteistoa. Jokaisella tietokoneella on konekieli. Konekieliohjelmat koostuvat sarjasta binäärikuvioita. (Esim. 110110) Se edustaa yksinkertaisia toimintoja, jotka tietokoneen tulisi suorittaa. Konekieliset ohjelmat ovat suoritettavia, jotta ne voidaan suorittaa suoraan.
KOHTEEKOODI
Lähdekoodia koottaessa eri prosessoreille, kuten Intel, AMD, ARM, luotu konekoodi on erilainen. tKoodin muuttamiseksi kannettavaksi lähdekoodi muunnetaan ensin objektikoodiksi. Se on välitunnus (samanlainen kuin konekoodi), jota mikään prosessori ei ymmärrä. Ajon aikana objektikoodi muunnetaan taustalla olevan alustan konekoodiksi.
Java on sekä käännetty että tulkittu.
Hyödyntääkseen kääntäjien suhteellisia etuja ovat tulkit, jotkut ohjelmointikielet, kuten Java, käännetään ja tulkitaan. Itse Java-koodi on käännetty Object Code -koodiksi. Ajon aikana JVM tulkitsee objektikoodin kohdetietokoneen konekoodiksi.