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. |
| Code Optimering | 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 Typing | Svรฅrt att implementera eftersom kompilatorer inte kan fรถrutsรคga vad som hรคnder vid tur. | Tolkade sprรฅk stรถder dynamisk 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 genereras maskinkoden fรถr olika processorer som Intel, AMD och ARM olika. Fรถr att gรถra kod portabel konverteras kรคllkoden fรถrst till objektkod. CodeDet รคr en mellanliggande kod (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 sjรคlva koden kompileras till Object CodeVid kรถrning, den JVM tolkar objektkoden till maskinkoden fรถr mรฅldatorn.
Kontrollera ocksรฅ: - Java Handledning fรถr nybรถrjare: Lรคr dig kรคrnan Java Programmering
