related.tex 2.56 KB
\section{Related Work}
\label{sec-related}

New systems such as EnFrame~\cite{arxiv13-enframe} reflect growing interest
in managing uncertainty at the language level. EnFrame focuses on enabling
programming with uncertain data, rather than the runtime adaptation enabled
by the \texttt{maybe} statement. Specifically a variable controlled by a
\texttt{maybe} statement has a single value that is being evaluated at any
given time, while EnFrame allows that same variable to have a distribution of
values reflecting error or other forms of uncertainty about what it's true
value should be.

Aspect oriented programming (AOP)~\cite{aop} was proposed by Kiczales et al.
as a programming paradigm geared toward increasing modularity through the
separation of cross-cutting concerns in software. The programmer can express
cross cutting concerns in stand alone modules, or aspects. Aspects are
composed of advice, which specifies a computation to be performed as well as
points in the program at which that computation should be performed.
Abstractly, aspects provide an interesting framework on top of which we could
realize \texttt{maybe} blocks. At runtime, different aspects could be weaved
depending on the framework decisions. Aspects would also allow ``chained''
\texttt{maybe} blocks through the use of multiple join points and point-cuts.
Fundamentally, however, the goals of AOP and the \texttt{maybe} statement
differ, with AOP focusing on modularity and \texttt{maybe} focused on
increasing runtime flexibility in the face of uncertainty.

\texttt{maybe} shares similaries with language-based approaches to managing
energy consumption in wireless sensor networks such as
Eon~\cite{sensys07-eon} and Levels~\cite{sensys07-levels}. However, these
approaches still require programmers to express certainty by associating code
with particular energy states, rather than allowing the system to determine
which energy states are appropriate as the \texttt{maybe} system would do.
\texttt{maybe} can also enable adaptation driven by goals other than energy
management.

Enabling more adaptive mobile systems is a challenge with a long history dating
back to work on systems such as Odyssey~\cite{odyssey-sosp97}. However, a
taxonomy of approaches to enabling adaptation on early mobile
systems~\cite{badrinath2000conceptual} reflects the focus of early efforts on
incorporating adaptation into libraries that could be used by multiple apps. As
we have pointed out previously, while adaptation libraries are useful,
\texttt{maybe} statements can make them more powerful by allowing programmers
to express uncertainty.