Izvorni program pojam je koji se koristi kao sinonim za izvorni kod. Ovo su upute koje računalni program prenosi na računalo da bi se mogao pokrenuti. Navedene upute su crte teksta napisane programskim jezikom (struktura koja može prenositi računalne upute iz određene semantičke i sintaktičke baze).
Može se reći da u izvornom programu softver detaljno opisuje svoj cjelokupni rad. Programer je onaj koji razvija ove upute, poštujući načela odabranom programskom jeziku. Dotični sustav prilikom pristupa izvornom programu tumači upute i pokreće ih.
Treba napomenuti da izvorni program hardver ne tumači izravno: upute se prevode na drugi jezik, koji hardver može izvesti. Proces prevođenja razvija se putem tumača, sastavljača i prevodilaca između različitih prevoditeljskih sustava.
Tumači, monteri i drugi prevoditelji pretvaraju izvorni program u binarni kod, sastavljen od nula i nula, koji naznačuju kada se električna energija treba ili ne smije prenositi kroz uređaje.
Stvaranje izvornog programa zaštićeno je pravima intelektualnog vlasništva. Programer odlučuje može li njegov izvorni program biti dostupan drugim programerima ili ne. Kad se izvorni kod zatvori, označeno je da će biti dostupan samo svom tvorcu i onima koji ga prethodno autoriziraju. Ako je izvorni kod otvoren, s druge strane, programer daje dozvolu drugim osobama da čitaju, mijenjaju i redistribuiraju izvorni program.
Ovisno o vještinama, znanju i upornosti programera, mogućnosti se mogu činiti beskonačnim, čak i ako uvijek koristite isti skup simbola i ograničeni su istim pravilima kao i svi ostali. Iz tog razloga, čak i ako dvije osobe znaju napamet sve rezervirane riječi, vrste podataka i uvjete ( ako , inače, ako jesu ) i petlje koje imaju ( za , dok god ), način na koji ih netko može koristiti nečitljiv drugome, bilo zbog njegove složenosti ili zbog određenih dizajnerskih odluka.
U tom je smislu izvorni program odraz osobnosti i načina razmišljanja svakog programera, što može biti vrlo otkriti. Među najčešćim osobinama su sljedeće:
* besprijekorna uvlačenja: neki programeri ne podržavaju puku ideju da zaborave udubljenje (anglizam koji odgovara španjolskom izrazu uvlačenja ) prilikom pisanja koda. Važno je napomenuti da je na Pythonu, na primjer, uvlačenje bitno za ispravno tumačenje, ali to na većini jezika nije slučaj, pa je to vrlo osobna odluka;
* prijelomi fer linija: slično kao u prethodnoj točki, postoje i oni koji ne dodaju prekid linije ako to nije apsolutno neophodno. To, naravno, odgovara i na osobni kriterij, jer ne postoji univerzalno pravilo koje određuje točan broj;
* nered: iako stereotip programera karakterizira opsesija redom i kontrolom, postoje neki koji proizvode kodove za koje se čini da su slučajni izljevi likova , bez ikakvih pravila ili modela koji bi slijedili. Nepotrebno je reći da to i nije baš česta pojava.