Compiler vs tolk: Komplet forskel mellem compiler og tolk

Indholdsfortegnelse:

Anonim

Hvad er Compiler?

En kompilator er et computerprogram, der omdanner kode skrevet på et højt niveau programmeringssprog til maskinkoden. Det er et program, der oversætter den menneskelæsbare kode til et sprog, som en computerprocessor forstår (binær 1 og 0 bit). Computeren behandler maskinkoden for at udføre de tilsvarende opgaver.

En kompilator skal overholde syntaksreglen for det programmeringssprog, som den er skrevet i. Compileren er dog kun et program og kan ikke rette fejl, der findes i dette program. Så hvis du laver en fejl, skal du foretage ændringer i syntaksen for dit program. Ellers kompileres det ikke.

Hvad er tolk?

En tolk er et computerprogram, der dækker hver programniveau på højt niveau i maskinkoden. Dette inkluderer kildekode, præ-kompileret kode og scripts. Både compiler og tolke gør det samme job, som konverterer programmeringssprog på højere niveau til maskinkode. En compiler konverterer dog koden til maskinkode (opret en exe) før programkørsel. Tolke konverterer kode til maskinkode, når programmet køres.

Nøgleforskel

  • Compiler omdanner kode skrevet på et højt niveau programmeringssprog til maskinkoden på én gang, før programmet køres, mens en tolk dækker hvert programniveau på højt niveau en efter en til maskinkoden under programkørslen.
  • Kompileret kode kører hurtigere, mens fortolket kode kører langsommere.
  • Compiler viser alle fejl efter kompilering, på den anden side viser tolken fejl i hver linje en efter en.
  • Compileren er baseret på oversættelseskobling-indlæsningsmodel, mens tolk er baseret på fortolkningsmetode.
  • Compiler tager et helt program, mens tolken tager en enkelt linje kode.

Forskellen mellem kompilator og tolk

Grundlag for forskel Kompilator Tolk
Programmeringstrin
  • Opret programmet.
  • Kompilering analyserer eller analyserer alle sprogudtalelser for korrekthed. Hvis det er forkert, kaster en fejl
  • Hvis der ikke er nogen fejl, konverterer compileren kildekoden til maskinkoden.
  • Det forbinder forskellige kodefiler til et kørbart program (kendt som exe)
  • Kør programmet
  • Opret programmet
  • Ingen sammenkædning af filer eller generering af maskinkode
  • Kildesætninger udført linje for linje UNDER udførelse
Fordel Programkoden er allerede oversat til maskinkode. Således er kodeudførelsestiden mindre. Tolke er lettere at bruge, især for begyndere.
Ulempe Du kan ikke ændre programmet uden at gå tilbage til kildekoden. Fortolkede programmer kan køre på computere, der har den tilsvarende tolk.
Maskinkode Gem maskinsprog som maskinkode på disken Gemmer ikke maskinkode overhovedet.
Løbe tid Kompileret kode kører hurtigere Fortolket kode kører langsommere
Model Det er baseret på sprogoversættelseslink-loading-model. Det er baseret på fortolkningsmetode.
Programgenerering Genererer outputprogram (i form af exe), som kan køres uafhængigt af det oprindelige program. Generer ikke outputprogrammet. Så de vurderer kildeprogrammet hver gang under udførelsen.
Udførelse Programudførelse er adskilt fra kompileringen. Det udføres først, efter at hele outputprogrammet er kompileret. Programudførelse er en del af fortolkningsprocessen, så den udføres linje for linje.
Hukommelseskrav Målprogrammet udføres uafhængigt og kræver ikke compileren i hukommelsen. Tolken findes i hukommelsen under fortolkningen.
Bedst egnet til Bundet til den specifikke målmaskine og kan ikke porteres. C og C ++ er et mest populært programmeringssprog, der bruger kompileringsmodel. Til webmiljøer, hvor indlæsningstider er vigtige. På grund af al den udtømmende analyse er udført, tager kompileringer relativt længere tid at kompilere selv lille kode, der muligvis ikke køres flere gange. I sådanne tilfælde er tolke bedre.
Kodeoptimering Compileren ser hele koden på forhånd. Derfor udfører de masser af optimeringer, der får koden til at køre hurtigere Tolke ser kode linje for linje, og optimeringer er således ikke så robuste som kompilatorer
Dynamisk typning Svært at implementere, da kompilatorer ikke kan forudsige, hvad der sker på turtid. Tolkede sprog understøtter dynamisk typing
Anvendelse Det er bedst egnet til produktionsmiljøet Det er bedst egnet til programmet og udviklingsmiljøet.
Fejl i udførelse Compiler viser alle fejl og advarsler på kompileringstidspunktet. Derfor kan du ikke køre programmet uden at rette fejl Tolken læser et enkelt udsagn og viser evt. Fejlen. Du skal rette fejlen for at fortolke næste linje.
Indgang Det tager et helt program Det tager en enkelt linje kode.
Produktion Compliers genererer mellemliggende machnie-kode. Tolken genererer aldrig nogen mellemliggende maskinkode.
Fejl Vis alle fejl efter, kompilering, alt på samme tid. Viser alle fejl i hver linje en efter en.
Tilhørende programmeringssprog C, C ++, C #, Scala, Java bruger alle complier. PHP, Perl, Ruby bruger en tolk.

Kompilatorens rolle

  • Compliers læser kildekoden, udsender eksekverbar kode
  • Oversætter software skrevet på et højere sprog til instruktioner, som computeren kan forstå. Det konverterer teksten, som en programmør skriver til et format, som CPU'en kan forstå.
  • Processen med kompilering er relativt kompliceret. Det bruger meget tid på at analysere og behandle programmet.
  • Det eksekverbare resultat er en eller anden form for maskinspecifik binær kode.

Tolkens rolle

  • Tolken konverterer kildekoden linje for linje under RUN Time.
  • Interpret oversætter et program, der er skrevet på et højt niveau sprog, fuldstændigt til maskinsprog.
  • Tolken tillader evaluering og modifikation af programmet, mens det udføres.
  • Relativt mindre tid brugt til at analysere og behandle programmet
  • Programudførelsen er relativt langsom sammenlignet med kompilatoren

SPROG MED HØJ NIVEAU

Sprog på højt niveau som C, C ++, JAVA osv. Er meget tæt på engelsk. Det gør programmeringsprocessen let. Det skal dog oversættes til maskinsprog inden udførelse. Denne oversættelsesproces udføres enten af ​​en kompilator eller en tolk. Også kendt som kildekode.

MASKINKODE

Maskinsprog er meget tæt på hardwaren. Hver computer har sit maskinsprog. Maskinsprogsprogrammer består af en række binære mønstre. (F.eks. 110110) Det repræsenterer de enkle handlinger, der skal udføres af computeren. Maskinsprogede programmer er eksekverbare, så de kan køres direkte.

MÅLKODE

Ved kompilering af kildekode er maskinkoden, der genereres til forskellige processorer som Intel, AMD, en ARM anderledes. tFor at gøre koden bærbar konverteres kildekoden først til Objektkode. Det er en formidlingskode (svarende til maskinkode), som ingen processor forstår. På kørselstidspunktet konverteres objektkoden til maskinkoden på den underliggende platform.

Java er både kompileret og fortolket.

For at udnytte relative fordele ved kompilatorer er tolke, nogle programmeringssprog som Java er både kompileret og fortolket. Selve Java-koden er samlet i Object Code. På kørselstid fortolker JVM objektkoden i maskinkoden på målcomputeren.