Hva er Compiler?
En kompilator er et dataprogram som forvandler kode skrevet på et høyt nivå programmeringsspråk til maskinkoden. Det er et program som oversetter den lesbare koden til et språk en datamaskinprosessor forstår (binær 1 og 0 bits). Datamaskinen behandler maskinkoden for å utføre de tilsvarende oppgavene.
En kompilator skal overholde syntaksregelen til det programmeringsspråket den er skrevet i. Kompilatoren er imidlertid bare et program og kan ikke fikse feil som er funnet i det programmet. Så hvis du gjør en feil, må du gjøre endringer i syntaksen til programmet ditt. Ellers vil det ikke kompilere.
Hva er tolk?
En tolk er et dataprogram som dekker hvert programnivå på høyt nivå i maskinkoden. Dette inkluderer kildekode, forhåndskompilert kode og skript. Både kompilator og tolker gjør den samme jobben som konverterer programmeringsspråk på høyere nivå til maskinkode. Imidlertid vil en kompilator konvertere koden til maskinkode (opprette en exe) før programmet kjøres. Tolker konverterer kode til maskinkode når programmet kjøres.
HOVEDFORSKJELL
- Kompilatoren forvandler kode skrevet på et høyt programmeringsspråk til maskinkoden på en gang før programmet kjøres, mens en tolk dekker hvert programnivå på høyt nivå, en etter en, til maskinkoden under programkjøringen.
- Kompilert kode går raskere mens tolket kode går langsommere.
- Compiler viser alle feil etter kompilering, derimot viser tolken feil på hver linje en etter en.
- Kompilatoren er basert på modell for oversettingskobling og lasting, mens tolk er basert på tolkningsmetode.
- Compiler tar et helt program mens tolken tar en enkelt linje med kode.
Forskjellen mellom kompilator og tolk
Grunnlag for forskjell | Kompilator | Tolk |
---|---|---|
Programmeringstrinn |
|
|
Fordel | Programkoden er allerede oversatt til maskinkode. Dermed er kodeutførelsestiden mindre. | Tolker er lettere å bruke, spesielt for nybegynnere. |
Ulempe | Du kan ikke endre programmet uten å gå tilbake til kildekoden. | Tolket programmer kan kjøres på datamaskiner som har den tilsvarende tolk. |
Maskinkode | Lagre maskinspråk som maskinkode på disken | Lagrer ikke maskinkoden i det hele tatt. |
Driftstid | Kompilert kode går raskere | Tolket kode går saktere |
Modell | Den er basert på språk oversettelse lenke-lasting modell. | Den er basert på tolkningsmetode. |
Programgenerering | Genererer utgangsprogram (i form av exe) som kan kjøres uavhengig av det opprinnelige programmet. | Ikke generer utgangsprogram. Så de vurderer kildeprogrammet til enhver tid under utførelsen. |
Henrettelse | Programutførelse er atskilt fra samlingen. Den utføres først etter at hele utdataprogrammet er kompilert. | Programutførelse er en del av tolkningsprosessen, så den utføres linje for linje. |
Minne krav | Målprogrammet kjøres uavhengig og krever ikke kompilatoren i minnet. | Tolken eksisterer i minnet under tolkningen. |
Passer best for | Bundet til den spesifikke målmaskinen og kan ikke porteres. C og C ++ er et mest populært programmeringsspråk som bruker kompilasjonsmodell. | For nettmiljøer, hvor belastningstider er viktige. På grunn av all den omfattende analysen som er gjort, tar kompilering relativt lengre tid å kompilere til og med 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 går raskere | Tolker ser kode linje for linje, og dermed er optimaliseringer ikke like robuste som kompilatorer |
Dynamisk skriving | Vanskelig å implementere da kompilatorer ikke kan forutsi hva som skjer på turtid. | Tolket språk støtter dynamisk skriving |
Bruk | Det er best egnet for produksjonsmiljøet | Det er best egnet for programmet og utviklingsmiljøet. |
Feilutførelse | Kompilator viser alle feil og advarsler på kompileringstidspunktet. Derfor kan du ikke kjøre programmet uten å fikse feil | Tolken leser en enkelt uttalelse og viser feilen hvis noen. Du må rette feilen for å tolke neste linje. |
Inngang | Det tar et helt program | Det tar en enkelt linje med kode. |
Produksjon | Compliers genererer mellomliggende machnie-kode. | Tolk genererer aldri noen mellomliggende machnie-kode. |
Feil | Vis alle feil etter, kompilering, alt på samme tid. | Viser alle feil på hver linje en etter en. |
Tilhørende programmeringsspråk | C, C ++, C #, Scala, Java bruker alle complier. | PHP, Perl, Ruby bruker en tolk. |
Kompilatorens rolle
- Compliers leser kildekoden, sender ut kjørbar kode
- Oversetter programvare skrevet på et høyere nivå 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 behandle programmet.
- Det kjørbare resultatet er en eller annen form for maskinspesifikk binær kode.
Tolkens rolle
- Tolken konverterer kildekoden linje for linje i løpet av RUN Time.
- Interpret oversetter et program skrevet på et høyt nivå språk til maskinsnivå språk.
- Tolk tillater evaluering og modifisering av programmet mens det kjøres.
- Relativt mindre tid brukt på å analysere og behandle programmet
- Programutførelsen er relativt treg sammenlignet med kompilatoren
SPRÅK MED HØY NIVÅ
Språk på høyt nivå, som C, C ++, JAVA osv., Er veldig nær engelsk. Det gjør programmeringsprosessen enkel. Det 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 veldig nær maskinvaren. Hver datamaskin har maskinspråk. Et maskinspråkprogram består av serier med binært mønster. (F.eks. 110110) Den representerer de enkle operasjonene som skal utføres av datamaskinen. Maskinspråklige programmer kan kjøres slik at de kan kjøres direkte.
MÅLKODE
Ved kompilering av kildekode er maskinkoden generert for forskjellige prosessorer som Intel, AMD, en ARM annerledes. tFor å gjøre koden bærbar, blir kildekoden først konvertert til Objektkode. Det er en mellomledd kode (som maskinkode) som ingen prosessorer vil forstå. På kjøretid konverteres objektkoden til maskinkoden til den underliggende plattformen.
Java er både kompilert og tolket.
For å utnytte relative fordeler med kompilatorer er tolker, noen programmeringsspråk som Java er både kompilert og tolket. Selve Java-koden er samlet inn i Object Code. På kjøretid tolker JVM objektkoden i maskinkoden til måldatamaskinen.