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 |
|
|
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.