Det er åbenbart, at opfattelsen af mennesker og en elektronisk enhed som en computer er anderledes. Mennesker kan forstå alt gennem de naturlige sprog, men en computer gør det ikke. Computeren har brug for en oversætter til at konvertere de sprog, der er skrevet i den læsbare form til den computer, der kan læses.
Kompilator og tolk er typer af sprogoversætter. Hvad er sprogoversætter? Dette spørgsmål kan opstå i dit sind.
En sprogoversætter er en software, der oversætter programmerne fra et kildesprog, som er i læselig form til et tilsvarende program på et objektsprog. Kildesproget er generelt et programmeringssprog på højt niveau, og objektets sprog er typisk maskinens sprog for en faktisk computer.
Sammenligningstabel
Grundlag for sammenligning | Compiler | Tolk |
---|---|---|
Input | Det tager et helt program ad gangen. | Det kræver en enkelt kode eller vejledning ad gangen. |
Produktion | Det genererer mellemliggende objektkode. | Det producerer ikke nogen mellemliggende objektkode. |
Arbejdsmekanisme | Samlingen udføres før udførelsen. | Samling og udførelse foregår samtidigt. |
Hastighed | Sammenlignet hurtigere | Langsommere |
Hukommelse | Hukommelseskrav skyldes mere oprettelsen af objektkode. | Det kræver mindre hukommelse, da det ikke skaber mellemliggende objektkode. |
fejl | Vis alle fejl efter samling, alle på samme tid. | Viser fejl i hver linje en efter en. |
Fejlfinding | Svært | Lettere forholdsvis |
Omfattende programmeringssprog | C, C ++, C #, Scala, typeskript bruger kompilator. | Java, PHP, Perl, Python, Ruby bruger en tolk. |
Definition af kompilator
En kompilator er et program, der læser et program, der er skrevet på højniveauet og konverterer det til maskin- eller lavniveausprog og rapporterer de fejl, der er til stede i programmet. Det konverterer hele kildekode på én gang eller kan tage flere passeringer til at gøre det, men endelig får brugeren den kompilerede kode, som er klar til at udføre.
Compiler opererer i faser forskellige faser kan grupperes i to dele, der er:
- Analyse Fase af kompilatoren kaldes også den forreste ende i hvilket program er opdelt i grundlæggende bestanddele og kontrollerer grammatik, semantisk og syntaks af koden, hvorefter mellemkoden genereres. Analysefase omfatter leksikalanalysator, semantisk analysator og syntaxanalysator.
- Syntesefasen af kompilatoren er også kendt som den bageste ende, hvor mellemkoden er optimeret, og målkoden genereres. Syntesefasen indeholder kodeoptimering og kodegenerator.
FASER AF COMPILER
Lad os nu forstå arbejdet i hvert trin i detaljer.
- Lexical Analyzer : Den scanner koden som en strøm af tegn, grupperer sekvensen af tegn i lexemes og udsender en række tokens med henvisning til programmeringssproget.
- Syntaksanalysator : I denne fase kontrolleres de tokens, der genereres i det foregående trin, mod grammatikken af programmeringssprog, uanset om udtrykkene er syntaktiske korrekte eller ej. Det gør parse træer til at gøre det.
- Semantisk Analysator : Det verificerer, om de udtryk og udsagn, der genereres i den foregående fase, følger reglen for programmeringssprog eller ej, og det skaber annoterede parse træer.
- Intermediate code generator : Den genererer tilsvarende mellemliggende kode for kildekoden. Der er mange repræsentationer af mellemkoden, men TAC (Tre Adressekode) er den mest anvendte.
- Kodeoptimeringsværktøj : Det forbedrer tid og rumkrav for programmet. For at gøre det elimineres den redundante kode, der er til stede i programmet.
- Kodegenerator : Dette er den afsluttende fase af kompilatoren, hvori målkode for en bestemt maskine genereres. Det udfører operationer som hukommelsesstyring, Registreringsopgave og maskinspecifik optimering.
Symboltabellen er noget en datastruktur, der styrer identifikatorerne sammen med den relevante type data, den opbevarer. Fejlhåndterer registrerer, rapporterer, korrigerer de fejl, der opstår mellem de forskellige faser af en compiler.
Definition af tolk
Tolken er et alternativ til at implementere et programmeringssprog og gør det samme arbejde som en kompilator. Interpreter udfører lexing, parsing og typekontrol ligner en compiler. Men tolk behandler syntakttræ direkte for at få adgang til udtryk og udføre sætning snarere end at generere kode fra syntakttræet.
En tolk kan kræve at behandle samme syntakttræ mere end én gang, hvilket er grunden til, at fortolkningen er forholdsvis langsommere end udførelsen af det kompilerede program.
Kompilering og tolkning kombineres nok til at implementere et programmeringssprog. I hvilken en compiler genererer mellemniveau-kode, bliver koden fortolket snarere end kompileret til maskinkode.
At anvende en tolk er fordelagtig under programudvikling, hvor den vigtigste del er at kunne teste en programmodifikation hurtigt i stedet for at køre programmet effektivt.
Nøgleforskelle mellem kompilator og tolk
Lad os se på store forskelle mellem kompilator og tolk.
- Kompilatoren tager et program som helhed og oversætter det, men tolk oversætter en programopgørelse ved udsagn.
- Mellemkoden eller målkoden genereres i tilfælde af en kompilator. I modsætning til tolk skaber ikke mellemkoden.
- En kompilator er forholdsvis hurtigere end tolk, da kompilatoren tager hele programmet på en gang, mens tolker kompilerer hver linje af kode efter den anden.
- Kompilatoren kræver mere hukommelse end tolk på grund af generationen af objektkode.
- Compiler præsenterer alle fejl samtidigt, og det er svært at opdage fejlene i kontrasttolkningsfejl i hver sætning en efter en, og det er lettere at registrere fejl.
- I kompilatoren, når der opstår en fejl i programmet, stopper den sin oversættelse, og efter fjernelse af fejl er hele programmet oversat igen. Tværtimod, når en fejl finder sted i tolken, forhindrer den sin oversættelse, og efter at fejlen er fjernet, genoptages oversættelsen.
- I en compiler kræver processen to trin, hvor først kildekoden oversættes til målprogrammet, der derefter udføres. Mens i tolk Det er en etape proces, hvor Kildekode er udarbejdet og udført samtidig.
- Kompilatoren bruges i programmeringssprog som C, C ++, C #, Scala osv. På den anden tolk er der ansat i sprog som Java, PHP, Ruby, Python osv.
Konklusion
Kompilator og tolk begge er beregnet til at gøre det samme arbejde, men afviger i driftsproceduren, Compiler tager kildekoden på en aggregeret måde, mens tolk tager bestanddele af kildekoden, dvs. erklæring ved opgørelse.
Selv om både kompilator og tolk har visse fordele og ulemper som tolkede sprog betragtes som cross-platform, dvs. koden er bærbar. Det behøver heller ikke at kompilere instruktion tidligere i modsætning til kompilator, som er tidsbesparende. Kompilerede sprog er hurtigere med hensyn til kompileringsprocessen.