1071 \end{itemize} | 
  1071 \end{itemize} | 
  1072   | 
  1072   | 
  1073 \end{frame} | 
  1073 \end{frame} | 
  1074 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     | 
  1074 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     | 
  1075   | 
  1075   | 
         | 
  1076 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  | 
         | 
  1077 \mode<presentation>{ | 
         | 
  1078 \begin{frame}[c] | 
         | 
  1079 \frametitle{\begin{tabular}{c}An Interpreter\end{tabular}} | 
         | 
  1080   | 
         | 
  1081 \begin{center} | 
         | 
  1082 \bl{\begin{tabular}{l} | 
         | 
  1083 $\{$\\ | 
         | 
  1084 \;\;$x := 5 \text{;}$\\ | 
         | 
  1085 \;\;$y := x * 3\text{;}$\\ | 
         | 
  1086 \;\;$y := x * 4\text{;}$\\ | 
         | 
  1087 \;\;$x := u * 3$\\  | 
         | 
  1088 $\}$  | 
         | 
  1089 \end{tabular}} | 
         | 
  1090 \end{center} | 
         | 
  1091   | 
         | 
  1092 \begin{itemize} | 
         | 
  1093 \item the interpreter has to record the value of \bl{$x$} before assigning a value to \bl{$y$}\pause | 
         | 
  1094 \item \bl{\text{eval}(stmt, env)} | 
         | 
  1095 \end{itemize} | 
         | 
  1096   | 
         | 
  1097   | 
         | 
  1098 \end{frame}} | 
         | 
  1099 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  | 
         | 
  1100   | 
         | 
  1101 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  | 
         | 
  1102 \mode<presentation>{ | 
         | 
  1103 \begin{frame}[c] | 
         | 
  1104 \frametitle{\begin{tabular}{c}Interpreter\end{tabular}} | 
         | 
  1105   | 
         | 
  1106 \begin{center} | 
         | 
  1107 \bl{\begin{tabular}{@{}lcl@{}} | 
         | 
  1108 $\text{eval}(n, E)$ & $\dn$ & $n$\\ | 
         | 
  1109 $\text{eval}(x, E)$ & $\dn$ & $E(x)$ \;\;\;\textcolor{black}{lookup \bl{$x$} in \bl{$E$}}\\ | 
         | 
  1110 $\text{eval}(a_1 + a_2, E)$ & $\dn$ & $\text{eval}(a_1, E) + \text{eval}(a_2, E)$\\ | 
         | 
  1111 $\text{eval}(a_1 - a_2, E)$ & $\dn$ & $\text{eval}(a_1, E) - \text{eval}(a_2, E)$\\ | 
         | 
  1112 $\text{eval}(a_1 * a_2, E)$ & $\dn$ & $\text{eval}(a_1, E) * \text{eval}(a_2, E)$\bigskip\\ | 
         | 
  1113 $\text{eval}(a_1 = a_2, E)$ & $\dn$ & $\text{eval}(a_1, E) = \text{eval}(a_2, E)$\\ | 
         | 
  1114 $\text{eval}(a_1\,!\!= a_2, E)$ & $\dn$ & $\neg(\text{eval}(a_1, E) = \text{eval}(a_2, E))$\\ | 
         | 
  1115 $\text{eval}(a_1 < a_2, E)$ & $\dn$ & $\text{eval}(a_1, E) < \text{eval}(a_2, E)$\ | 
         | 
  1116 \end{tabular}} | 
         | 
  1117 \end{center} | 
         | 
  1118   | 
         | 
  1119 \end{frame}} | 
         | 
  1120 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     | 
         | 
  1121 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  | 
         | 
  1122 \mode<presentation>{ | 
         | 
  1123 \begin{frame}[c] | 
         | 
  1124 \frametitle{\begin{tabular}{c}Interpreter (2)\end{tabular}} | 
         | 
  1125   | 
         | 
  1126 \begin{center} | 
         | 
  1127 \bl{\begin{tabular}{@{}lcl@{}} | 
         | 
  1128 $\text{eval}(\text{skip}, E)$ & $\dn$ & $E$\\ | 
         | 
  1129 $\text{eval}(x:=a, E)$ & $\dn$ & \bl{$E(x \mapsto \text{eval}(a, E))$}\\ | 
         | 
  1130 \multicolumn{3}{@{}l@{}}{$\text{eval}(\text{if}\;b\;\text{then}\;cs_1\;\text{else}\;cs_2 , E) \dn$}\\ | 
         | 
  1131 \multicolumn{3}{@{}l@{}}{\hspace{2cm}$\text{if}\;\text{eval}(b,E)\;\text{then}\; | 
         | 
  1132 \text{eval}(cs_1,E)$}\\ | 
         | 
  1133 \multicolumn{3}{@{}l@{}}{\hspace{2cm}$\phantom{\text{if}\;\text{eval}(b,E)\;}\text{else}\;\text{eval}(cs_2,E)$}\\ | 
         | 
  1134 \multicolumn{3}{@{}l@{}}{$\text{eval}(\text{while}\;b\;\text{do}\;cs, E) \dn$}\\ | 
         | 
  1135 \multicolumn{3}{@{}l@{}}{\hspace{2cm}$\text{if}\;\text{eval}(b,E)$}\\ | 
         | 
  1136 \multicolumn{3}{@{}l@{}}{\hspace{2cm}$\text{then}\; | 
         | 
  1137 \text{eval}(\text{while}\;b\;\text{do}\;cs, \text{eval}(cs,E))$}\\ | 
         | 
  1138 \multicolumn{3}{@{}l@{}}{\hspace{2cm}$\text{else}\; E$}\\ | 
         | 
  1139 $\text{eval}(\text{write}\; x, E)$ & $\dn$ & $\{\;\text{println}(E(x))\; ;\;E\;\}$\\ | 
         | 
  1140 \end{tabular}} | 
         | 
  1141 \end{center} | 
         | 
  1142   | 
         | 
  1143 \end{frame}} | 
         | 
  1144 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     | 
         | 
  1145   | 
         | 
  1146 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  | 
         | 
  1147 \begin{frame}[c] | 
         | 
  1148 \frametitle{\begin{tabular}{c}Test Program\end{tabular}} | 
         | 
  1149   | 
         | 
  1150 \mbox{}\\[-18mm]\mbox{} | 
         | 
  1151   | 
         | 
  1152 {\lstset{language=While}%%\fontsize{10}{12}\selectfont | 
         | 
  1153 \texttt{\lstinputlisting{../progs/loops.while}}} | 
         | 
  1154   | 
         | 
  1155 \end{frame} | 
         | 
  1156 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     | 
         | 
  1157   | 
         | 
  1158 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  | 
         | 
  1159 \mode<presentation>{ | 
         | 
  1160 \begin{frame}[t] | 
         | 
  1161 \frametitle{\begin{tabular}{c}Interpreted Code\end{tabular}} | 
         | 
  1162   | 
         | 
  1163 \begin{center} | 
         | 
  1164 \begin{tikzpicture} | 
         | 
  1165 \begin{axis}[axis x line=bottom, axis y line=left, xlabel=n, ylabel=secs, legend style=small] | 
         | 
  1166 \addplot+[smooth] file {interpreted.data}; | 
         | 
  1167 \end{axis} | 
         | 
  1168 \end{tikzpicture} | 
         | 
  1169 \end{center} | 
         | 
  1170   | 
         | 
  1171 \end{frame}} | 
         | 
  1172 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   | 
         | 
  1173   | 
         | 
  1174 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  | 
         | 
  1175 \mode<presentation>{ | 
         | 
  1176 \begin{frame}[c] | 
         | 
  1177 \frametitle{\begin{tabular}{c}Java Virtual Machine\end{tabular}} | 
         | 
  1178   | 
         | 
  1179 \begin{itemize} | 
         | 
  1180 \item introduced in 1995  | 
         | 
  1181 \item is a stack-based VM (like Postscript, CLR of .Net)  | 
         | 
  1182 \item contains a JIT compiler  | 
         | 
  1183 \item many languages take advantage of JVM's infrastructure (JRE)  | 
         | 
  1184 \item is garbage collected $\Rightarrow$ no buffer overflows  | 
         | 
  1185 \item some languages compile to the JVM: Scala, Clojure\ldots  | 
         | 
  1186 \end{itemize} | 
         | 
  1187   | 
         | 
  1188 \end{frame}} | 
         | 
  1189 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     | 
  1076   | 
  1190   | 
  1077   | 
  1191   | 
  1078 \end{document} | 
  1192 \end{document} | 
  1079   | 
  1193   | 
  1080 %%% Local Variables:    | 
  1194 %%% Local Variables:    |