Commit 08f18b2b0876fb0aa67e044ffb34a5006ec6a242

Authored by Geoffrey Challen
1 parent 1eccab3a

Rewrite key graf.

Showing 2 changed files with 37 additions and 46 deletions
introduction.tex
... ... @@ -85,27 +85,29 @@ maybe {
85 85 }
86 86 \end{minted}
87 87  
88   -\vspace*{-0.2in}
  88 +\vspace*{-0.1in}
89 89  
90   -\caption{\textbf{Example \texttt{maybe} Statement}}
  90 +\caption{\textbf{Example \texttt{maybe} Statement.} The programmer provides
  91 +multiple equivalent alternatives.}
91 92 \label{fig-example-maybe}
92 93  
93   -\vspace*{-0.2in}
  94 +\vspace*{-0.1in}
94 95  
95 96 \end{figure}
96 97  
97 98 In this paper, we present a novel a language construct for expressing
98   -structured uncertainty: the \texttt{maybe} statement. \texttt{maybe}
99   -statements allow programmers to express sets of equivalent alternatives for
100   -both data and control-flow. Figure~\ref{fig-example-maybe} shows a simple
101   -case of a \texttt{maybe} case statement applied to our earlier example.
102   -Instead of being forced to choose, being forced to attempt to implement the
103   -decision process, or even required to evaluate multiple alternatives, the
104   -programmer is free to offer two or more alternatives that are different but
105   -both correct, although one may be preferable. At runtime only one will be
106   -used during any given execution, with the system both determining the energy
107   -tradeoffs produced by multiple alternatives and activating energy-saving
108   -alternatives when appropriate.
  99 +structured uncertainty: the \texttt{maybe} statement. \texttt{maybe} allows
  100 +the programmer to express and structure their uncertainty by providing two or
  101 +more different \textit{alternatives} which together implement multiple
  102 +approaches to runtime adaptation, possibly by making the same
  103 +energy-performance or energy-accuracy tradeoffs described previously.
  104 +Figure~\ref{fig-example-maybe} shows how our earlier example can be easily
  105 +rewritten to use a \texttt{maybe} statement. However, unlike the previous
  106 +example \texttt{maybe} does rely on the developer to implement a decision
  107 +process or correctly anticipate the effects of each alternative. Instead, the
  108 +\texttt{maybe} system makes runtime choices about which alternative to use by
  109 +measuring the tradeoffs produced by each alternative and (in this case)
  110 +activating an energy-saving alternative when appropriate.
109 111  
110 112 How that choice is made is discussed in the remainder of our paper. We begin
111 113 by providing a more complete description of the \texttt{maybe} statement in
... ...
maybe.tex
1 1 \section{\texttt{\large maybe} Statement Semantics}
2 2 \label{sec-maybe}
3 3  
4   -To begin, we provide a brief overview of the semantics of the \texttt{maybe}
5   -statement, describing how it can express structured uncertainty in variable
6   -values and runtime execution. We refer to each of the values a \texttt{maybe}
7   -variable can take or paths a \texttt{maybe} code block can execute as an
8   -\textit{alternative}.
  4 +To begin we provide an overview of the \texttt{maybe} statements semantics,
  5 +describing how it structures uncertainty in variable values and runtime
  6 +execution. We refer to each of the values a \texttt{maybe} variable can take
  7 +or paths a \texttt{maybe} code block can execute as an \textit{alternative}.
9 8  
10 9 \begin{figure}[t]
11 10 \begin{minted}[fontsize=\footnotesize]{java}
... ... @@ -89,38 +88,30 @@ annotations.
89 88 We will return to post-mortem evaluation
90 89 in Section~\ref{sec-certainty}.
91 90  
92   -\subsection{Programming With \texttt{\large maybe}}
  91 +\subsection{Discussion}
93 92  
94 93 We have yet to determine how well programmers will be able to use the new
95 94 \texttt{maybe} construct. At some level, \texttt{maybe} statements are
96   -similar to the common \texttt{if-else} construct. At the bottom of the
97   -statement, the programmer may not be sure which block was executed. Of
98   -course, with \texttt{if-else} blocks it can be determined which block was
99   -executed by examining the branch conditions. When working with the
100   -\texttt{maybe} statement, the developer must set a variable inside each
101   -\texttt{maybe} block if downstream code depends on which alternative was
102   -chosen, as in Figure~\ref{fig-maybeexamples}. Alternatively, programmers may
103   -use a \texttt{maybe} variable to select a policy, and employ the traditional
104   -\texttt{if-else} construct to direct control flow based on the \texttt{maybe}
105   -variable.
106   -
107   -\subsection{When Not To Use \texttt{\large maybe}}
108   -% 10/13 by OK:
109   -% We don't discuss dependencies between maybe statements anywhere else, so I'm
110   -% killing the ref here. It's still true that we're creating an exponential
111   -% search space of possibilities; so the same text is getting re-purposed for
112   -% that.
  95 +similar to the common \texttt{if-else} construct in that at the bottom of the
  96 +statement the programmer may not be sure which block was executed. However,
  97 +while with \texttt{if-else} blocks it can be determined which block was
  98 +executed by examining the branch conditions, \texttt{maybe} statements
  99 +require developers record which alternative was used if downstream code
  100 +depends on the decision. Alternatively, programmers may use a \texttt{maybe}
  101 +variable to select a policy and employ traditional \texttt{if-else}
  102 +statements to direct control flow based on the \texttt{maybe} variable.
  103 +
113 104 While \texttt{maybe} is a powerful programming tool, it is important that it
114   -be used sparingly. In the case where no dependencies exist between the
  105 +be used sparingly. In the case where dependencies exist between the
115 106 alternatives expressed by separate \texttt{maybe} statements, each
116   -\texttt{maybe} expands the overall configuration space exponentially and
  107 +\texttt{maybe} may expand the overall configuration space exponentially which
117 108 makes the resulting process of determining the best alternative much more
118 109 complicated. Compile-time analysis may be required to ensure that downstream
119 110 optimization remains feasible.
120 111  
121 112 The most important guideline for when \textit{not} to use \texttt{maybe}
122 113 usage is when a decision is not app-specific, and should instead be
123   -made by a library or service. As an example, \texttt{maybe} should
  114 +refactored into a library or service. As an example, \texttt{maybe} should
124 115 not be used to decide which networking interface to use to send a packet.
125 116 To the degree that
126 117 one app shares the same objectives as others---say, to minimize latency---a
... ... @@ -128,10 +119,8 @@ service should be performing adaptation on behalf of all apps using the
128 119 merged network interfaces, possibly through the use of its own internal
129 120 \texttt{maybe} statements.
130 121  
131   -\subsection{Other Approaches to Adaptation}
132   -
133   -Note that structured uncertainty is not randomness. The \texttt{maybe}
134   -statement indicates that during any given execution one alternative may be
135   -better than the others---even if the developer or system are not sure which
136   -alternative to use.
  122 +Finally, note that structured uncertainty is not randomness. The
  123 +\texttt{maybe} statement indicates that during any given execution one
  124 +alternative may be better than the others---even if the developer or system
  125 +are not sure which alternative to use.
137 126  
... ...