A grid uses the resources of many separate computers, loosely connected by a
network (usually the Internet), to solve large-scale computation problems.
Public grids may use idle time on many thousands of computers throughout the
world. Such arrangements permit handling of data that would otherwise require
the power of expensive supercomputers or would have been impossible to analyze.
Languages
Nearly any programming language that has access to the full hardware of the
system could handle distributed programming given enough time and code. Remote
procedure calls distribute operating system commands over a network connection.
Systems like CORBA, Microsoft DCOM, Java RMI and others, try to map object
oriented design to the network. Loosely coupled systems communicate through
intermediate documents that are typically human readable (e.g. XML, HTML, SGML,
X.500, and EDI).
Languages specifically tailored for distributed programming are:
- Ada programming language
- Alef programming language
- E programming language
- Erlang programming language
- Limbo programming language
- Oz programming language
- ZPL (programming language)
- Orca programming language
Projects
A variety of distributed computing projects have grown up in recent years.
Many are run on a volunteer basis, and involve users donating their unused
computational power to work on interesting computational problems. Examples of
such projects include the Stanford University Chemistry Department Folding@home
project, which is focused on simulations of protein folding to find disease
cures; World Community Grid, an effort to create the world's largest public
computing grid to tackle scientific research projects that benefit humanity, run
and funded by IBM; SETI@home, which is focused on analyzing radio-telescope data
to find evidence of intelligent signals from space, hosted by the Space Sciences
Laboratory at the University of California
Distributed computing projects also often involve competition with other
distributed systems. This competition may be for prestige, or it may be a matter
of enticing users to donate processing power to a specific project. For example,
stat races are a measure of the work a distributed computing project has been
able to compute over the past day or week. This has been found to be so
important in practice that virtually all distributed computing projects offer
online statistical analyses of their performances, updated at least daily if not
in real-time
|