Očito je da je različitost ljudi i elektronički uređaj poput računala različit. Ljudi mogu razumjeti bilo što putem prirodnih jezika, ali računalo ne. Računalu je potreban prevoditelj za pretvaranje jezika pisanih u ljudski čitljivom obliku u kompjutorski čitljiv oblik.
Kompajler i tumač su vrste prevoditelja jezika. Što je prevoditelj jezika? Ovo pitanje se može pojaviti u vašem umu.
Jezik prevoditelj je softver koji prevodi programe s izvornog jezika koji su u ljudskom čitljivom obliku u ekvivalentni program u jeziku jezika. Izvorni jezik je općenito programski jezik visoke razine, a objektni jezik je tipično strojni jezik stvarnog računala.
Tablica usporedbe
Osnova za usporedbu | kompajler | Tumač |
---|---|---|
Ulazni | Potreban je cijeli program odjednom. | To traje jedan redak koda ili instrukcije odjednom. |
Izlaz | On generira srednji objektni kod. | Ne proizvodi nikakav posredni objektni kod. |
Radni mehanizam | Kompilacija se obavlja prije izvršenja. | Kompilacija i izvršenje odvijaju se istovremeno. |
Ubrzati | Usporedno brže | sporiji |
Memorija | Zahtjev za memorijom je više zbog stvaranja objektnog koda. | Potrebno je manje memorije jer ne stvara među-objektni kod. |
greške | Prikažite sve pogreške nakon kompilacije, sve u isto vrijeme. | Prikazuje pogrešku svakog retka jedan po jedan. |
Otkrivanje pogreške | težak | Lakše je usporedivo |
Određivanje programskih jezika | C, C ++, C #, Scala, tipkani tekst koristi kompajler. | Java, PHP, Perl, Python, Ruby koristi tumača. |
Definicija prevodioca
Kompajler je program koji čita program napisan na jeziku visoke razine i pretvara ga u stroj ili jezik niskog nivoa i izvještava o greškama prisutnim u programu. Ona pretvara cijeli izvorni kod u jednom potezu ili može uzeti više prolaza da to učini, ali na kraju, korisnik dobiva kompajlirani kod koji je spreman za izvršenje.
Kompajler radi na fazama; različite faze mogu se grupirati u dva dijela koji su:
- Faza analize kompajlera naziva se i prednja strana u kojoj je program podijeljen na temeljne sastavne dijelove i provjerava gramatiku, semantiku i sintaksu koda nakon čega se generira međukodeks. Faza analize uključuje leksički analizator, semantički analizator i sintaksni analizator.
- Faza sinteze kompajlera je također poznata kao krajnji kraj u kojem je optimiziran srednji kod, a generira se i ciljni kod. Faza sinteze uključuje optimizaciju koda i generator koda.
FAZE PRIJAVITELJA
Sada ćemo detaljno razumjeti rad svake faze.
- Lexical Analyzer : Skenira kod kao tok znakova, grupira niz znakova u lekseme i izlazi niz tokena s obzirom na programski jezik.
- Analizator sintakse : U ovoj fazi, tokeni koji su generirani u prethodnoj fazi provjeravaju se s gramatikom programskog jezika, bez obzira jesu li izrazi sintaktički ispravni ili ne. To čini pars stabala za to.
- Semantički analizator : Provjerava da li izrazi i izjave generirani u prethodnoj fazi slijede pravilo programskog jezika ili ne i stvara stabla za analizu označenih oznakama.
- Generator srednjeg koda : generira ekvivalentni srednji kod izvornog koda. Postoji mnogo reprezentacija intermedijarnog koda, ali TAC (Three Address Code) je najčešće korišten.
- Code Optimizer : Poboljšava vremenski i prostorni zahtjev programa. Da bi to učinio, eliminira se redundantni kod prisutan u programu.
- Generator koda : Ovo je završna faza kompajlera u kojoj se generira ciljni kod za određeni stroj. On obavlja operacije kao što su upravljanje memorijom, dodjeljivanje registara i specifična optimizacija stroja.
Tablica simbola je donekle podatkovna struktura koja upravlja identifikatorima zajedno s relevantnim tipom podataka koje pohranjuje. Error Handler otkriva, izvješćuje, ispravlja pogreške koje se susreću između različitih faza kompilatora.
Definicija tumača
Interpreter je alternativa za implementaciju programskog jezika i obavlja isti posao kao i prevodilac. Interpreter izvodi lexing, parsiranje i provjeru tipa slično kompajleru. No, tumač obrađuje izravno stablo sintakse za pristup izrazima i izvršava izjavu umjesto generiranja koda iz stabla sintakse.
Tumač može zahtijevati obradu više istog stabla sintakse više nego jednom, zbog čega je interpretacija relativno sporija od izvođenja kompiliranog programa.
Kompilacija i interpretacija vjerojatno su kombinirani za implementaciju programskog jezika. U kojem prevodilac generira kod srednje razine, tada se kod interpretira, a ne kompajlira u strojni kod.
Zapošljavanje tumača je korisno tijekom razvoja programa, pri čemu je najvažniji dio biti u mogućnosti brzo testirati modifikaciju programa, a ne učinkovito provoditi program.
Ključne razlike između prevodioca i tumača
Pogledajmo glavne razlike između prevoditelja i prevoditelja.
- Kompajler uzima program kao cjelinu i prevodi ga, ali tumač prevodi izjavu programa.
- U slučaju kompilatora generira se srednji kod ili ciljni kod. U usporedbi s tumačem ne stvara srednji kod.
- Kompajler je relativno brži od Interpretera jer kompajler uzima cijeli program odjednom, dok tumači sastavljaju svaki redak koda iza drugog.
- Kompajler zahtijeva više memorije od interpretatora zbog generiranja objektnog koda.
- Kompajler istodobno prikazuje sve pogreške, a teško je otkriti pogreške u prikazu pogrešaka interpretatora kontrasta svake izjave jednu po jednu, a lakše je otkriti pogreške.
- U kompajleru, kada dođe do pogreške u programu, zaustavlja se njegov prijevod i nakon uklanjanja pogreške cijeli program se ponovno prevodi. Naprotiv, kada dođe do pogreške u tumaču, ona sprječava njezin prijevod i nakon uklanjanja pogreške prijevod se nastavlja.
- U kompajleru, proces zahtijeva dva koraka u kojima se najprije izvorni kod prevodi u ciljni program i tada se izvršava. Dok ste u tumaču To je proces u jednom koraku u kojem se izvorni kod kompilira i izvršava u isto vrijeme.
- Kompajler se koristi u programskim jezicima kao što su C, C ++, C #, Scala, itd. S druge strane, Interpreter se koristi u jezicima kao što su Java, PHP, Ruby, Python, itd.
Zaključak
Kompajler i tumač su namijenjeni za obavljanje istog posla, ali se razlikuju u operativnom postupku, kompajler uzima izvorni kod na agregirani način, dok tumač uzima sastavne dijelove izvornog koda, tj. Izjavu po izjavi.
Iako i prevodilac i tumač imaju određene prednosti i nedostatke kao što su interpretirani jezici smatraju se cross-platformom, tj. Kod je prenosiv. Također ne treba prethodno kompajlirati instrukcije za razliku od kompajlera koji štedi vrijeme. Prevedeni jezici su brži u procesu kompilacije.