LaDeDa: Languages for Debuggable Distributed Algorithms
Abstract
When programming language designs are presented, the examples are
almost exclusively of correct programs. Most attention of programming
language designers is indeed on the beauty and elegance of correct
programs. For incorrect programs, great design attention is paid to
catching errors early---such as fancy static type systems---so that
many incorrect programs are never run.
Due to the success of these efforts, many programs are either correct
or inadmissible, conserving on the need for programmer attention. As a
result, most of the attention working programmers spend looking at
code is spent debugging incorrect running code. Often this is code
written by others and only partially understood. What properties
should such code have? How can programming language design encourage
incorrect programs to have those properties that facilitate debugging?
Distributed programs introduce additional difficult bugs of a
different character. How should distributed language design facilitate
the debugging of distributed programs?
We explain how these considerations have affected four distributed
language designs (E, AmbientTalk, Joe-E/Waterken, Dr. SES) and one
distributed debugging tool (Causeway).
almost exclusively of correct programs. Most attention of programming
language designers is indeed on the beauty and elegance of correct
programs. For incorrect programs, great design attention is paid to
catching errors early---such as fancy static type systems---so that
many incorrect programs are never run.
Due to the success of these efforts, many programs are either correct
or inadmissible, conserving on the need for programmer attention. As a
result, most of the attention working programmers spend looking at
code is spent debugging incorrect running code. Often this is code
written by others and only partially understood. What properties
should such code have? How can programming language design encourage
incorrect programs to have those properties that facilitate debugging?
Distributed programs introduce additional difficult bugs of a
different character. How should distributed language design facilitate
the debugging of distributed programs?
We explain how these considerations have affected four distributed
language designs (E, AmbientTalk, Joe-E/Waterken, Dr. SES) and one
distributed debugging tool (Causeway).