Hvad er distribueret programmering?
Distribueret programmering er en form for parallel programmering eller parallel computing. Parallel programmering involverer computere og computerenheder inden for computere, der arbejder samtidig med et bestemt problem, såsom at forudsige morgendagens vejr. Beregningsenhederne kan være meget tæt placeret og koordineret eller kan placeres fra hinanden. Når computerenhederne er fra hinanden, kaldes det distribueret programmering. I et sådant scenarie adskiller sig meget ofte computerenhederne fra hinanden, og operativsystemet og netværksopsætningen adskiller sig også, hvilket gør programmering af computeraktiviteten særlig udfordrende.
Når man løser et problem på en distribueret måde, skal programmet opdeles, så dele af programmet kan køre på de forskellige computerenheder; Disse dele kaldes ofte "processer". Processerne kører samtidig, men er nødt til at kommunikere input og resultater til hinanden. Hvis processerne kører på forskellige hardware, såsom en del, der kører på Intel og AnotHendes løb på sol, så skal programmerne samles og optimeres forskelligt.
En måde at løse et tilstrækkeligt vanskeligt problem på er at nedbryde inputdele og få de forskellige computerenheder til at fungere på de forskellige dele ved hjælp af den samme algoritme, sæt regler eller trin til problemløsning. For at knække et genom på 10.000 par kunne de første 1.000 par for eksempel tildeles til den første computerenhed, den anden 1.000 par, der er tildelt den anden computerenhed og så videre, alle ved hjælp af den samme algoritme. Med distribueret programmering er en fordel, at de forskellige computerenheder kunne køre forskellige algoritmer for at løse det samme problem, hvilket således fører til en markant bedre løsning. Dette svarer til at løse et puslespil med nogle mennesker, der samler grænsen, mens andre sammensætter stykker af en bestemt farve.
Koordinering af den distribuerede computingProcesser kan være en særlig vanskelig opgave. Nogle computerenheder kan mislykkes eller kan blive afbrudt for at håndtere andet arbejde. Meddelelser, der indeholder input eller resultaterne af beregningen, kan ikke nå deres destinationer. Hvis programmerne er skrevet på en naiv måde, kan tabet af en computerenhed eller nogle meddelelser få hele sæt computere til at hænge.
I distribueret programmering kunne en proces være kontrolprocessen, hvilket i det væsentlige får arbejde udført af de andre processer, eller alle processer kunne fungere på en peer-to-peer måde uden nogen proces er "mesteren." Nogle eksempler på problemer, der er forsøgt med distribueret programmering, inkluderer analyse af geologiske data for ressourcer såsom petroleum, modellering af proteiner og biologiske molekyler, knækningen af kodede meddelelser og militære simuleringer. SETI-projektet til at søge efter intelligent ekstra-terrestrisk liv fra de radiomeddelelser, der er modtaget af Jorden, er måske et af de mest kendte eksempler.