Compiler vs Interpreter: compleet verschil tussen Compiler en Interpreter

Inhoudsopgave:

Anonim

Wat is een compiler?

Een compiler is een computerprogramma dat code die is geschreven in een programmeertaal op hoog niveau, omzet in de machinecode. Het is een programma dat de door mensen leesbare code vertaalt naar een taal die een computerprocessor begrijpt (binaire 1 en 0 bits). De computer verwerkt de machinecode om de bijbehorende taken uit te voeren.

Een compiler moet voldoen aan de syntaxisregel van de programmeertaal waarin deze is geschreven. De compiler is echter alleen een programma en kan geen fouten herstellen die in dat programma zijn gevonden. Dus als u een fout maakt, moet u wijzigingen aanbrengen in de syntaxis van uw programma. Anders zal het niet compileren.

Wat is een tolk?

Een tolk is een computerprogramma dat elke programmaverklaring op hoog niveau omzet in de machinecode. Dit omvat broncode, vooraf gecompileerde code en scripts. Zowel de compiler als de tolken doen hetzelfde werk, namelijk het converteren van programmeertaal op een hoger niveau naar machinecode. Een compiler zal de code echter in machinecode converteren (een exe maken) voordat het programma wordt uitgevoerd. Tolken zetten code om in machinecode wanneer het programma wordt uitgevoerd.

BELANGRIJK VERSCHIL

  • Compiler transformeert code die is geschreven in een programmeertaal op hoog niveau in de machinecode, in één keer, voordat het programma wordt uitgevoerd, terwijl een interpreter elke programmavoorschrift op hoog niveau één voor één omzet in de machinecode tijdens het uitvoeren van het programma.
  • Gecompileerde code werkt sneller terwijl geïnterpreteerde code langzamer werkt.
  • Compiler geeft alle fouten weer na compilatie, aan de andere kant geeft de Interpreter de fouten van elke regel een voor een weer.
  • Compiler is gebaseerd op het model voor het koppelen van vertalingen, terwijl Interpreter is gebaseerd op de interpretatiemethode.
  • Compiler neemt een heel programma, terwijl de Interpreter een enkele regel code gebruikt.

Verschil tussen compiler en tolk

Basis van verschil Compiler Tolk
Programmeerstappen
  • Maak het programma.
  • Compile analyseert of analyseert alle taalverklaringen op juistheid. Als het onjuist is, wordt er een fout gegenereerd
  • Als er geen fout is, converteert de compiler de broncode naar machinecode.
  • Het koppelt verschillende codebestanden aan een uitvoerbaar programma (bekend als exe)
  • Voer het programma uit
  • Maak het programma
  • Geen koppeling van bestanden of genereren van machinecodes
  • Bronverklaringen regel voor regel uitgevoerd TIJDENS de uitvoering
Voordeel De programmacode is al vertaald in machinecode. De uitvoeringstijd van de code is dus korter. Tolken zijn gemakkelijker te gebruiken, vooral voor beginners.
Nadeel U kunt het programma niet wijzigen zonder terug te gaan naar de broncode. Geïnterpreteerde programma's kunnen worden uitgevoerd op computers met de bijbehorende tolk.
Machine code Sla de machinetaal op als machinecode op de schijf Helemaal geen machinecode opslaan.
Looptijd Gecompileerde code werkt sneller Geïnterpreteerde code wordt langzamer uitgevoerd
Model Het is gebaseerd op een taalvertaal-koppeling-laadmodel. Het is gebaseerd op de interpretatiemethode.
Programma generatie Genereert een uitvoerprogramma (in de vorm van exe) dat onafhankelijk van het originele programma kan worden uitgevoerd. Genereer geen uitvoerprogramma. Dus evalueren ze het bronprogramma op elk moment tijdens de uitvoering.
Uitvoering De uitvoering van het programma staat los van de compilatie. Het presteerde pas nadat het volledige uitvoerprogramma was gecompileerd. Programma-uitvoering is een onderdeel van het interpretatieproces, dus het wordt regel voor regel uitgevoerd.
Geheugenvereiste Het doelprogramma wordt onafhankelijk uitgevoerd en vereist geen compiler in het geheugen. De tolk bestaat tijdens de vertolking in het geheugen.
Meest geschikt voor Gebonden aan de specifieke doelmachine en kan niet worden overgedragen. C en C ++ zijn de meest populaire programmeertalen die een compilatiemodel gebruiken. Voor webomgevingen, waar laadtijden belangrijk zijn. Omdat alle uitvoerige analyses zijn uitgevoerd, duurt het compileren relatief langer om zelfs kleine code te compileren die mogelijk niet meerdere keren wordt uitgevoerd. In dergelijke gevallen zijn tolken beter.
Code-optimalisatie De compiler ziet de volledige code van tevoren. Daarom voeren ze veel optimalisaties uit waardoor code sneller wordt uitgevoerd Tolken zien code regel voor regel, en dus zijn optimalisaties niet zo robuust als compilers
Dynamisch typen Moeilijk te implementeren omdat samenstellers niet kunnen voorspellen wat er op de beurt gebeurt. Geïnterpreteerde talen ondersteunen dynamisch typen
Gebruik Het is het meest geschikt voor de productieomgeving Het is het meest geschikt voor het programma en de ontwikkelingsomgeving.
Fout bij uitvoering Compiler geeft alle fouten en waarschuwingen weer tijdens het compileren. Daarom kunt u het programma niet uitvoeren zonder fouten op te lossen De tolk leest een enkele instructie en toont de eventuele fout. U moet de fout corrigeren om de volgende regel te interpreteren.
Invoer Er is een heel programma voor nodig Er is een enkele regel code voor nodig.
Uitvoer Compliers genereert tussenliggende machinecode. De tolk genereert nooit een tussenliggende machnie-code.
Fouten Geef alle fouten weer na, compilatie, allemaal tegelijk. Geeft alle fouten van elke regel een voor een weer.
Betreffende programmeertalen C, C ++, C #, Scala, Java gebruiken allemaal complier. PHP, Perl, Ruby gebruikt een tolk.

Rol van de samensteller

  • Compliers leest de broncode, voert uitvoerbare code uit
  • Vertaalt software die is geschreven in een taal van een hoger niveau in instructies die de computer kan begrijpen. Het converteert de tekst die een programmeur schrijft naar een formaat dat de CPU kan begrijpen.
  • Het compilatieproces is relatief ingewikkeld. Het besteedt veel tijd aan het analyseren en verwerken van het programma.
  • Het uitvoerbare resultaat is een vorm van machinespecifieke binaire code.

Rol van tolk

  • De tolk converteert de broncode regel voor regel tijdens de RUN-tijd.
  • Interpret vertaalt een programma dat is geschreven in een taal op hoog niveau volledig naar een taal op machineniveau.
  • Interpreter maakt evaluatie en wijziging van het programma mogelijk terwijl het wordt uitgevoerd.
  • Relatief minder tijd besteed aan het analyseren en verwerken van het programma
  • De uitvoering van het programma is relatief traag in vergelijking met de compiler

TALEN OP HOOG NIVEAU

Talen op hoog niveau, zoals C, C ++, JAVA, enz., Lijken erg op Engels. Het maakt het programmeerproces eenvoudig. Het moet echter vóór uitvoering in machinetaal worden vertaald. Dit vertaalproces wordt uitgevoerd door een compiler of een tolk. Ook wel broncode genoemd.

MACHINE CODE

Machinetalen liggen erg dicht bij de hardware. Elke computer heeft zijn machinetaal. Een machinetaalprogramma bestaat uit reeksen van binaire patronen. (Bijv. 110110) Het vertegenwoordigt de eenvoudige bewerkingen die door de computer moeten worden uitgevoerd. Machinetaalprogramma's zijn uitvoerbaar, zodat ze direct kunnen worden uitgevoerd.

VOORWERP CODE

Bij het compileren van de broncode is de machinecode die wordt gegenereerd voor verschillende processors zoals Intel, AMD, een ARM anders. tOm code draagbaar te maken, wordt de broncode eerst geconverteerd naar objectcode. Het is een tussencode (vergelijkbaar met machinecode) die geen enkele processor zal begrijpen. Tijdens runtime wordt de objectcode geconverteerd naar de machinecode van het onderliggende platform.

Java is zowel gecompileerd als geïnterpreteerd.

Om de relatieve voordelen van compilers te benutten, zijn tolken een programmeertaal zoals Java zowel gecompileerd als geïnterpreteerd. De Java-code zelf wordt gecompileerd tot objectcode. Tijdens runtime interpreteert de JVM de objectcode in machinecode van de doelcomputer.