Mis on koostaja?
Koostaja on arvutiprogramm, mis teisendab kõrgel tasemel programmeerimiskeeles kirjutatud koodi masinakoodiks. See on programm, mis tõlgib inimloetava koodi keelde, millest arvuti protsessor aru saab (binaarne 1 ja 0 bitti). Vastavate ülesannete täitmiseks töötleb arvuti masinakoodi.
Koostaja peaks järgima selle programmeerimiskeele süntaksi reeglit, milles see on kirjutatud. Kompilaator on siiski ainult programm ega suuda selles programmis leitud vigu parandada. Seega, kui teete vea, peate oma programmi süntaksis muudatusi tegema. Muidu see ei kompileeru.
Mis on tõlk?
Tõlk on arvutiprogramm, mis katab kõik kõrgetasemelised programmilaused masinakoodi. See hõlmab lähtekoodi, eelnevalt koostatud koodi ja skripte. Nii koostaja kui ka tõlgid teevad sama tööd, mis teisendab kõrgema taseme programmeerimiskeele masinakoodiks. Kompilaator teisendab koodi aga enne masina käivitamist masinakoodiks (loob exe). Tõlgid teisendavad programmi masina koodiks programmi käivitamise ajal.
PÕHISED erinevused
- Kompilaator teisendab kõrgel tasemel programmeerimiskeeles kirjutatud koodi enne koodi käivitamist korraga masinakoodiks, samal ajal kui tõlk katab programmi töötamise ajal iga kõrgetasemelise programmilause ükshaaval masinakoodiks.
- Koostatud kood töötab kiiremini, tõlgendatud kood aga aeglasemalt.
- Kompilaator kuvab pärast kompileerimist kõik vead, teiselt poolt kuvab tõlk iga rea vead ükshaaval.
- Koostaja põhineb tõlke linkimise-laadimise mudelil, Tõlk aga tõlgendamismeetodil.
- Kompilaator võtab kogu programmi, samas kui tõlk võtab ühe koodirea.
Erinevus koostaja ja tõlgi vahel
Erinevuse alus | Koostaja | Tõlk |
---|---|---|
Programmeerimisetapid |
|
|
Eelis | Programmi kood on juba masinkoodiks tõlgitud. Seega on selle koodi täitmise aeg väiksem. | Tõlke on lihtsam kasutada, eriti algajatele. |
Puudus | Lähtekoodi juurde naasmata ei saa programmi muuta. | Tõlgendatud programmid võivad töötada arvutites, millel on vastav tõlk. |
Masinkood | Masinakeele salvestamine kettale masinakoodina | Masinakoodi üldse ei salvesta. |
Jooksuaeg | Koostatud kood töötab kiiremini | Tõlgendatud kood töötab aeglasemalt |
Mudel | See põhineb keele tõlkimise linkimise-laadimise mudelil. | See põhineb tõlgendamismeetodil. |
Programmi genereerimine | Genereerib väljundprogrammi (exe kujul), mida saab käivitada algsest programmist sõltumatult. | Ärge genereerige väljundprogrammi. Nii hindavad nad lähtekava igal käivitamisel. |
Täitmine | Programmi täitmine on kompileerimisest eraldi. See toimis alles pärast kogu väljundprogrammi koostamist. | Programmi täitmine on osa tõlgendamisprotsessist, seega toimub see rea kaupa. |
Mälunõue | Sihtprogramm käivitub iseseisvalt ega vaja kompilaatorit mällu. | Tõlk eksisteerib suulise tõlke ajal mälus. |
Kõige paremini sobib | Seotud konkreetse sihtmasinaga ja seda ei saa teisaldada. C ja C ++ on kõige populaarsem programmeerimiskeel, mis kasutab kompileerimismudelit. | Veebikeskkondade jaoks, kus laadimisajad on olulised. Kõigi põhjalike analüüside tõttu võtab kompileerimine isegi väiksema koodi koostamiseks suhteliselt rohkem aega, mida ei pruugi mitu korda käivitada. Sellistel juhtudel on tõlgid paremad. |
Koodi optimeerimine | Koostaja näeb kogu koodi ette. Seega teevad nad palju optimeerimisi, mis muudavad koodi kiiremaks | Tõlgid näevad koode rea kaupa ja seega pole optimeerimine nii jõuline kui kompilaatorid |
Dünaamiline kirjutamine | Koostajatena keeruline rakendada ei oska ennustada, mis toimub pöörde ajal. | Tõlgendatud keeled toetavad dünaamilist sisestamist |
Kasutamine | See sobib kõige paremini tootmiskeskkonda | See sobib kõige paremini programmi ja arenduskeskkonna jaoks. |
Viga täitmisel | Kompilaator kuvab kompileerimise ajal kõik vead ja hoiatused. Seetõttu ei saa programmi käivitada ilma vigade parandamiseta | Tõlk loeb ühe avalduse ja näitab vea olemasolu korral. Järgmise rea tõlgendamiseks peate vea parandama. |
Sisend | Selleks on vaja tervet programmi | Selleks on vaja ühte koodirida. |
Väljund | Nõustujad genereerivad vahepealse machnie-koodi. | Tõlk ei loo kunagi ühtegi vahepealset machnie-koodi. |
Vead | Kuva kõik vead pärast, kompileerimist, kõik korraga. | Kuvab iga rea kõik vead ükshaaval. |
Programmeerimiskeeled | C, C ++, C #, Scala, Java kasutavad kõik nõuetele vastavat. | PHP, Perl, Ruby kasutab tõlki. |
Koostaja roll
- Täitjad loevad lähtekoodi, väljastavad käivitatava koodi
- Tõlgib kõrgemal tasemel keeles kirjutatud tarkvara juhisteks, millest arvuti saab aru. See teisendab programmeerija kirjutatud teksti vormingusse, millest protsessor aru saab.
- Koostamisprotsess on suhteliselt keeruline. See kulutab palju aega programmi analüüsimiseks ja töötlemiseks.
- Käivitatav tulemus on mingis vormis masinaspetsiifiline binaarkood.
Tõlgi roll
- Tõlk teisendab lähtekoodi RUN-aja jooksul ridade kaupa.
- Interpret tõlgib täielikult kõrgel tasemel keeles kirjutatud programmi masinataseme keelde.
- Tõlk võimaldab programmi hinnata ja modifitseerida selle käivitamise ajal.
- Suhteliselt vähem aega kulub programmi analüüsimiseks ja töötlemiseks
- Programmi täitmine on kompilaatoriga võrreldes suhteliselt aeglane
KÕRGTASANDI KEELED
Kõrgetasemelised keeled, nagu C, C ++, JAVA jne, on inglise keelele väga lähedal. See muudab programmeerimise lihtsaks. Enne täitmist tuleb see aga tõlkida masinakeelde. Selle tõlkeprotsessi viib läbi kas koostaja või tõlk. Tuntud ka kui lähtekood.
MASINAKOOD
Masinakeeled on riistvarale väga lähedal. Igal arvutil on oma masinakeel. Masinakeele programmid koosnevad binaarse mustri seeriatest. (Nt 110110) See tähistab lihtsaid toiminguid, mida arvuti peaks tegema. Masinakeelsed programmid on käivitatavad, et neid saaks otse käivitada.
OBJEKTI KOOD
Lähtekoodi koostamisel on erinevatele protsessoritele (näiteks Intel, AMD, ARM) loodud masinakood erinev. tKoodi kaasaskantavaks muutmiseks teisendatakse lähtekood kõigepealt objektikoodiks. See on vahenduskood (sarnane masinkoodiga), millest ükski protsessor aru ei saa. Käivitamise ajal teisendatakse objekti kood aluseks oleva platvormi masinakoodiks.
Java on nii koostatud kui ka tõlgendatud.
Kompilaatorite suhteliste eeliste ärakasutamiseks tõlgitakse ja tõlgendatakse mõnda programmeerimiskeelt, näiteks Java. Java kood ise kompileeritakse objektikoodiks. Käitusajal tõlgendab JVM objekti koodi sihtarvuti masinkoodiks.