Kompilator vs tumač: Potpuna razlika između sastavljača i tumača

Sadržaj:

Anonim

Što je Compiler?

Kompajler je računalni program koji pretvara kôd napisan u programskom jeziku visoke razine u strojni kôd. To je program koji prevodi čovjeku čitljiv kôd u jezik koji računalni procesor razumije (binarni 1 i 0 bita). Računalo obrađuje strojni kôd za izvršavanje odgovarajućih zadataka.

Prevoditelj bi se trebao pridržavati pravila sintakse tog programskog jezika u kojem je napisan. Međutim, kompajler je samo program i ne može ispraviti pogreške pronađene u tom programu. Dakle, ako pogriješite, morate unijeti promjene u sintaksu svog programa. Inače se neće sastaviti.

Što je tumač?

Tumač je računalni program koji pokriva svaku izjavu programa na visokoj razini u strojni kod. To uključuje izvorni kod, prethodno kompilirani kôd i skripte. I prevoditelj i prevoditelji rade isti posao koji pretvaraju programski jezik više razine u strojni kod. Međutim, kompajler će pretvoriti kod u strojni kôd (stvoriti exe) prije pokretanja programa. Tumači pretvaraju kôd u strojni kod kada se program pokreće.

KLJUČNA RAZLIKA

  • Prevoditelj pretvara kôd napisan u programskom jeziku visoke razine u strojni kôd, odjednom, prije pokretanja programa, dok tumač pokriva svaku izjavu programa visoke razine, jednu po jednu, u strojni kôd tijekom izvođenja programa.
  • Sastavljeni kôd radi brže, a interpretirani kôd sporije.
  • Kompajler prikazuje sve pogreške nakon kompilacije, s druge strane, Interpreter prikazuje pogreške svakog retka jednu po jednu.
  • Sastavljač se temelji na modelu povezivanja i učitavanja prijevoda, dok se tumač temelji na metodi tumačenja.
  • Prevoditelj uzima cijeli program, dok tumač uzima jedan redak koda.

Razlika između sastavljača i tumača

Osnova razlike Sastavljač Tumač
Koraci programiranja
  • Stvorite program.
  • Kompilacija će raščlaniti ili analizirati sve jezične izjave radi ispravnosti. Ako je netočno, izbacuje pogrešku
  • Ako ne dođe do pogreške, prevoditelj će pretvoriti izvorni kod u strojni kod.
  • Povezuje različite kodne datoteke u pokrenuti program (poznat kao exe)
  • Pokrenite program
  • Stvorite program
  • Nema povezivanja datoteka ili generiranja strojnog koda
  • Izvorni izvodi izvršavaju se red po red TIJEKOM izvršenja
Prednost Programski kod je već preveden u strojni kod. Stoga je vrijeme izvršavanja koda manje. Prevoditelji su lakši za upotrebu, posebno za početnike.
Hendikep Ne možete promijeniti program bez povratka na izvorni kod. Protumačeni programi mogu se izvoditi na računalima koja imaju odgovarajući tumač.
Strojni kod Spremite strojni jezik kao strojni kôd na disk Uopće se ne sprema strojni kod.
Vrijeme izvođenja Sastavljeni kôd radi brže Interpretirani kod radi sporije
Model Temelji se na modelu za povezivanje i učitavanje prijevoda jezika. Temelji se na Interpretacijskoj metodi.
Generiranje programa Generira izlazni program (u obliku exe) koji se može izvoditi neovisno od izvornog programa. Ne generirajte izlazni program. Tako oni procjenjuju izvorni program svaki put tijekom izvršenja.
Izvršenje Izvršenje programa odvojeno je od kompilacije. Izvršio se tek nakon što je sastavljen cijeli izlazni program. Izvršenje programa dio je postupka tumačenja, pa se izvodi redak po redak.
Zahtjev za memorijom Ciljani program izvršava se ovisno i ne zahtijeva kompajler u memoriji. Tumač postoji u memoriji tijekom tumačenja.
Najprikladniji za Ograničeno na određeni ciljni stroj i ne može se prenijeti. C i C ++ najpopularniji su programski jezik koji koristi model kompilacije. Za web okruženja, gdje su vremena učitavanja važna. Zbog sve iscrpne analize, kompajliranju je potrebno relativno više vremena za sastavljanje čak i malog koda koji se možda neće pokretati više puta. U takvim su slučajevima prevoditelji bolji.
Optimizacija koda Kompajler unaprijed vidi cijeli kôd. Stoga izvode mnoštvo optimizacija koje ubrzavaju rad koda Tumači vide kôd redak po redak, pa stoga optimizacije nisu tako robusne kao prevoditelji
Dinamično tipkanje Teško je implementirati jer kompajleri ne mogu predvidjeti što će se dogoditi u trenutku okretanja. Tumačeni jezici podržavaju dinamičko tipkanje
Upotreba Najprikladnije je za proizvodno okruženje Najprikladnije je za program i razvojno okruženje.
Izvršenje pogreške Prevoditelj prikazuje sve pogreške i upozorenja u vrijeme sastavljanja. Stoga ne možete pokrenuti program bez ispravljanja pogrešaka Tumač čita jednu izjavu i prikazuje pogrešku ako postoji. Morate ispraviti pogrešku da biste protumačili sljedeći redak.
Ulazni Potreban je čitav program Potreban je jedan redak koda.
Izlaz Sukladnici generiraju srednji machnie kod. Tumač nikada ne generira nikakav posredni Machnie kod.
Pogreške Prikaži sve pogreške nakon, kompilacije, sve istovremeno. Prikazuje sve pogreške svakog retka jednu po jednu.
Odgovarajući programski jezici C, C ++, C #, Scala, Java koriste complier. PHP, Perl, Ruby koristi tumača.

Uloga sastavljača

  • Sukladnici čitaju izvorni kod i izvode izvršni kod
  • Prevodi softver napisan na jeziku više razine u upute koje računalo može razumjeti. Pretvara tekst koji programer napiše u format koji CPU može razumjeti.
  • Proces sastavljanja relativno je složen. Provodi puno vremena analizirajući i obrađujući program.
  • Izvršni rezultat je neki oblik binarnog koda specifičnog za stroj.

Uloga tumača

  • Tumač pretvara izvorni kod red po red tijekom RUN vremena.
  • Tumačenje u potpunosti prevodi program napisan na jeziku visoke razine u jezik strojne razine.
  • Tumač omogućuje evaluaciju i izmjenu programa dok se izvršava.
  • Relativno manje vremena provedenog za analizu i obradu programa
  • Izvršenje programa relativno je sporo u usporedbi s kompajlerom

JEZICI NA VISOKOJ RAZINI

Jezici visoke razine, poput C, C ++, JAVA itd., Vrlo su bliski engleskom. To olakšava postupak programiranja. Međutim, prije izvršavanja mora se prevesti na strojni jezik. Ovaj postupak prevođenja provodi ili sastavljač ili tumač. Poznat i kao izvorni kod.

ŠIFRA STROJA

Strojni jezici vrlo su bliski hardveru. Svako računalo ima svoj strojni jezik. Programi strojnog jezika sastoje se od niza binarnih uzoraka. (Npr. 110110) Predstavlja jednostavne operacije koje bi trebalo izvoditi računalo. Programi strojnog jezika izvršni su tako da se mogu izravno pokretati.

ŠIFRA OBJEKTA

Pri kompilaciji izvornog koda, strojni kod generiran za različite procesore poput Intel, AMD i ARM je različit. tDa bi se kôd učinio prijenosnim, izvorni kod se prvo pretvara u objektni kod. To je posrednički kod (sličan strojnom kodu) koji niti jedan procesor neće razumjeti. U vrijeme izvođenja objektni kôd pretvara se u strojni kôd osnovne platforme.

Java je i kompilirana i protumačena.

Da bi se iskoristile relativne prednosti kompajlera su tumači, neki programski jezik poput Jave se kompajlira i interpretira. Sam Java kôd kompiliran je u Object Code. U vrijeme izvođenja, JVM interpretira objektni kôd u strojni kôd ciljnog računala.