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. |
| Code Optimering | 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 Typing | Svรฆrt at implementere, da compilere ikke kan forudsige, hvad der sker ved tur. | Fortolkede sprog understรธtter dynamisk 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 den maskinkode, der genereres til forskellige processorer som Intel, AMD og ARM, forskellig. For at gรธre koden portabel konverteres kildekoden fรธrst til objektkoden. CodeDet er en mellemliggende kode (ligner maskinkode), som ingen processor vil forstรฅ. Ved kรธrselstid 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 selve koden kompileres til Object Code. Ved kรธrselstid, den FMV fortolker objektkoden til mรฅlcomputerens maskinkode.
Tjek ogsรฅ:- Java Tutorial for begyndere: Lรฆr Core Java Programmering
