Kompilator vs tolk - forskjellen mellom dem
Nรธkkelforskjell mellom kompilator og tolk
- Kompilator transformerer kode skrevet i et programmeringssprรฅk pรฅ hรธyt nivรฅ til maskinkoden med en gang fรธr programmet kjรธrer, mens en tolk konverterer hver programsetning pรฅ hรธyt nivรฅ, รฉn etter รฉn, til maskinkoden under programkjรธring.
- Kompilert kode kjรธrer raskere, mens tolket kode kjรธrer langsommere.
- Kompilator viser alle feil etter kompilering, pรฅ den annen side viser tolken feil pรฅ hver linje en etter en.
- Kompileren er basert pรฅ oversettelseskoblings-lastningsmodellen, mens tolken er basert pรฅ tolkningsmetoden.
- Kompileren tar et helt program, mens tolken tar en enkelt linje med kode.

Hva er kompilator?
En kompilator er et dataprogram som transformerer kode skrevet i et programmeringssprรฅk pรฅ hรธyt nivรฅ til maskinkoden. Det er et program som oversetter den menneskelesbare koden til et sprรฅk en dataprosessor forstรฅr (binรฆr 1 og 0 bits). Datamaskinen behandler maskinkoden for รฅ utfรธre de tilsvarende oppgavene.
A kompilatoren bรธr overholde syntaksregelen for det programmeringssprรฅket den er skrevet pรฅ. Imidlertid er kompilatoren bare et program og kan ikke fikse feil funnet i det programmet. Sรฅ hvis du gjรธr en feil, mรฅ du gjรธre endringer i syntaksen til programmet ditt. Ellers vil den ikke kompilere.
Hva er tolk?
En tolk er et dataprogram som konverterer hver programsetning pรฅ hรธyt nivรฅ til maskinkoden. Dette inkluderer kildekode, forhรฅndskompilert kode og skript. Bรฅde kompilator og tolker gjรธr den samme jobben som er รฅ konvertere hรธyere nivรฅ programmeringssprรฅk til maskinkode. Imidlertid vil en kompilator konvertere koden til maskinkode (lage en exe) fรธr programmet kjรธres. Tolker konverterer kode til maskinkode nรฅr programmet kjรธres.
Forskjellen mellom kompilator og tolk
Her er viktige forskjeller mellom kompilator og tolk:
| Grunnlag for forskjell | kompilatoren | Tolk |
|---|---|---|
| Programmeringstrinn |
|
|
| Fordelene | Programkoden er allerede oversatt til maskinkode. Dermed er utfรธrelsestiden for koden mindre. | Tolker er enklere รฅ bruke, spesielt for nybegynnere. |
| Ulempe | Du kan ikke endre programmet uten รฅ gรฅ tilbake til kildekoden. | Tolkede programmer kan kjรธres pรฅ datamaskiner som har den tilsvarende tolken. |
| Maskinkode | Lagre maskinsprรฅk som maskinkode pรฅ disken | Lagrer ikke maskinkoden i det hele tatt. |
| Gangtid | Den kompilerte koden kjรธrer raskere | Tolket kode kjรธrer langsommere |
| Modell | Den er basert pรฅ sprรฅkoversettelsesmodell for koblingslasting. | Den er basert pรฅ tolkningsmetode. |
| Programgenerering | Genererer utdataprogram (i form av exe) som kan kjรธres uavhengig av det originale programmet. | Ikke generer utdataprogram. Sรฅ de evaluerer kildeprogrammet til enhver tid under utfรธrelse. |
| Gjennomfรธring | Programutfรธrelse er atskilt fra kompileringen. Det utfรธres fรธrst etter at hele utdataprogrammet er kompilert. | Programutfรธrelse er en del av tolkningsprosessen, sรฅ den utfรธres linje for linje. |
| Minnekrav | Target programmet kjรธres uavhengig og krever ikke kompilatoren i minnet. | Tolken eksisterer i minnet under tolkning. |
| Passer best for | Avgrenset til den spesifikke mรฅlmaskinen og kan ikke porteres. C og C++ er et mest populรฆrt programmeringssprรฅk som bruker kompileringsmodell. | For nettmiljรธer, hvor lastetider er viktige. Pรฅ grunn av all den uttรธmmende analysen som er gjort, tar kompilering relativt lengre tid รฅ kompilere selv liten kode som kanskje ikke kjรธres flere ganger. I slike tilfeller er tolker bedre. |
| Kodeoptimalisering | Kompilatoren ser hele koden pรฅ forhรฅnd. Derfor utfรธrer de mange optimaliseringer som gjรธr at koden kjรธrer raskere | Tolker ser kode linje for linje, og dermed er ikke optimaliseringer like robuste som kompilatorer |
| Dynamisk skriving | Vanskelig รฅ implementere da kompilatorer ikke kan forutsi hva som skjer ved tur. | Tolkede sprรฅk stรธtter dynamisk typing |
| bruk | Det er best egnet for produksjonsmiljรธet | Det passer best for program- og utviklingsmiljรธet. |
| Feil utfรธrelse | Kompileren viser alle feil og advarsler pรฅ kompileringstidspunktet. Derfor kan du ikke kjรธre programmet uten รฅ fikse feil | Tolken leser en enkelt setning og viser feilen hvis noen. Du mรฅ rette feilen for รฅ tolke neste linje. |
| Input | Det tar et helt program | Det tar en enkelt linje med kode. |
| Produksjon | Komplianter genererer mellommaskinkode. | Tolk genererer aldri noen mellomliggende maskinkode. |
| feil | Vis alle feil etter, kompilering, alle samtidig. | Viser alle feil pรฅ hver linje en etter en. |
| Angรฅende programmeringssprรฅk | C, C++, C#, Scala, Java all bruk complier. | PHP, Perl, Rubin bruker tolk. |
Rolle som kompilator
- Komplianter leser kildekoden, sender ut kjรธrbar kode
- Oversetter programvare skrevet pรฅ et overordnet sprรฅk til instruksjoner som datamaskinen kan forstรฅ. Den konverterer teksten som en programmerer skriver til et format CPU kan forstรฅ.
- Prosessen med kompilering er relativt komplisert. Det bruker mye tid pรฅ รฅ analysere og bearbeide programmet.
- Det kjรธrbare resultatet er en form for maskinspesifikk binรฆr kode.
Sjekk ogsรฅ: - Opplรฆring i kompilatordesign for nybegynnere
Rolle som tolk
- Tolken konverterer kildekoden linje for linje under RUN Time.
- Interpret oversetter fullstendig et program skrevet pรฅ et hรธynivรฅsprรฅk til maskinnivรฅsprรฅk.
- Tolken tillater evaluering og modifikasjon av programmet mens det kjรธres.
- Relativt mindre tid brukt pรฅ รฅ analysere og behandle programmet
- Programutfรธrelse er relativt treg sammenlignet med kompilator
HรYT NIVร SPRร K
Sprรฅk pรฅ hรธyt nivรฅ, som C, C++, JAVA, etc., er veldig nรฆr engelsk. Det gjรธr programmeringsprosessen enkel. Den mรฅ imidlertid oversettes til maskinsprรฅk fรธr utfรธrelse. Denne oversettelsesprosessen utfรธres enten av en kompilator eller en tolk. Ogsรฅ kjent som kildekode.
MASKINKODE
Maskinsprรฅk er svรฆrt nรฆr maskinvaren. Hver datamaskin har sitt maskinsprรฅk. En maskinsprรฅkprogrammer bestรฅr av serier med binรฆre mรธnstre. (F.eks. 110110) Den representerer de enkle operasjonene som skal utfรธres av datamaskinen. Maskinsprรฅkprogrammer er kjรธrbare slik at de kan kjรธres direkte.
Mร LKODE
Ved kompilering av kildekode er maskinkoden generert for forskjellige prosessorer som Intel, AMD og ARM forskjellig. For รฅ gjรธre koden portabel, konverteres kildekoden fรธrst til objektkode. Det er en mellomledd kode (lik maskinkode) som ingen prosessor vil forstรฅ. Ved kjรธretid konverteres objektkoden til maskinkoden til den underliggende plattformen.
Java er bรฅde kompilert og tolket.
For รฅ utnytte de relative fordelene med kompilatorer er tolker noen programmeringssprรฅk som Java er bรฅde kompilert og tolket. De Java selve koden er kompilert til Object Code. Pรฅ kjรธretid er JVM tolker objektkoden til maskinkoden til mรฅldatamaskinen.
Sjekk ogsรฅ: - Java Veiledning for nybegynnere: Lรฆr kjernen Java Programmering
