Rekomenduojama, 2024

Redaktoriaus Pasirinkimas

Skirtumas tarp vertėjo ir vertėjo

Kompiliatorius yra vertėjas, kuris transformuoja šaltinio kalbą (aukšto lygio kalbą) į objekto kalbą (mašinos kalbą). Priešingai nei kompiliatorius, vertėjas yra programa, imituojanti šaltinių kalba parašytų programų vykdymą. Kitas skirtumas tarp „Compiler“ ir „interpretator“ yra tas, kad „Compiler“ konvertuoja visą programą vienoje vietoje, kita vertus, „Interpreter“ konvertuoja programą į vieną eilutę vienu metu.

Akivaizdu, kad žmonių ir elektroninio prietaiso, pvz., Kompiuterio, suvokimas yra skirtingas. Žmonės gali suprasti viską per natūralias kalbas, bet kompiuteris ne. Kompiuteriui reikia vertėjo, kad būtų galima konvertuoti žmogaus skaitytoje formoje parašytas kalbas į kompiuterį nuskaitomą formą.

Kompiliatorius ir vertėjas yra kalbos vertėjo tipai. Kas yra kalbos vertėjas? Šis klausimas gali kilti jūsų mintyse.

Kalbos vertėjas yra programinė įranga, kuri verčia programas iš išeities kalbos, kuri yra suprantama forma, į lygiavertę programą objekto kalba. Pradinė kalba paprastai yra aukšto lygio programavimo kalba, o objekto kalba paprastai yra tikrojo kompiuterio kalba.

Palyginimo diagrama

Palyginimo pagrindasKompiliatoriusVertėjas
ĮvestisTai užima visą programą vienu metu.
Vienu metu reikia vienos eilutės kodo arba nurodymo.
IšėjimasJis sukuria tarpinį objekto kodą.Jis nepateikia tarpinio objekto kodo.
Darbo mechanizmas
Sudarymas atliekamas prieš vykdymą.Rinkimas ir vykdymas vyksta vienu metu.
Greitis
Palyginti greičiauLėtesnis
Atmintis
Atminties reikalavimas labiau susijęs su objekto kodo sukūrimu.Jis reikalauja mažiau atminties, nes nesukuria tarpinio objekto kodo.
Klaidos
Parodykite visas klaidas po kompiliacijos, visi tuo pačiu metu.Rodo kiekvienos eilutės klaidą po vieną.
Klaidos aptikimasSunkuLengviau palyginti
Susijusios programavimo kalbos
C, C ++, C #, Scala, spausdinimo mašina naudoja kompiliatorių.Java, PHP, Perl, Python, Ruby naudoja vertimą.

Kompiliatoriaus apibrėžimas

Kompiliatorius yra programa, kuri skaito aukšto lygio kalba parašytą programą ir konvertuoja ją į mašiną arba žemo lygio kalbą ir praneša apie klaidas, esamas programoje. Jis konvertuoja visą šaltinio kodą vienu metu arba gali atlikti kelis leidimus, tačiau galiausiai vartotojas gauna sukomplektuotą kodą, kuris yra paruoštas vykdyti.

Kompiliatorius veikia fazėse; įvairius etapus galima suskirstyti į dvi dalis:

  • Analizė Kompiliatoriaus fazė taip pat vadinama priekiniu galu, kuriame programa yra suskirstyta į pagrindines sudedamąsias dalis ir tikrina gramatiką, semantinę ir sintaksę, po kurios sukuriamas tarpinis kodas. Analizės fazė apima leksinę analizatorių, semantinį analizatorių ir sintaksės analizatorių.
  • Kompiliatoriaus sintezės fazė taip pat žinoma kaip galinis, kuriame yra optimizuotas tarpinis kodas, ir sukuriamas tikslinis kodas. Sintezės fazėje yra kodo optimizavimo ir kodų generatorius.

KOMPLEKTATORIUS

Dabar suprasime detaliai kiekvieno etapo darbą.

  1. Leksinis analizatorius : jis nuskaito kodą kaip simbolių srautą, grupuoja simbolių seką į leksemas ir išleidžia žymų seką pagal programavimo kalbą.
  2. Sintaksės analizatorius : Šiame etape ankstesniame etape generuojami žetonai tikrinami pagal programavimo kalbos gramatiką, ar išraiškos yra sintaksiškai teisingos, ar ne. Tai daro parsėmus medžius.
  3. Semantinis analizatorius : patikrina, ar ankstesniame etape sukurtos išraiškos ir pareiškimai atitinka programavimo kalbos taisyklę arba ne, ir sukuria anotuotų parsų medžius.
  4. Tarpinio kodo generatorius : sukuria lygiavertį tarpinio kodo kodą. Yra daug tarpinio kodo vaizdų, tačiau plačiausiai naudojamas TAC (trijų adresų kodas).
  5. Kodo optimizavimo priemonė : pagerina programos laiko ir vietos reikalavimą. Tam tai pašalina nereikalingą programoje esantį kodą.
  6. Kodų generatorius : tai yra galutinis kompiliatoriaus etapas, kuriame sukuriamas konkretaus įrenginio tikslinis kodas. Jis atlieka tokias operacijas kaip atminties valdymas, registro priskyrimas ir specifinis įrenginio optimizavimas.

Simbolių lentelė yra šiek tiek duomenų struktūra, kuri valdo identifikatorius kartu su atitinkamu duomenų tipu, kurį ji saugo. Klaidų tvarkytojas aptinka, praneša, ištaiso klaidas, su kuriomis susiduriama tarp skirtingų kompiliatoriaus fazių.

Vertėjo apibrėžimas

Vertėjas yra alternatyva programavimo kalbos įgyvendinimui ir atlieka tą patį darbą kaip kompiliatorius. Vertėjas atlieka leksavimo, analizavimo ir tipo patikrinimus, panašius į kompiliatorių. Tačiau vertėjas apdoroja sintaksės medį tiesiai, norėdamas pasiekti išraiškas ir vykdyti pareiškimą, o ne generuoti kodą iš sintaksės medžio.

Vertėjas gali reikalauti, kad tą patį sintaksės medį būtų galima apdoroti daugiau nei vieną kartą, todėl aiškinimas yra palyginti lėtesnis nei vykdant sukurtą programą.

Kompiliavimas ir interpretavimas tikriausiai derinami įgyvendinant programavimo kalbą. Kuriame kompiliatoriuje sukuriamas vidutinio lygio kodas, kodas yra aiškinamas, o ne kompiliuojamas į mašinos kodą.

Vertimo žodžiu panaudojimas yra naudingas programos kūrimo metu, kur svarbiausia yra greitai testuoti programos pakeitimus, o ne efektyviai valdyti programą.

Pagrindiniai kompiliatoriaus ir vertėjo skirtumai

Pažvelkime į pagrindinius kompiliatoriaus ir vertėjo skirtumus.

  1. Kompiliatorius priima visą programą ir ją verčia, tačiau vertėjas verčia programos pareiškimą pareiškimu.
  2. Tarpinis kodas arba tikslinis kodas generuojamas kompiliatoriaus atveju. Kaip ir vertėjas, nesukuria tarpinio kodo.
  3. Kompiliatorius yra palyginti spartesnis nei vertėjas, nes kompiliatorius vienu metu vykdo visą programą, o vertėjai sudaro po vieną eilutės kodą.
  4. Kompiliatorius reikalauja daugiau atminties nei vertėjas dėl objekto kodo generavimo.
  5. Kompiliatorius pateikia visas klaidas tuo pačiu metu, ir sunku aptikti klaidų vertimą žodžiu kiekvienoje ataskaitoje po vieną ir lengviau aptikti klaidas.
  6. Kompiliatoriuje, kai programoje įvyksta klaida, ji sustabdo vertimą ir pašalinus klaidą visa programa bus išversta iš naujo. Atvirkščiai, kai vertėjas atlieka klaidą, jis neleidžia jo vertimui ir pašalinus klaidą, vertimas vėl pradedamas.
  7. Kompiliatoriuje procesas reikalauja dviejų etapų, kuriuose pirmojo šaltinio kodas yra išverstas į taikomąją programą, tada vykdoma. Vertėjo žodžiu Tai yra vieno etapo procesas, kai pradinis kodas yra sudaromas ir vykdomas tuo pačiu metu.
  8. Kompiliatorius naudojamas programavimo kalbose, pvz., C, C ++, C #, Scala ir kt. Kitame vertime dirba tokios kalbos kaip „Java“, „PHP“, „Ruby“, „Python“ ir kt.

Išvada

Kompiliatorius ir vertėjas abu turi atlikti tą patį darbą, tačiau skiriasi veikimo tvarka, kompiliatorius suvestinį kodą suvestiniu būdu, o vertėjas naudoja šaltinio kodo dalis, ty pareiškimą.

Nors ir kompiliatorius, ir vertėjas turi tam tikrų privalumų ir trūkumų, pvz., Interpretuojamos kalbos laikomos skirtingomis platformomis, ty kodas yra nešiojamas. Ji taip pat nereikia sukompiliuoti instrukcijų, priešingai nei kompiliatorius, kuris yra laiko taupymas. Sudarytos kalbos greičiau rengiamos.

Top