Programmētāji izmanto kompilatorus, lai avota kodu pārvērstu mašīnkodā.
Datori nolasa komandas no mašīnvalodas, kas rakstītas bināri, t.i., garas nulles un vieninieku virknes. Lai gan datori var efektīvi lasīt šo valodu, lielākā daļa programmētāju to nespēj. Tāpēc programmētāji strādā viņiem saprotamā programmēšanas valodā, ko viņi pēc tam pārtulko datoram saprotamajā mašīnas valodā. Lai gan daudzās jaunākās valodās tiek izmantoti tulki, kas programmas darbības laikā tulko no vienas uz otru, bet vecākas valodas programmēšanas valodās tika izmantoti kompilatori, kas šo tulkojumu veica pilnībā pirms datora izpildīšanas programma.
Priekšrocība: autonoma un efektīva
Viena no galvenajām kompilēto programmu priekšrocībām ir tā, ka tās ir autonomas vienības, kuras ir gatavas izpildei. Tā kā tie jau ir apkopoti mašīnvalodas bināros failos, lietotājam nav otras lietojumprogrammas vai pakotnes, kas būtu jāatjaunina. Ja programma ir kompilēta operētājsistēmai Windows x86 arhitektūrā, galalietotājam ir nepieciešama tikai Windows operētājsistēma, kas darbojas ar x86 arhitektūru. Turklāt iepriekš kompilēta pakotne var darboties ātrāk nekā tulks, kas apkopo avota kodu reāllaikā.
Dienas video
Trūkums: aparatūras specifika
Tā kā kompilators tulko avota kodu noteiktā mašīnvalodā, programmām ir jābūt īpaši kompilēts OS X, Windows vai Linux, kā arī īpaši 32 bitu vai 64 bitu arhitektūras. Programmētājam vai programmatūras uzņēmumam, kurš cenšas piedāvāt produktu pēc iespējas plašākai auditorijai, tas nozīmē, ka vienai un tai pašai lietojumprogrammai ir jāsaglabā vairākas pirmkoda versijas. Tādējādi tiek patērēts vairāk laika avota koda uzturēšanai un papildu problēmas, izlaižot atjauninājumus.
Priekšrocība: aparatūras optimizācija
Lai gan bloķēšanai noteiktā aparatūras pakotnē ir savas negatīvās puses, programmas kompilēšana var arī palielināt tās veiktspēju. Lietotāji var nosūtīt īpašas opcijas kompilatoriem attiecībā uz informāciju par aparatūru, kurā programma darbosies. Tas ļauj kompilatoram izveidot mašīnvalodas kodu, kas visefektīvāk izmanto norādīto aparatūru, nevis vispārīgāku kodu. Tas arī ļauj pieredzējušiem lietotājiem optimizēt programmas veiktspēju savos datoros.
Trūkums: Compil Times
Viens no kompilatora trūkumiem ir tas, ka tam faktiski ir jākompilē pirmkods. Lai gan mazo programmu, ko kodē daudzi iesācēju programmētāji, kompilēšana prasa nenozīmīgu laiku, lielāku lietojumprogrammu komplektu kompilēšana var aizņemt daudz laika. Ja programmētājiem nav jādara nekas cits kā vien jāgaida, līdz kompilators pabeigs darbu, šis laiks var palielināties, jo īpaši izstrādes posms, kad kods ir jāapkopo, lai pārbaudītu funkcionalitāti un novērstu problēmas kļūmes.