Wat is Compiler?
een compiler is een computerprogramma dat code die geschreven is 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 het geschreven is. De compiler is echter slechts EEN programma en kan geen fouten herstellen die in dat programma zijn gevonden. Dus, als je een fout maakt, je nodig hebt om wijzigingen in de syntaxis van uw programma. Anders zal het niet compileren.
Wat is Interpreter?
een interpreter is een computerprogramma, dat elk high-level programma statement in de machine code bedekt. Dit omvat broncode, vooraf gecompileerde code en scripts. Zowel de compiler als de tolken doen hetzelfde werk dat is het omzetten van een hogere programmeertaal naar machinecode. Echter, een compiler zal de code omzetten in machine code (Maak een exe) voordat het programma wordt uitgevoerd. Tolken omzetten code in machine code wanneer het programma wordt uitgevoerd.
sleutelverschil
- Compiler transformeert code geschreven in een programmeertaal op hoog niveau in de machinecode, in één keer, voordat het programma wordt uitgevoerd, terwijl een Interpreter elk programmastatement op hoog niveau dekt, één door één, in de machine code, tijdens het uitvoeren van het programma.
- gecompileerde code draait sneller terwijl geà nterpreteerde code langzamer loopt.
- Compiler toont alle fouten na compilatie, aan de andere kant toont de Interpreter fouten van elke regel één voor één.
- Compiler is gebaseerd op translation linking-loading model, terwijl Interpreter is gebaseerd op Interpretatiemethode.
- Compiler neemt een volledig programma terwijl de Interpreter een enkele regel code neemt.
verschil tussen Compiler en Interpreter
basis van verschil | Compiler | Interpreter | programmeerstappen |
|
|
---|---|---|
voordeel | de programmacode is al vertaald in machine code. Dus, het code uitvoeringstijd is minder. | tolken zijn gemakkelijker te gebruiken, vooral voor beginners. |
nadeel | u kunt het programma niet wijzigen zonder terug te gaan naar de broncode. | geà nterpreteerd programma ‘ s kunnen draaien op computers die de bijbehorende interpreter hebben. |
machinecode | machinetaal opslaan als machinetaal op de schijf | machinecode wordt helemaal niet opgeslagen. |
Running time | gecompileerde code run faster | geà Nterpreteerde code run slower | Model | het is gebaseerd op het model voor het laden van taalvertalingen. | het is gebaseerd op Interpretatiemethode. |
Programmageneratie | genereert uitvoerprogramma (in de vorm van exe) dat onafhankelijk van het oorspronkelijke programma kan worden uitgevoerd. | genereer geen uitvoerprogramma. Dus ze evalueren het bronprogramma op elk moment tijdens de uitvoering. |
uitvoering | uitvoering van het programma staat los van de compilatie. Het werd pas uitgevoerd nadat het gehele uitvoerprogramma is gecompileerd. | programma-uitvoering is een onderdeel van het interpretatieproces, dus het wordt regel voor regel uitgevoerd. |
Geheugenbehoefte | doelprogramma wordt onafhankelijk uitgevoerd en vereist geen compiler in het geheugen. | de interpreter bestaat in het geheugen tijdens de interpretatie. |
het meest geschikt voor | Begrensd aan de specifieke doelmachine en kan niet worden geport. C en c++ zijn een meest populaire programmeertaal die gebruik maakt van compilatie model. | voor webomgevingen, waar laadtijden belangrijk zijn. Door alle uitputtende analyse wordt gedaan, compiles nemen relatief meer tijd om zelfs kleine code die niet meerdere keren worden uitgevoerd compileren. In dergelijke gevallen zijn tolken beter. |
Codeoptimalisatie | de compiler ziet de volledige code vooraf. Daarom voeren ze veel optimalisaties uit waardoor code sneller draait | Interpreters zien code regel voor regel, en dus zijn optimalisaties niet zo robuust als compilers | dynamisch typen | moeilijk te implementeren omdat compilers niet kunnen voorspellen wat er gebeurt tijdens het draaien. | geïnterpreteerde talen ondersteunen dynamisch typen |
gebruik | het is het meest geschikt voor de productieomgeving | het is het meest geschikt voor het programma-en ontwikkelingsmilieu. |
foutuitvoering | Compiler toont alle fouten en waarschuwingen op het compilatietijdstip. Daarom kunt u het programma niet uitvoeren zonder fouten te herstellen | de interpreter leest een enkele instructie en toont de fout als die er is. U moet de fout corrigeren om de volgende regel te interpreteren. |
Input | het duurt een volledig programma | het duurt een enkele regel code. |
uitvoer | Compliers genereert intermediaire machnie-code. | Interpreter genereert nooit enige tussenliggende machnie code. |
fouten | Toon alle fouten na compilatie, allemaal tegelijkertijd. | toont alle fouten van elke regel één voor één. |
betreffende programmeertalen | C, C++, C#, Scala, Java gebruiken allemaal complier. | PHP, Perl, Ruby gebruikt een interpreter. |
rol van de Compiler
- Compliers leest de broncode, uitvoerbare code
- vertaalt software geschreven in een hogere taal 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 machine-specifieke binaire code.
rol van Interpreter
- de interpreter converteert de broncode regel voor regel tijdens de looptijd.
- interpreteer volledig vertaalt een programma geschreven in een taal op hoog niveau in machinetaal.
- 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
- programma uitvoering is relatief traag in vergelijking met compiler
HIGH-LEVEL talen
High-level talen, zoals C, C++, JAVA, etc., zijn zeer dicht bij Engels. Het maakt programmeerproces eenvoudig. Echter, het moet worden vertaald in machinetaal voor de uitvoering. Dit vertaalproces wordt uitgevoerd door een compiler of een interpreter. Ook bekend als broncode.
machinecode
Machinetalen zijn zeer dicht bij de hardware. Elke computer heeft zijn machinetaal. Een machine taal programma ‘ s zijn opgebouwd uit een reeks van binaire patroon. (Bijvoorbeeld. 110110) het vertegenwoordigt de eenvoudige handelingen die door de computer moeten worden uitgevoerd. Machine taal programma ‘ s zijn uitvoerbaar, zodat ze direct kunnen worden uitgevoerd.
objectcode
bij het compileren van broncode is de machinecode die wordt gegenereerd voor verschillende processors zoals Intel, AMD, een ARM anders. om code portable te maken, wordt de broncode eerst geconverteerd naar objectcode. Het is een intermediaire code (vergelijkbaar met machine code) die geen enkele processor zal begrijpen. Tijdens het draaien wordt de objectcode geconverteerd naar de machinecode van het onderliggende platform.
Java wordt gecompileerd en geïnterpreteerd.
om relatieve voordelen van compilers te benutten zijn interpreters sommige programmeertaal zoals Java zijn zowel gecompileerd als geïnterpreteerd. De Java-code zelf is gecompileerd in objectcode. Tijdens het draaien interpreteert de JVM de objectcode in machinecode van de doelcomputer.