Programmeurs gebruiken compilers om broncode om te zetten in machinecode.
Computers lezen commando's van een machinetaal die in binair is geschreven, d.w.z. lange reeksen van nullen en enen. Hoewel computers deze taal efficiënt kunnen lezen, kunnen de meeste menselijke programmeurs dat niet. Daarom werken programmeurs in een programmeertaal die ze kunnen begrijpen, die ze vervolgens vertalen naar de machinetaal die de computer kan begrijpen. Hoewel veel nieuwere talen tolken gebruiken die van de ene naar de andere vertalen terwijl het programma draait, zijn oudere programmeertalen gebruikten compilers die deze vertaling volledig maakten voordat de computer de programma.
Voordeel: op zichzelf staand en efficiënt
Een groot voordeel van programma's die worden gecompileerd, is dat het op zichzelf staande eenheden zijn die klaar zijn om te worden uitgevoerd. Omdat ze al zijn gecompileerd in binaire bestanden in machinetaal, is er geen tweede applicatie of pakket dat de gebruiker up-to-date hoeft te houden. Als een programma voor Windows is gecompileerd op een x86-architectuur, heeft de eindgebruiker alleen een Windows-besturingssysteem nodig dat draait op een x86-architectuur. Bovendien kan een voorgecompileerd pakket sneller werken dan een tolk die de broncode in realtime compileert.
Video van de dag
Nadeel: hardwarespecifiek
Omdat een compiler de broncode vertaalt naar een specifieke machinetaal, moeten programma's specifiek gecompileerd voor OS X, Windows of Linux, maar ook specifiek voor 32-bit of 64-bit architecturen. Voor een programmeur of softwarebedrijf dat probeert een product onder een zo breed mogelijk publiek te brengen, betekent dit het onderhouden van meerdere versies van de broncode voor dezelfde toepassing. Dit resulteert in meer tijd die wordt besteed aan het onderhoud van de broncode en extra problemen bij het uitbrengen van updates.
Voordeel: hardware-optimalisatie
Opgesloten zitten in een specifiek hardwarepakket heeft zijn nadelen, maar het compileren van een programma kan ook de prestaties verbeteren. Gebruikers kunnen specifieke opties naar compilers sturen met betrekking tot de details van de hardware waarop het programma zal draaien. Hierdoor kan de compiler machinetaalcode maken die het meest efficiënte gebruik maakt van de gespecificeerde hardware, in tegenstelling tot meer generieke code. Hierdoor kunnen geavanceerde gebruikers ook de prestaties van een programma op hun computers optimaliseren.
Nadeel: Compileertijden
Een van de nadelen van het hebben van een compiler is dat deze daadwerkelijk de broncode moet compileren. Terwijl de kleine programma's die veel beginnende programmeurs coderen, triviale hoeveelheden tijd in beslag nemen om te compileren, kunnen grotere applicatiesuites veel tijd kosten om te compileren. Als programmeurs niets anders te doen hebben dan te wachten tot de compiler klaar is, kan deze tijd oplopen, vooral tijdens de ontwikkelingsfase, wanneer de code moet worden gecompileerd om de functionaliteit te testen en problemen op te lossen fouten.