I linguaggi di programmazione come C e Java sono linguaggi di alto livello che richiedono la compilazione del codice sorgente inserito dal programmatore. Una volta che il compilatore ha elaborato il codice, produce un insieme di codice oggetto che può essere passato ad altri programmi o eseguito su un sistema informatico.
Quando si crea codice sorgente in un linguaggio orientato agli oggetti come C++, il programmatore può utilizzare istanze di oggetti per rendere più facile seguire il codice sorgente. Una volta che il codice è stato compilato, il codice oggetto risultante sarà difficile da leggere per un essere umano, ma può essere elaborato in modo molto efficiente da un computer. I due tipi di oggetti sono abbastanza diversi, ma per i loro rispettivi usi – uno letto dai programmatori l’altro letto dai computer – hanno uno scopo simile.
Il codice oggetto può anche proteggere il codice sorgente di una particolare applicazione e rimuovere l’obbligo di includere la sorgente con il prodotto acquistato. Un esempio di codice oggetto per il quale i consumatori pagano sarebbe Microsoft Office. Il codice oggetto viene scritto su un CD o DVD e confezionato per la vendita, ma il codice sorgente utilizzato per compilare le applicazioni nel loro stato di funzionamento è mantenuto da Microsoft e non condiviso con il pubblico in generale. Ciò aiuta a proteggere la proprietà intellettuale di Microsoft ed elimina anche la necessità per l’individuo di acquistare il software per compilarlo prima dell’installazione.
Un compilatore è un software che trasforma il codice sorgente inserito in un oggetto leggibile in linguaggio macchina ottimizzato per la lettura da parte di un computer. Separare il codice sorgente originale dal codice installato può anche fornire vantaggi agli sviluppatori durante i test, consentendo al codice sorgente di cambiare continuamente e di essere compilato per essere disponibile per installazioni successive. Un esempio di ciò potrebbe essere confrontare la build notturna di un’applicazione con il codice oggetto impacchettato stabile. Uno deve essere compilato e viene cambiato ogni notte, l’altro è stato testato ed è reso disponibile quando la maggior parte dei nodi è stata risolta.
Alcune applicazioni o anche sistemi operativi come Linux possono essere compilati dagli utenti una volta scaricati, oppure possono essere scaricati e installati da codice oggetto precompilato. Molte di queste applicazioni sono open source e le comunità di sviluppo che le creano e le supportano incoraggiano coloro che le utilizzano ad assistere nella modifica del codice sorgente.
Ci sono sempre più applicazioni e sviluppatori open source su Internet che incoraggerebbero l’uso di build notturne, tuttavia il codice oggetto confezionato di entrambe le applicazioni open source e payware può essere molto più facile da usare.