related.tex
1.23 KB
\section{Related Work}
\label{sec-related}
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.
Aspects are integrated into a program through a weaving step that integrates
the aspects into the codebase. Support for dynamic weaving~\cite{weaving} is
also available.
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.
Unfortunately, dynamic weaving and unweaving can be expensive, requiring the
use of a JIT. 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.