Vad är distribuerad programmering?
Distribuerad programmering är en form av parallell programmering eller parallell databehandling. Parallell programmering involverar datorer och datorenheter inom datorer som arbetar samtidigt med ett särskilt problem, till exempel förutsäga morgondagens väder. Datorenheterna kan vara mycket nära lokaliserade och koordinerade eller kan vara placerade isär. När beräkningsenheterna är isär kallas det distribuerad programmering. I ett sådant scenario skiljer sig ofta datorenheterna från varandra, och operativsystemet och nätverksinställningen skiljer sig också, vilket gör programmering av datoraktiviteten särskilt utmanande.
När man löser ett problem på ett distribuerat sätt måste programmet delas upp så att delar av programmet kan köras på olika datorenheter; dessa delar kallas ofta "processer". Processerna körs samtidigt men måste kommunicera ingångar och resultat till varandra. Om processerna körs på olika hårdvara, till exempel en del som körs på Intel och en annan som körs på SUN, måste programmen sammanställas och optimeras annorlunda.
Ett sätt att lösa ett tillräckligt svårt problem är att bryta upp ingångsdelarna och låta de olika datorenheterna arbeta med de olika delarna med samma algoritm, uppsättningen regler eller steg för problemlösning. Till exempel, för att knäcka ett genom på 10 000 par, kunde de första 1 000 paren tilldelas den första datorenheten, de andra 1 000 paren tilldelade den andra beräkningsenheten och så vidare, alla med samma algoritm. Med distribuerad programmering är en fördel att de olika datorenheterna kan köra olika algoritmer för att lösa samma problem och därmed leda till en betydligt bättre lösning. Detta är liknande till att lösa ett pussel där vissa människor sätter ihop gränsen medan andra sätter ihop bitar av en viss färg.
Samordning av de distribuerade datorprocesserna kan vara en särskilt svår uppgift. Vissa datorenheter kan misslyckas eller kan bli avbrutna för att hantera annat arbete. Meddelanden som innehåller ingångarna eller beräkningsresultaten kanske inte når sina destinationer. Om programmen skrivs på ett naivt sätt kan förlusten av en datorenhet eller vissa meddelanden få hela datorn att hänga.
Vid distribuerad programmering kan en process vara kontrollprocessen, väsentligen få arbete utfört av de andra processerna, eller alla processer kan fungera på peer-to-peer-sätt utan att någon process är "master". Några exempel på problem som försöktes med distribuerad programmering inkluderar analys av geologiska data för resurser som petroleum, modellering av proteiner och biologiska molekyler, krackning av kodade meddelanden och militära simuleringar. SETI-projektet för att söka efter intelligent utomjordiskt liv från radiomeddelanden som mottagits av Jorden är kanske ett av de mest kända exemplen.