Hvad er distribueret programmering?
Distribueret programmering er en form for parallel programmering eller parallel computing. Parallel programmering involverer computere og computerenheder i computere, der arbejder samtidig med et bestemt problem, såsom forudsigelse af morgendagens vejr. Computerenhederne kan være meget tæt placeret og koordineret eller kan være placeret fra hinanden. Når computerenhederne er fra hinanden, kaldes det distribueret programmering. I et sådant scenario er computerenhederne ofte forskellige fra hinanden, og operativsystemet og netværksopsætningen adskiller sig også, hvilket gør programmeringen af computervirksomheden særlig udfordrende.
Når der løses 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 har brug for at kommunikere input og resultater til hinanden. Hvis processerne kører på forskellige hardware, f.eks. En del, der kører på Intel og en anden, der kører på SUN, skal programmerne sammenstilles og optimeres forskelligt.
En måde at løse et tilstrækkeligt vanskeligt problem på er at nedbryde inputdelene og få de forskellige computerenheder til at arbejde på de forskellige dele ved hjælp af den samme algoritme, sæt reglerne eller trin til problemløsning. For eksempel for at knække et genom på 10.000 par, kunne de første 1.000 par tildeles den første computerenhed, de andet 1.000 par tildelt til den anden computerenhed og så videre, alt sammen ved hjælp af den samme algoritme. Ved distribueret programmering er en fordel, at de forskellige computerenheder kunne køre forskellige algoritmer for at løse det samme problem og således føre til en markant bedre løsning. Dette svarer til at løse et puslespil, hvor nogle mennesker sætter sammen grænsen, mens andre sætter stykker af en bestemt farve sammen.
Koordinering af de distribuerede computerprocesser kan være en særlig vanskelig opgave. Nogle computerenheder mislykkes eller kan blive afbrudt til at håndtere andet arbejde. Meddelelser, der indeholder input eller resultaterne af beregningen, kan muligvis ikke nå deres destinationer. Hvis programmerne er skrevet på en naiv måde, kan tabet af en computerenhed eller nogle meddelelser få hele computersættet til at hænge.
I distribueret programmering kan en proces være kontrolprocessen, i det væsentlige få arbejde udført af de andre processer, eller alle processer kunne fungere på en peer-to-peer måde uden nogen proces at være "master". 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, krakning af kodede meddelelser og militære simuleringer. SETI-projektet til at søge efter intelligent udenjordisk liv fra de radiobeskeder, der er modtaget af Jorden, er måske et af de mest kendte eksempler.