Kompajler vs Interpreter – razlika između njih
Ključna razlika između kompajlera i interpretera
- Kompajler transformira kod napisan u programskom jeziku visoke razine u strojni kod odjednom prije pokretanja programa, dok Interpreter pretvara svaku izjavu programa visoke razine, jednu po jednu, u strojni kod tijekom izvođenja programa.
- Prevedeni kod radi brže, dok interpretirani kod radi sporije.
- Kompajler prikazuje sve greške nakon kompilacije, s druge strane, Interpreter prikazuje greške svakog retka jednu po jednu.
- Prevodilac se temelji na modelu povezivanja-učitavanja prijevoda, dok se tumač temelji na metodi tumačenja.
- Kompajler uzima cijeli program, dok Interpreter uzima jednu liniju koda.

Što je Compiler?
Kompajler je računalni program koji pretvara kod napisan u programskom jeziku visoke razine u strojni kod. To je program koji prevodi čovjeku čitljiv kod na jezik koji računalni procesor razumije (binarni 1 i 0 bita). Računalo obrađuje strojni kod za izvođenje odgovarajućih zadataka.
A kompajler treba biti u skladu s pravilom sintakse tog programskog jezika na kojem je napisan. Međutim, kompajler je samo program i ne može popraviti pogreške pronađene u tom programu. Dakle, ako pogriješite, morate promijeniti sintaksu svog programa. U protivnom se neće kompilirati.
Što je Interpreter?
Interpretator je računalni program koji svaku programsku izjavu visoke razine pretvara u strojni kod. To uključuje izvorni kod, unaprijed kompajlirani kod i skripte. I kompajler i interpreteri rade isti posao koji pretvara programski jezik više razine u strojni kod. Međutim, kompajler će pretvoriti kod u strojni kod (stvoriti exe) prije pokretanja programa. Tumači pretvaraju kod u strojni kod kada se program pokrene.
Razlika između kompilatora i interpretera
Ovdje su važne razlike između kompilatora i interpretera:
Osnova razlike | kompajler | Tumač |
---|---|---|
Koraci programiranja |
|
|
Prednost | Programski kod je već preveden u strojni kod. Stoga je vrijeme izvršenja koda manje. | Prevoditelji su lakši za korištenje, osobito za početnike. |
Hendikep | Ne možete promijeniti program bez povratka na izvorni kod. | Interpretirani programi mogu se izvoditi na računalima koja imaju odgovarajući interpreter. |
Strojni kod | Spremite strojni jezik kao strojni kod na disk | Uopće se ne sprema strojni kod. |
Trajanje | Prevedeni kod radi brže | Interpretirani kod radi sporije |
Model | Temelji se na modelu povezivanja-učitavanja prijevoda jezika. | Temelji se na metodi tumačenja. |
Generiranje programa | Generira izlazni program (u obliku exe) koji se može pokrenuti neovisno o izvornom programu. | Nemojte generirati izlazni program. Stoga procjenjuju izvorni program u svakom trenutku tijekom izvođenja. |
Izvršenje | Izvršenje programa je odvojeno od kompilacije. Izvodi se tek nakon što je cijeli izlazni program kompajliran. | Izvršenje programa je dio procesa interpretacije, pa se izvodi red po red. |
Zahtjev za memoriju | Target programi se izvršavaju neovisno i ne zahtijevaju kompajler u memoriji. | Interpret postoji u memoriji tijekom interpretacije. |
Najprikladniji za | Ograničen na određeni ciljni stroj i ne može se prenijeti. C i C++ su najpopularniji programski jezik koji koristi kompilacijski model. | Za web okruženja, gdje je vrijeme učitavanja važno. Zbog iscrpne analize koja se provodi, kompajliranju je potrebno relativno više vremena za kompajliranje čak i malog koda koji se možda neće izvoditi više puta. U takvim slučajevima bolji su tumači. |
Optimizacija koda | Kompajler unaprijed vidi cijeli kod. Stoga provode mnogo optimizacija koje ubrzavaju izvođenje koda | Tumači vide kod redak po redak, pa stoga optimizacije nisu tako robusne kao prevoditelji |
Dinamično tipkanje | Teško za implementaciju jer prevoditelji ne mogu predvidjeti što će se dogoditi u trenutku skretanja. | Interpretirani jezici podržavaju dinamičko tipkanje |
Upotreba | Najprikladniji je za proizvodno okruženje | Najprikladniji je za programsko i razvojno okruženje. |
Izvršenje pogreške | Kompajler prikazuje sve greške i upozorenja u vrijeme kompilacije. Stoga ne možete pokrenuti program bez ispravljanja greš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 cijeli program | Potreban je jedan red koda. |
Izlaz | Compliers generira srednji strojni kod. | Interpreter nikada ne generira posredni strojni kod. |
greške | Prikaži sve pogreške nakon kompilacije, sve u isto vrijeme. | Prikazuje sve greške svakog retka jednu po jednu. |
Odgovarajući programski jezici | C, C++, C#, Scala, Java svi koriste complier. | PHP, Perl, Rubin koristi prevoditelja. |
Uloga kompilatora
- Compliers čita izvorni kod, izlazi izvršni kod
- Prevodi softver napisan na jeziku više razine u upute koje računalo može razumjeti. Pretvara tekst koji programer piše u format koji CPU može razumjeti.
- Proces kompilacije je relativno kompliciran. Troši puno vremena na analizu i obradu programa.
- Izvršni rezultat je neki oblik binarnog koda specifičnog za stroj.
Također provjerite: - Vodič za dizajn prevoditelja za početnike
Uloga tumača
- Interpretator pretvara izvorni kod redak po redak tijekom RUN vremena.
- Interpret u potpunosti prevodi program napisan na jeziku visoke razine u jezik strojne razine.
- Interpreter omogućuje procjenu i modifikaciju programa dok se izvršava.
- Relativno manje vremena utrošenog za analizu i obradu programa
- Izvršenje programa je relativno sporo u usporedbi s kompajlerom
JEZICI NA VISOKOJ RAZINI
Jezici visoke razine, npr C, C++, JAVA, itd., vrlo su bliski engleskom. Olakšava proces programiranja. Međutim, mora se prevesti u strojni jezik prije izvršenja. Ovaj proces prevođenja provodi ili kompilator ili tumač. Također poznat kao izvorni kod.
ŠIFRA STROJA
Strojni jezici vrlo su bliski hardveru. Svako računalo ima svoj strojni jezik. Programi na strojnom jeziku sastoje se od niza binarnih uzoraka. (Npr. 110110) Predstavlja jednostavne operacije koje treba izvesti računalo. Programi na strojnom jeziku su izvršni tako da se mogu izravno pokretati.
ŠIFRA OBJEKTA
Prilikom kompilacije izvornog koda, strojni kod generiran za različite procesore kao što su Intel, AMD i ARM je različit. Kako bi kod bio prenosiv, izvorni kod se prvo pretvara u objektni kod. To je posrednički kod (sličan strojnom kodu) koji nijedan procesor neće razumjeti. Tijekom izvođenja, objektni kod se pretvara u strojni kod temeljne platforme.
Java je i kompiliran i interpretiran.
Za iskorištavanje relativnih prednosti prevoditelja koriste se neki programski jezici kao što su tumači Java su i kompilirani i interpretirani. The Java sam kod je kompajliran u Object Code. U vrijeme izvođenja, JVM interpretira objektni kod u strojni kod ciljnog računala.
Također provjerite: - Java Vodič za početnike: Naučite jezgru Java Programiranje