Kompiuteriai yra mašinos, kuriose veikia milijonai kodo eilučių. Programuotojai rašo kodą įvairiomis kalbomis, tačiau visas šis kodas turi keletą pagrindinių funkcijų, nesvarbu, kokia kalba yra naudojama. Programa visada turi du kodo rinkinius: šaltinio kodą ir objekto kodą. Šaltinio kodas yra tai, kas sukurta iš anksto, kalba, kurią programuotojas naudoja duodamas nurodymus kompiuterio kompiliatoriui, kad programa paleistų. Kompiliatoriaus, sudarančio šias šaltinio kodo instrukcijas, rezultatas vadinamas objekto kodu.
Terminai yra intuityvūs, nes šaltinio kodas yra operacijos pradžia arba šaltinis, o objekto kodas yra norimas viso pratimo rezultatas arba objektas. Jis saugomas failuose, kuriuos sukuria kompiuterio kompiliatorius ir gali tapti galutiniu programuotojo numatytu tikslu.
Kai šaltinio kodas yra sukompiliuotas į failus, jis gali tęsti kompiuterio procesorių, kuris vykdo paskutines instrukcijas. Paprastai prieinamos programinės įrangos taikomosios programos yra didžiulės objekto kodo kolekcijos, kurių negalima pakeisti iš esmės, nes šaltinio kodas neįtrauktas. Tai tarsi problemos sprendimas, bet ne visi veiksmai, naudojami norint ją pasiekti. Šio kodo keitimas neturint šaltinio kodo gali būti nusivylimas.
Šis kelių etapų procesas reikalingas, nes kompiuteriai gali vykdyti tik tas instrukcijas, kurios parašytos mašinine kalba. Tai yra galutinis rezultatas, kuris yra vykdomos objekto kodo versijos. Taigi, kai vartotojas gauna programinę įrangą, tas vartotojas gauna įvykdytą šaltinio kodo versiją, kuri tapo mašinos kalba, kuri buvo transformuota į galutinį projektą.
Atsižvelgiant į tai, kad šiuo metu akcentuojamas atvirojo kodo kodas, vis daugiau programų išleidžiama su šaltinio kodo galimybėmis. Kruopštūs programuotojai ir programuotojai gali pasiekti tą šaltinio kodą, pakeisti jį, kad atitiktų savo poreikius, ir tada sukurti naują objekto kodą, kuris atitinka tikslą, kuris gali skirtis nuo pirminių programuotojų.