Kompilator vs tolk - Skillnaden mellan dem
Nyckelskillnad mellan kompilator och tolk
- Kompilatorn omvandlar kod skriven i ett högnivåprogrammeringsspråk till maskinkoden på en gång innan programmet körs, medan en tolk omvandlar varje programsats på hög nivå, en efter en, till maskinkoden, under programkörningen.
- Kompilerad kod går snabbare, medan tolkad kod går långsammare.
- Kompilatorn visar alla fel efter kompileringen, å andra sidan visar tolken felen för varje rad en efter en.
- Kompilatorn är baserad på en översättningslänknings-laddningsmodell, medan tolken är baserad på tolkningsmetoden.
- Kompilatorn tar ett helt program, medan tolken tar en enda rad kod.

Vad är kompilator?
En kompilator är ett datorprogram som omvandlar kod skriven i ett högnivåprogrammeringsspråk till maskinkoden. Det är ett program som översätter den mänskliga läsbara koden till ett språk som en datorprocessor förstår (binär 1 och 0 bitar). Datorn bearbetar maskinkoden för att utföra motsvarande uppgifter.
A kompilator bör följa syntaxregeln för det programmeringsspråk som den är skriven på. Dock är kompilatorn bara ett program och kan inte fixa fel som finns i det programmet. Så om du gör ett misstag måste du göra ändringar i syntaxen för ditt program. Annars kommer det inte att kompileras.
Vad är tolk?
En tolk är ett datorprogram som omvandlar varje programsats på hög nivå till maskinkoden. Detta inkluderar källkod, förkompilerad kod och skript. Både kompilatorn och tolkarna gör samma jobb som konverterar programmeringsspråk på högre nivå till maskinkod. En kompilator kommer dock att konvertera koden till maskinkod (skapa ett exe) innan programmet körs. Tolkar konverterar kod till maskinkod när programmet körs.
Skillnaden mellan kompilator och tolk
Här är viktiga skillnader mellan kompilator och tolk:
Grund för skillnad | Kompilator | Tolk |
---|---|---|
Programmeringssteg |
|
|
Fördel | Programkoden är redan översatt till maskinkod. Sålunda är exekveringstiden för den kod kortare. | Tolkar är lättare att använda, särskilt för nybörjare. |
Nackdel | Du kan inte ändra programmet utan att gå tillbaka till källkoden. | Tolkade program kan köras på datorer som har motsvarande tolk. |
Maskinkod | Lagra maskinspråk som maskinkod på disken | Sparar inte maskinkoden alls. |
gångtid | Den kompilerade koden går snabbare | Tolkad kod går långsammare |
Modell | Den är baserad på språköversättningsmodell för länkning och laddning. | Den är baserad på tolkningsmetod. |
Programgenerering | Genererar utdataprogram (i form av exe) som kan köras oberoende av originalprogrammet. | Generera inte utdataprogram. Så de utvärderar källprogrammet vid varje tillfälle under körningen. |
Utförande | Programexekveringen är separat från kompileringen. Det utfördes först efter att hela utdataprogrammet har kompilerats. | Programexekvering är en del av tolkningsprocessen, så det utförs rad för rad. |
Minneskrav | Target program körs oberoende och kräver inte kompilatorn i minnet. | Tolken finns i minnet under tolkning. |
Bäst lämpad för | Avgränsad till den specifika målmaskinen och kan inte portas. C och C++ är ett mest populärt programmeringsspråk som använder kompileringsmodell. | För webbmiljöer där laddningstider är viktiga. På grund av all uttömmande analys som görs tar kompilering relativt längre tid att kompilera även liten kod som kanske inte körs flera gånger. I sådana fall är tolkar bättre. |
Kodoptimering | Kompilatorn ser hela koden i förväg. Därför utför de massor av optimeringar som gör att koden körs snabbare | Tolkar ser kod rad för rad, och därför är optimeringar inte lika robusta som kompilatorer |
Dynamisk typning | Svårt att implementera eftersom kompilatorer inte kan förutsäga vad som händer vid tur. | Tolkade språk stöder Dynamic Typing |
Användning | Den är bäst lämpad för produktionsmiljön | Det passar bäst för program- och utvecklingsmiljön. |
Fel vid exekvering | Kompilatorn visar alla fel och varningar vid kompileringstillfället. Därför kan du inte köra programmet utan att åtgärda fel | Tolken läser ett enstaka påstående och visar eventuellt fel. Du måste rätta till felet för att tolka nästa rad. |
Ingång | Det tar ett helt program | Det tar en enda rad kod. |
Produktion | Compliers genererar mellanliggande maskinkod. | Tolk genererar aldrig någon mellanliggande maskinkod. |
fel | Visa alla fel efter, kompilering, alla samtidigt. | Visar alla fel på varje rad en efter en. |
Angående programmeringsspråk | C, C++, C#, Scala, Java alla använder complier. | PHP, Perl, Rubin använder tolk. |
Roll som kompilator
- Komplianter läser källkoden, matar ut körbar kod
- Översätter programvara skriven på ett högre språk till instruktioner som datorn kan förstå. Den konverterar texten som en programmerare skriver till ett format som CPU kan förstå.
- Sammanställningsprocessen är relativt komplicerad. Det ägnar mycket tid åt att analysera och bearbeta programmet.
- Det körbara resultatet är någon form av maskinspecifik binär kod.
Kontrollera också: - Handledning för kompilatordesign för nybörjare
Rollen som tolk
- Tolken konverterar källkoden rad för rad under RUN Time.
- Interpret översätter helt ett program skrivet på ett högnivåspråk till ett språk på maskinnivå.
- Tolken tillåter utvärdering och modifiering av programmet medan det körs.
- Relativt mindre tid åt att analysera och bearbeta programmet
- Programexekveringen är relativt långsam jämfört med kompilatorn
HÖG NIVÅ SPRÅK
Språk på hög nivå, som C, C++, JAVA, etc., är mycket nära engelska. Det gör programmeringsprocessen enkel. Det måste dock översättas till maskinspråk innan det körs. Denna översättningsprocess utförs antingen av en kompilator eller en tolk. Även känd som källkod.
MASKINKOD
Maskinspråk ligger mycket nära hårdvaran. Varje dator har sitt maskinspråk. Ett maskinspråksprogram är uppbyggda av serier av binära mönster. (T.ex. 110110) Det representerar de enkla operationer som bör utföras av datorn. Maskinspråksprogram är körbara så att de kan köras direkt.
OBJEKTKOD
Vid kompilering av källkod är maskinkoden som genereras för olika processorer som Intel, AMD och ARM olika. För att göra koden portabel konverteras källkoden först till objektkod. Det är en mellankod (liknande maskinkod) som ingen processor kommer att förstå. Vid körning konverteras objektkoden till maskinkoden för den underliggande plattformen.
Java är både kompilerad och tolkad.
För att utnyttja de relativa fördelarna med kompilatorer är tolkar något programmeringsspråk som Java är både sammanställda och tolkade. De Java koden i sig kompileras till Object Code. Vid körningstid JVM tolkar objektkoden till maskinkoden för måldatorn.
Kontrollera också: - Java Handledning för nybörjare: Lär dig kärnan Java Programmering