Computere læser kommandoer fra et maskinsprog skrevet på binært, dvs. lange strenge med nuller og dem. Mens computere kan læse dette sprog effektivt, kan de fleste menneskelige programmerere ikke. Derfor arbejder programmerere på et programmeringssprog, de kan forstå, som de derefter oversætter til det maskinsprog, som computeren kan forstå. Mens mange nyere sprog bruger tolke, der oversætter fra det ene til det andet, når programmet kører, brugte ældre programmeringssprog compilere, der gjorde denne oversættelse helt, før computeren udførte programmet.

...

Fordel: Selvstændig og effektiv

En stor fordel ved programmer, der er samlet, er, at de er selvstændige enheder, der er klar til at blive udført. Da de allerede er samlet til maskinsprogede binære filer, er der ingen anden applikation eller pakke, som brugeren skal holde sig ajour. Hvis et program er kompileret til Windows på en x86-arkitektur, har slutbrugeren kun brug for et Windows-operativsystem, der kører på en x86-arkitektur. Derudover kan en forudkompileret pakke køre hurtigere end en tolk, der samler kildekode i realtid.

Ulempe: Hardwarespecifik

Da en kompilator oversætter kildekoden til et specifikt maskinsprog, skal programmer specifikt kompileres til OS X, Windows eller Linux, samt specifikt til 32-bit eller 64-bit arkitekturer. For en programmør eller softwarevirksomhed, der prøver at få et produkt ud til det bredest mulige publikum, betyder det at opretholde flere versioner af kildekoden til den samme applikation. Dette resulterer i mere tid brugt på vedligeholdelse af kildekoder og ekstra problemer, når der frigives opdateringer.

Fordel: Hardwareoptimering

Selvom det at være låst i en bestemt hardwarepakke har sine ulemper, kan kompilering af et program også øge dens ydelse. Brugere kan sende specifikke indstillinger til compilere vedrørende detaljerne om den hardware, programmet kører på. Dette gør det muligt for kompilatoren at oprette maskinsprogekode, der gør den mest effektive brug af den specificerede hardware i modsætning til mere generisk kode. Dette giver også avancerede brugere mulighed for at optimere et programs ydelse på deres computere.

Ulempe: Samle tider

En af ulemperne ved at have en compiler er, at den faktisk skal udarbejde kildekode. Mens de små programmer, som mange nybegynderprogrammere koder, tager trivielle mængder tid at udarbejde, kan større applikationssuiter tage betydelige mængder tid at samle. Når programmerere ikke har andet at gøre end at vente på, at compileren er færdig, kan denne gang tilføjes - især i udviklingsstadiet, hvor koden skal kompileres for at teste funktionalitet og fejlfinde fejl.