Ilmselgelt on inimeste ja arvuti nagu arvuti tundlikkus erinev. Inimesed saavad midagi aru looduslike keelte kaudu, kuid arvuti ei ole. Arvutil on vaja tõlkijat, et teisendada inimese loetavas vormis kirjutatud keeled arvutit loetavas vormis.
Keelte tõlkija tüübid on tõlkija ja tõlk. Mis on keele tõlkija? See küsimus võib tekkida teie meeles.
Keele tõlkija on tarkvara, mis tõlgib programme lähtekeelest, mis on inimloetavas vormis, ekvivalentse programmi objektikeeles. Lähtekeel on üldiselt kõrgetasemeline programmeerimiskeel ja objekti keel on tavaliselt arvuti tegelik keel.
Võrdluskaart
Võrdluse alus | Kompilaator | Tõlk |
---|---|---|
Sisend | See võtab kogu programmi korraga. | See võtab korraga ühe koodi või juhendi. |
Väljund | See loob vaheobjektikoodi. | See ei anna vahepealset objekti koodi. |
Töömehhanism | Koostamine toimub enne täitmist. | Koostamine ja teostamine toimub üheaegselt. |
Kiirus | Võrreldes kiiremini | Aeglasemalt |
Mälu | Mälu nõue on rohkem tingitud objektikoodi loomisest. | See nõuab vähem mälu, kuna see ei tekita vaheobjektide koodi. |
Vead | Kuva kõik vead pärast koostamist, kõik samal ajal. | Kuvab iga rea vea ükshaaval. |
Vea tuvastamine | Raske | Lihtsam on lihtsam |
Programmeerimiskeeled | C, C ++, C #, Scala, masinakirjas kasutatakse kompilaatorit. | Java, PHP, Perl, Python, Ruby kasutab tõlki. |
Kompilaatori määratlus
Kompilaator on programm, mis loeb kõrgetasemelises keeles kirjutatud programmi ja muundab selle masinasse või madala tasemega keelde ja teatab programmis esinevatest vigadest. See teisendab kogu lähtekoodi ühel korral või võib seda teha mitu korda, kuid lõpuks saab kasutaja koostatud koodi, mis on valmis täitmiseks.
Kompilaator töötab faasidel; erinevaid etappe võib rühmitada kaheks osaks, mis on:
- Analüüsi Kompilaatori etappi nimetatakse ka esiosaks, milles programm on jagatud põhilisteks koostisosadeks ja kontrollib selle koodi grammatikat, semantilist ja süntaksi, mille järel luuakse vahekood. Analüüsi etapp hõlmab leksikaalset analüsaatorit, semantilise analüsaatori ja süntaksi analüsaatorit.
- Kompilaatori sünteesifaasi tuntakse ka tagaotsana, milles vahe-kood on optimeeritud ja sihtkood genereeritakse. Sünteesifaas sisaldab koodide optimeerijat ja koodigeneraatorit.
Kompilaatori faasid
Nüüd mõistame üksikasjalikult iga etapi tööd.
- Leksiline analüsaator : see skaneerib koodi sümbolite voogena, rühmitab tähemärkide järjestuse ja väljastab programmeerimiskeelega seotud märkide jada.
- Süntaksianalüsaator : Selles etapis kontrollitakse eelmises etapis genereeritud märgid programmeerimiskeele grammatikaga, kas väljendid on süntaktiliselt õiged või mitte. See teeb parsapuud selleks.
- Semantiline analüsaator : see kontrollib, kas eelmises faasis genereeritud väljendid ja avaldused järgivad programmeerimiskeele reeglit või mitte, ja see loob märkmega parse.
- Vahekoodi generaator : see genereerib lähtekoodi ekvivalentse vahekoodi. Vahekoodi on palju, kuid TAC-i (kolm aadressi koodi) kasutatakse kõige laialdasemalt.
- Koodi optimeerija : see parandab programmi aega ja ruumi. Selleks kõrvaldab see üleliigse koodi programmis.
- Koodigeneraator : see on kompilaatori viimane etapp, mille käigus genereeritakse konkreetse masina sihtkood. See teostab selliseid toiminguid nagu mälu haldamine, registri määramine ja masina spetsiifiline optimeerimine.
Sümbolitabel on mõnevõrra andmestruktuur, mis haldab identifikaatoreid koos vastava andmeliigiga, mida ta salvestab. Vea käsitsemine tuvastab, parandab, parandab vea, mis tekib kompilaatori erinevate faaside vahel.
Tõlgi määratlus
Tõlk on alternatiiv programmeerimiskeele rakendamiseks ja teeb sama töö kui kompilaator. Tõlkija teostab tõlkijaga sarnast leksimis-, parsimis- ja tüübikontrolli . Kuid tõlk tõlgib süntaksi otse väljundite juurde pääsemiseks ja avalduse tegemiseks, mitte süntaksi puust koodi genereerimiseks.
Tõlk võib nõuda sama süntaksipuu töötlemist rohkem kui üks kord, mis on põhjus, miks tõlgendus on suhteliselt aeglasem kui koostatud programmi teostamine.
Koostamine ja tõlgendamine on tõenäoliselt kombineeritud programmeerimiskeele rakendamiseks. Millises kompilaatoris luuakse kesktaseme kood, siis seda koodi tõlgendatakse, mitte kompileeritakse masina koodile.
Tõlgi kasutamine on programmi arendamise ajal kasulik, kus kõige olulisem on, et programm saaks kiiresti modifitseerida, mitte programmi tõhusalt käivitada.
Peamised erinevused tõlkija ja tõlkija vahel
Vaatame suuri erinevusi tõlkija ja tõlkija vahel.
- Koostaja võtab programmi tervikuna ja tõlgib, kuid tõlk tõlgib programmi avalduse avalduse järgi.
- Koostaja puhul luuakse vahe- või sihtkood. Tõlgi vastu ei tekita vahekoodi.
- Kompilaator on suhteliselt kiirem kui tõlk, sest kompilaator võtab kogu programmi ühe korraga, samas kui tõlkid koostavad iga koodi rida teise järel.
- Koostaja nõuab objektikoodi genereerimise tõttu rohkem mälu kui tõlk.
- Kompilaator esitab kõik vead samaaegselt ning on raske tuvastada vastupidi vigu, mis tõlgendavad iga avalduse vigu ükshaaval, ning on lihtsam tuvastada vigu.
- Kompilaatoris, kui programmis ilmneb viga, peatab see oma tõlke ja pärast vea eemaldamist tõlgitakse kogu programm uuesti. Vastupidi, kui tõlkis tekib viga, takistab see tõlkimist ja pärast vea eemaldamist jätkub tõlkimine.
- Kompilaatoris nõuab protsess kahte etappi, milles esmalt lähtekoodi tõlgitakse sihtprogrammiks, mis seejärel täidetakse. Interpretaatoris on tegemist üheetapilise protsessiga, kus lähtekoodi koostatakse ja täidetakse samal ajal.
- Kompilaatorit kasutatakse programmeerimiskeeles nagu C, C ++, C #, Scala jne. Teises tõlkis kasutatakse keeli nagu Java, PHP, Ruby, Python jne.
Järeldus
Koostaja ja tõlk on mõlemad mõeldud tegema sama tööd, kuid erinevad tööprotseduuris, võtab kompilaator lähtekoodi kokkuvõttes, samas kui tõlk kasutab lähtekoodi osi, st avaldust.
Kuigi nii kompilaatoril kui ka tõlkil on teatud eeliseid ja puudusi, nagu tõlgitud keeli peetakse platvormideks, st kood on kaasaskantav. Samuti ei pea ta kompileerimiskorraldust varem kompileerima, mis on aja säästmine. Koostamisel on koostatud keeled kiiremad.