Compiler vs Tolk - Forskellen mellem dem
Nøgleforskel mellem compiler og tolk
- Compiler omdanner kode skrevet i et programmeringssprog på højt niveau til maskinkoden på én gang, før programmet kører, hvorimod en tolk konverterer hver programsætning på højt niveau, én efter én, til maskinkoden under programkørsel.
- Kompileret kode kører hurtigere, mens fortolket kode kører langsommere.
- Compiler viser alle fejl efter kompilering, på den anden side viser tolken fejl på hver linje en efter en.
- Compiler er baseret på translation linking-loading model, hvorimod tolken er baseret på fortolkningsmetode.
- Compiler tager et helt program, mens tolken tager en enkelt linje kode.

Hvad er compiler?
En compiler er et computerprogram, der omdanner kode skrevet i et programmeringssprog på højt niveau til maskinkoden. Det er et program, som oversætter den menneskelæselige 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.
A compiler skal overholde syntaksreglen for det programmeringssprog, som den er skrevet på. Compileren er dog kun et program og kan ikke rette fejl fundet i det program. Så hvis du laver en fejl, skal du foretage ændringer i syntaksen for dit program. Ellers vil den ikke kompilere.
Hvad er tolk?
En tolk er et computerprogram, som konverterer hver programsætning på højt niveau til maskinkoden. Dette inkluderer kildekode, prækompileret kode og scripts. Både compiler og tolke udfører det samme job, som er at konvertere højere niveau programmeringssprog til maskinkode. En compiler vil dog konvertere koden til maskinkode (oprette en exe) før programmet køres. Tolke konverterer kode til maskinkode, når programmet køres.
Forskellen mellem compiler og tolk
Her er vigtige forskelle mellem compiler og tolk:
Grundlag for forskel | compiler | Tolk |
---|---|---|
Programmeringstrin |
|
|
Advantage | Programkoden er allerede oversat til maskinkode. Således er dets udførelsestid kortere. | Tolke er nemmere 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 fortolker. |
Maskinkode | Gem maskinsprog som maskinkode på disken | Gemmer slet ikke maskinkoden. |
Løbe tid | Den kompilerede kode kører hurtigere | Fortolket kode kører langsommere |
Model | Den er baseret på sprogoversættelses-linking-loading-model. | Det er baseret på fortolkningsmetode. |
Programgenerering | Genererer outputprogram (i form af exe), som kan køres uafhængigt af det originale program. | Generer ikke output-program. Så de evaluerer kildeprogrammet til enhver tid under udførelsen. |
Udførelse | Programudførelse er adskilt fra kompileringen. Det udføres kun, efter at hele outputprogrammet er kompileret. | Programudførelse er en del af fortolkningsprocessen, så den udføres linje for linje. |
Hukommelseskrav | Target programmet køres uafhængigt og kræver ikke compileren i hukommelsen. | Tolken eksisterer i hukommelsen under tolkning. |
Bedste velegnet til | Afgrænset 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, der er udført, tager kompilering relativt længere tid at kompilere selv lille kode, der måske 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 derfor er optimeringer ikke så robuste som compilere |
Dynamisk skrivning | Svært at implementere, da compilere ikke kan forudsige, hvad der sker ved tur. | Fortolkede sprog understøtter Dynamic Typing |
Brug | Det er bedst egnet til produktionsmiljøet | Det er bedst egnet til program- og udviklingsmiljøet. |
Fejludførelse | Compiler viser alle fejl og advarsler på kompileringstidspunktet. Derfor kan du ikke køre programmet uden at rette fejl | Tolken læser en enkelt erklæring og viser fejlen, hvis der er nogen. Du skal rette fejlen for at fortolke næste linje. |
Input | Det tager et helt program | Det kræver en enkelt linje kode. |
Produktion | Komplianter genererer mellemmaskinekode. | Tolken genererer aldrig nogen mellemliggende maskinkode. |
fejl | Vis alle fejl efter, kompilering, alle på samme tid. | Viser alle fejl på hver linje én efter én. |
Vedrørende programmeringssprog | C, C++, C#, Scala, Java al brug complier. | PHP, Perl, Rubin bruger tolk. |
Rolle som compiler
- Komplianter læser kildekoden, udsender eksekverbar kode
- Oversætter software skrevet på et overordnet sprog til instruktioner, som computeren kan forstå. Den 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 bearbejde programmet.
- Det eksekverbare resultat er en form for maskinspecifik binær kode.
Tjek også:- Kompilerdesigntutorial for begyndere
Tolkens rolle
- Fortolkeren konverterer kildekoden linje for linje under RUN Time.
- Interpret oversætter fuldstændigt et program skrevet på et højt niveau sprog til maskinniveau sprog.
- Tolken tillader evaluering og ændring af programmet, mens det kører.
- Relativt mindre tid brugt til at analysere og behandle programmet
- Programudførelse er relativt langsom sammenlignet med compiler
SPROG på HØJT 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 før udførelse. Denne oversættelsesproces udføres enten af enten en compiler eller en tolk. Også kendt som kildekode.
MASKINKODE
Maskinsprog er meget tæt på hardwaren. Hver computer har sit maskinsprog. En maskinsprogprogrammer er opbygget af serier af binære mønstre. (f.eks. 110110) Det repræsenterer de simple handlinger, som skal udføres af computeren. Maskinsprogsprogrammer er eksekverbare, så de kan køres direkte.
OBJEKT KODE
Ved kompilering af kildekode er maskinkoden, der genereres til forskellige processorer som Intel, AMD og ARM, forskellig. For at gøre kode bærbar, konverteres kildekoden først til objektkode. Det er en mellemkode (svarende til maskinkode), som ingen processor vil forstå. Ved kørselstidspunktet konverteres objektkoden til maskinkoden for den underliggende platform.
Java er både kompileret og fortolket.
For at udnytte de relative fordele ved compilere er tolke nogle programmeringssprog som Java er både kompileret og fortolket. De Java kode i sig selv er kompileret til Object Code. På køretid er FMV fortolker objektkoden til målcomputerens maskinkode.
Tjek også:- Java Tutorial for begyndere: Lær Core Java Programmering