Computadores ler comandos de uma linguagem de máquina escrito em binário, ou seja , longas seqüências de zeros e uns. Embora os computadores podem ler essa linguagem de forma eficiente, a maioria dos programadores humanos não podem. É por isso que programadores trabalham em uma linguagem de programação que eles possam entender , que , em seguida, traduzir para a linguagem de máquina do computador pode entender. Enquanto muitas línguas mais recentes usam intérpretes que traduzem de um para o outro como o programa é executado, linguagens de programação mais velhos compiladores que fizeram esta tradução inteiramente antes que o computador usado executado o programa. Vantagem: auto-suficiente e eficiente
Uma grande vantagem de programas que são compilados é que eles são unidades auto-suficientes que estão prontos para serem executados. Porque eles já são compilados em binários em linguagem de máquina , não há segundo aplicativo ou pacote que o usuário tem que manter- se atualizado . Se um programa é compilado para Windows em uma arquitetura x86 , o usuário final só precisa de um sistema operacional Windows em execução em uma arquitetura x86. Além disso, um pacote pré-compilado pode correr mais rápido do que um intérprete compilar o código fonte em tempo real
Desvantagem: . Hardware Específico
Como um compilador traduz o código -fonte em uma máquina específica linguísticas, programas têm de ser especificamente compilado para OS X, Windows ou Linux , bem como especificamente para arquiteturas de 32 bits ou de 64 bits. Para um programador ou empresa de software tentando fazer com que um produto para o público mais amplo possível , isto significa manter várias versões do código-fonte para a mesma aplicação . Isso resulta em mais tempo gasto em manutenção de código fonte e problemas extra quando atualizações são liberadas
Vantagem: . Otimização Hardware
Ao ser preso a um hardware específico pacote tem as suas desvantagens , a compilação de um programa também pode aumentar o seu desempenho. Os usuários podem enviar opções específicas para compiladores sobre os detalhes do hardware , o programa será executado. Isso permite que o compilador para criar código de linguagem de máquina que faz o uso mais eficiente do hardware especificado, em oposição a um código mais genérico. Isso também permite que os usuários avançados para otimizar o desempenho de um programa em seus computadores
Desvantagem: . Tempos de compilação
Uma das desvantagens de ter um compilador é que deve realmente compilar código fonte. Enquanto os pequenos programas que codificam muitos programadores iniciantes levam quantias triviais de tempo para compilar , maiores suítes de aplicativos pode levar uma quantidade significativa de tempo para compilar . Quando os programadores não têm nada a fazer a não ser esperar que o compilador para terminar, este tempo pode adicionar até --- especialmente durante a fase de desenvolvimento, quando o código tem de ser compilado , a fim de testar a funcionalidade e solucionar falhas.