Програмистите използват компилатори, за да превърнат изходния код в машинен код.
Компютрите четат команди от машинен език, написани в двоичен вид, т.е. дълги низове от нули и единици. Докато компютрите могат да четат този език ефективно, повечето програмисти хора не могат. Ето защо програмистите работят на език за програмиране, който разбират, който след това превеждат на машинния език, който компютърът може да разбере. Докато много по-нови езици използват интерпретатори, които превеждат от един на друг, докато програмата работи, по-стари езиците за програмиране са използвали компилатори, които са направили този превод изцяло преди компютърът да изпълни програма.
Предимство: Самостоятелен и ефективен
Едно основно предимство на компилираните програми е, че те са самостоятелни единици, които са готови за изпълнение. Тъй като те вече са компилирани в двоични файлове на машинен език, няма второ приложение или пакет, който потребителят трябва да поддържа актуален. Ако дадена програма е компилирана за Windows на архитектура x86, крайният потребител се нуждае само от операционна система Windows, работеща на архитектура x86. Освен това, предварително компилиран пакет може да работи по-бързо от интерпретатор, който компилира изходен код в реално време.
Видео на деня
Недостатък: Специфичен за хардуера
Тъй като компилаторът превежда изходния код на специфичен машинен език, програмите трябва да бъдат специално компилиран за OS X, Windows или Linux, както и специално за 32-битови или 64-битови архитектури. За програмист или софтуерна компания, която се опитва да предложи продукт на възможно най-широката аудитория, това означава поддържане на множество версии на изходния код за едно и също приложение. Това води до повече време, прекарано в поддръжка на изходния код и допълнителни проблеми при пускането на актуализации.
Предимство: Хардуерна оптимизация
Въпреки че заключването в конкретен хардуерен пакет има своите недостатъци, компилирането на програма също може да повиши нейната производителност. Потребителите могат да изпращат конкретни опции на компилаторите относно подробностите за хардуера, на който програмата ще работи. Това позволява на компилатора да създаде код на машинен език, който използва най-ефективно посочения хардуер, за разлика от по-генеричния код. Това също така позволява на напреднали потребители да оптимизират работата на програмата на своите компютри.
Недостатък: Време за компилиране
Един от недостатъците на наличието на компилатор е, че той всъщност трябва да компилира изходния код. Докато малките програми, които много начинаещи програмисти кодират, отнемат незначително време за компилиране, по-големите пакети приложения могат да отнемат значително време за компилиране. Когато програмистите нямат какво да правят, освен да изчакат компилаторът да завърши, това време може да се добави – особено по време на етапът на разработка, когато кодът трябва да бъде компилиран, за да се тества функционалността и да се отстранят неизправности бъгове.