Distribuirano programiranje je jedan oblik paralelnog programiranja ili paralelnog računanja. Paralelno programiranje uključuje računala i računalne jedinice unutar računala koje istovremeno rade na određenom problemu, kao što je predviđanje sutrašnjeg vremena. Računalne jedinice mogu biti vrlo usko smještene i koordinirane ili mogu biti smještene odvojeno. Kada su računalne jedinice odvojene, to se naziva distribuirano programiranje. U takvom scenariju, vrlo često se računalne jedinice razlikuju jedna od druge, a razlikuju se i operativni sustav i mrežna postavka, što programiranje računalne aktivnosti čini posebnim izazovom.
Kada se problem rješava na distribuiran način, program je potrebno podijeliti kako bi se dijelovi programa mogli izvoditi na različitim računalnim jedinicama; ti se dijelovi često nazivaju “procesi”. Procesi se odvijaju istovremeno, ali moraju međusobno komunicirati ulaze i rezultate. Ako se procesi izvode na različitom hardveru, kao što je jedan dio koji radi na Intelu, a drugi na SUN-u, tada se programi moraju drugačije kompajlirati i optimizirati.
Jedan od načina rješavanja dovoljno teškog problema je razbijanje ulaznih dijelova i da različite računalne jedinice rade na različitim dijelovima koristeći isti algoritam, skup pravila ili korake za rješavanje problema. Na primjer, da bi se razbio genom od 10,000 parova, prvih 1,000 parova bi se moglo dodijeliti prvoj računskoj jedinici, drugih 1,000 parova drugoj računskoj jedinici i tako dalje, sve koristeći isti algoritam. Kod distribuiranog programiranja, jedna je prednost što različite računalne jedinice mogu pokretati različite algoritme za rješavanje istog problema, što dovodi do znatno boljeg rješenja. Ovo je slično rješavanju slagalice s nekim ljudima koji spajaju granicu dok drugi sastavljaju dijelove određene boje.
Koordinacija distribuiranih računalnih procesa može biti posebno težak zadatak. Neke računalne jedinice mogu pokvariti ili se prekinuti radi obavljanja drugog posla. Poruke koje sadrže ulaze ili rezultate izračuna možda neće stići na odredište. Ako su programi napisani na naivan način, onda gubitak računalne jedinice ili nekih poruka može uzrokovati visi cijeli skup računala.
U distribuiranom programiranju, jedan proces može biti kontrolni proces, u biti obavljajući posao od strane drugih procesa, ili bi svi procesi mogli raditi na ravnopravan način, a da nijedan proces nije “glavni”. Neki primjeri problema s distribuiranim programiranjem uključuju analizu geoloških podataka za resurse kao što je nafta, modeliranje proteina i bioloških molekula, pucanje kodiranih poruka i vojne simulacije. Projekt SETI za traženje inteligentnog izvanzemaljskog života iz radio poruka koje prima Zemlja je možda jedan od najpoznatijih primjera.