diff -r 000000000000 -r 8d6145cea799 slides01.tex --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/slides01.tex Sat Sep 22 19:50:07 2012 +0100 @@ -0,0 +1,648 @@ +\documentclass[dvipsnames,14pt,t]{beamer} +\usepackage{beamerthemeplainculight} +\usepackage[T1]{fontenc} +\usepackage[latin1]{inputenc} +\usepackage{mathpartir} +\usepackage[absolute,overlay]{textpos} +\usepackage{ifthen} +\usepackage{tikz} +\usepackage{pgf} +\usepackage{calc} +\usepackage{ulem} +\usepackage{courier} +\usepackage{listings} +\renewcommand{\uline}[1]{#1} +\usetikzlibrary{arrows} +\usetikzlibrary{automata} +\usetikzlibrary{shapes} +\usetikzlibrary{shadows} +\usetikzlibrary{positioning} +\usetikzlibrary{calc} + +%%%\usetikzlibrary{mindmap} + +\usepackage{graphicx} + +\definecolor{javared}{rgb}{0.6,0,0} % for strings +\definecolor{javagreen}{rgb}{0.25,0.5,0.35} % comments +\definecolor{javapurple}{rgb}{0.5,0,0.35} % keywords +\definecolor{javadocblue}{rgb}{0.25,0.35,0.75} % javadoc + +\lstset{language=Java, + basicstyle=\ttfamily, + keywordstyle=\color{javapurple}\bfseries, + stringstyle=\color{javagreen}, + commentstyle=\color{javagreen}, + morecomment=[s][\color{javadocblue}]{/**}{*/}, + numbers=left, + numberstyle=\tiny\color{black}, + stepnumber=1, + numbersep=10pt, + tabsize=2, + showspaces=false, + showstringspaces=false} + +\lstdefinelanguage{scala}{ + morekeywords={abstract,case,catch,class,def,% + do,else,extends,false,final,finally,% + for,if,implicit,import,match,mixin,% + new,null,object,override,package,% + private,protected,requires,return,sealed,% + super,this,throw,trait,true,try,% + type,val,var,while,with,yield}, + otherkeywords={=>,<-,<\%,<:,>:,\#,@}, + sensitive=true, + morecomment=[l]{//}, + morecomment=[n]{/*}{*/}, + morestring=[b]", + morestring=[b]', + morestring=[b]""" +} + +\lstset{language=Scala, + basicstyle=\ttfamily, + keywordstyle=\color{javapurple}\bfseries, + stringstyle=\color{javagreen}, + commentstyle=\color{javagreen}, + morecomment=[s][\color{javadocblue}]{/**}{*/}, + numbers=left, + numberstyle=\tiny\color{black}, + stepnumber=1, + numbersep=10pt, + tabsize=2, + showspaces=false, + showstringspaces=false} + +% beamer stuff +\renewcommand{\slidecaption}{Scala, King's College London, 27.~March 2012} + + +\begin{document} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\mode{ +\begin{frame}<1>[t] +\frametitle{% +\begin{tabular}{@ {\hspace{-3mm}}c@ {}} +\\ +\large \textcolor{black}{PRA, Programming Applications:}\\[5mm] +\Huge Scala\\[-1mm] +\large ``Better Java'' for Programming the JVM\\[5mm] +\normalsize \textcolor{black}{Christian Urban} +\end{tabular}} +\end{frame}} + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\mode{ +\begin{frame}[c] +\frametitle{\begin{tabular}{c}1.~Reason\end{tabular}} + +\begin{textblock}{6}(1,3) +\begin{tabular}{l} +\mbox{}\hspace{-1mm}\includegraphics[scale=0.36]{twitter.png}\\[-1mm] +\includegraphics[scale=0.30]{linked.png}\\ +\includegraphics[scale=0.30]{guardian.jpg}\\[-3mm] +\mbox{}\hspace{-2mm}\includegraphics[scale=0.38]{morgan.png}\\[-3mm] +\includegraphics[scale=0.30]{suisse.png}\\ +\includegraphics[scale=0.20]{edf.png}\\[-1mm] +\includegraphics[scale=0.08]{novell.png}\\[-1mm] +\includegraphics[scale=0.30]{foursquare.png}\\ +\includegraphics[scale=0.30]{hsbc.png}\\ +{\large\bf ...} +\end{tabular} +\end{textblock} + +\only<2->{ +\begin{textblock}{6}(6,3) +\includegraphics[scale=0.35]{jobgraph.png}\\ +\end{textblock}} + +\only<3->{ +\begin{textblock}{6}(7.3,9.2) +\begin{tabular}{l} +\footnotesize 2013: 1$\%$\\[-2mm] +\footnotesize 2014: 3$\%$\\[-2mm] +\footnotesize 2015: 9$\%$\\[-2mm] +\footnotesize 2016: 27$\%$\\[-2mm] +\footnotesize 2017: 81$\%$\\[-2mm] +\footnotesize 2018: 243$\%$ \raisebox{-1mm}{\includegraphics[scale=0.02]{smiley.jpg}} +\end{tabular} +\end{textblock}} + +\only<3->{ +\begin{textblock}{6}(6,9.5) +\footnotesize 5 yrs $\begin{cases}\mbox{}\\[1.4cm]\end{cases}$ +\end{textblock}} + +\only<4->{ +\begin{textblock}{11}(5,14.1) +\textcolor{gray}{ +\footnotesize {\bf in London today:} 1 Scala job for every 30 Java jobs;\\[-2mm] +Scala programmers seem to get up to 20\% better salary} +\end{textblock}} + +\end{frame}} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\mode{ +\begin{frame}[c] +\frametitle{\begin{tabular}{c}2.~Reason\end{tabular}} + +\begin{textblock}{11}(1,7) +\begin{tikzpicture}[scale=1.0] +%\draw[step=2mm] (-1,-1) grid (10,1); +\draw[->, line width=2mm] (-0.2,0) -- (11,0); +\draw[line width=0.8mm] (0,0) -- (0,-0.3); +\node at (0,-0.5) [black] {\footnotesize 1985}; +\draw[line width=0.8mm] (2.8,0) -- (2.8,-0.3); +\node at (2.8,-0.5) [black] {\footnotesize 1992}; +\draw[line width=0.8mm] (1.2,0) -- (1.2,-0.3); +\node at (1.2,-0.5) [black] {\footnotesize 1988}; +\draw[line width=0.8mm] (4.8,0) -- (4.8,-0.3); +\node at (4.8,-0.5) [black] {\footnotesize 1997}; +\draw[line width=0.8mm] (6,0) -- (6,-0.3); +\node at (6,-0.5) [black] {\footnotesize 2000}; +\draw[line width=0.8mm] (7.6,0) -- (7.6,-0.3); +\node at (7.6,-0.5) [black] {\footnotesize 2004}; +\draw[line width=0.8mm] (10.4,0) -- (10.4,-0.3); +\node at (10.4,-0.5) [black] {\footnotesize 2011}; +\end{tikzpicture} +\end{textblock} + +\begin{textblock}{5}(1,9) +\small Basic\\[-1mm] +Assembler\\ +\end{textblock} +\begin{textblock}{5}(2.8,11) +\small Pascal\\[-1mm] +C\\ +\end{textblock} +\begin{textblock}{5}(4.3,9) +\small Modula 3\\[-1mm] +C++\\ +\end{textblock} +\begin{textblock}{5}(6.7,9) +\small $\lambda$Prolog\\ +\end{textblock} +\begin{textblock}{5}(8.6,9) +\small Ocaml\\[-1mm] +\small SMLj\\[-1mm] +\small Pizza +\end{textblock} +\begin{textblock}{5}(10.6,9) +\normalsize\bf SML\\[-1mm] +\end{textblock} +\begin{textblock}{5}(14,9) +\small Scala\\ +\end{textblock} +\begin{textblock}{5}(13.2,11) +\small \underline{Future?}\\[0mm] +\small Python\\[-1mm] +\small Ruby\\[-1mm] +\small Javascript\\ +\end{textblock} + +\begin{textblock}{5}(0.2,2) +\includegraphics[scale=0.30]{punch.jpg}\\ +\end{textblock} +\begin{textblock}{5}(0.4,4.5) +\includegraphics[scale=0.20]{plus4.jpg}\\ +\end{textblock} +\begin{textblock}{5}(2.8,2.1) +\includegraphics[scale=0.15]{robotron.jpg}\\ +\end{textblock} +\begin{textblock}{5}(5.0,3.7) +\includegraphics[scale=0.10]{sparc.jpg}\\ +\end{textblock} +\begin{textblock}{5}(8.0,4) +\includegraphics[scale=0.40]{titanium.jpg}\\ +\end{textblock} +\begin{textblock}{5}(12,4.5) +\includegraphics[scale=0.10]{air.jpg}\\ +\end{textblock} +\end{frame}} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\mode{ +\begin{frame}[c] +\frametitle{\begin{tabular}{c}Why Scala?\end{tabular}} + +\large +\begin{itemize} +\item compiles to JVM (.Net \& Android)\bigskip +\item integrates seamlessly with Java (Swing)\bigskip +\end{itemize} + +\end{frame}} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\mode{ +\begin{frame}[c] +\frametitle{\begin{tabular}{c}Why Scala?\end{tabular}} + +\large +\begin{itemize} +\item combines {\bf functional} and {\bf object-oriented} programming +\end{itemize} + +\end{frame}} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\mode{ +\begin{frame}[c] +\frametitle{\begin{tabular}{c}Why Scala?\end{tabular}} + + +\begin{itemize} +\item \large {\bf Actors}:\\ +\normalsize keep asynchronous concurrency simple +\end{itemize} + +\end{frame}} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\mode{ +\begin{frame}[c] +\frametitle{\begin{tabular}{c}Why Scala?\end{tabular}} + + +\begin{itemize} +\item \large {\bf Immutability}:\\ +\normalsize keeps concurrency predictable +\end{itemize} + +\end{frame}} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\mode{ +\begin{frame}[c] +\frametitle{\begin{tabular}{c}Why Scala?\end{tabular}} + + +\begin{itemize} +\item \large {\bf First-Class Functions}:\\ +\normalsize powerful idea from functional programming +\end{itemize} + +\end{frame}} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\mode{ +\begin{frame}[c] +\frametitle{\begin{tabular}{c}Why Scala?\end{tabular}} + + +\begin{itemize} +\item \large {\bf Pattern-Matching}:\\ +\normalsize ``keeps your needles out of the haystacks'' +\end{itemize} + +\end{frame}} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\mode{ +\begin{frame}[t] +\frametitle{\begin{tabular}{c}Why Scala?\end{tabular}} + + +\begin{itemize} +\item \large {\bf You can avoid \textcolor{blue}{\texttt{null}}}: +\end{itemize} + +\begin{textblock}{6}(0.5,5) + \begin{tikzpicture} + \draw (0,0) node[inner sep=3mm,fill=cream, ultra thick, draw=red, rounded corners=2mm] + { \begin{minipage}{11cm}\raggedright\small + ``I call it my billion-dollar mistake. It was the invention of the null reference in + 1965. At that time, I was designing the first comprehensive type system for references in an + object oriented language (ALGOL W). My goal was to ensure that all use of references should + be absolutely safe, with checking performed automatically by the compiler. But I couldn't resist + the temptation to put in a null reference, simply because it was so easy to implement. This has + led to innumerable errors, vulnerabilities, and system crashes, which have probably caused + a billion dollars of pain and damage in the last forty years.'' Sir Tony Hoare\end{minipage}}; +\end{tikzpicture} +\end{textblock} + +\begin{textblock}{5}(11.8,1) +\includegraphics[scale=0.20]{hoare.jpg}\\ +\end{textblock} + +\end{frame}} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\mode{ +\begin{frame}[c] +\frametitle{\begin{tabular}{c}\texttt{null}\end{tabular}} + +\lstset{language=java}\footnotesize +\texttt{\lstinputlisting{MapJavaTester.java}} + +\end{frame}} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\mode{ +\begin{frame}[c] +\frametitle{\begin{tabular}{c}Why Scala?\end{tabular}} + + +\begin{itemize} +\item \large The Price You Pay with Scala: \textcolor{red}{\bf Complexity}\\ +\normalsize But it is worth it! +\end{itemize} + +\end{frame}} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\mode{ +\begin{frame}[c] +\frametitle{\begin{tabular}{c}Java: A Brief History\end{tabular}} + +\begin{itemize} +\item Released in 1995 by James Gosling from \\Sun Microsystems (work started in 1991)\medskip +\item derives much of its syntax from C and C++\medskip +\item compiles to JVM (``write once, run everywhere'')\medskip +\item no pointers --- instead automatic memory management (has a garbage collector)\medskip +\item statically typed\\ (``you cannot compare apples with oranges'') +\end{itemize} + +\begin{textblock}{5}(13,2) +\includegraphics[scale=0.20]{java.png}\\ +\end{textblock} + +\end{frame}} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\mode{ +\begin{frame}[c] + +\lstset{language=java}\fontsize{8}{10}\selectfont +\texttt{\lstinputlisting{FruitMain.java}} + +\only<2>{ +\begin{textblock}{6}(5,5) +\begin{tikzpicture} + \draw (0,0) node[inner sep=3mm,fill=cream, ultra thick, draw=red, rounded corners=2mm] + {\begin{minipage}{8cm}\raggedright\tt\footnotesize +\begin{tabular}{l} +FruitMain.java:20:~incompatible types\\ +found: Orange\\ +required: Apple\\ + a = o;\\ +1 error\\ +\end{tabular} +\end{minipage}}; +\end{tikzpicture} +\end{textblock}} + + +\end{frame}} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\mode{ +\begin{frame}[c] + +\lstset{language=java}\fontsize{8}{10}\selectfont +\texttt{\lstinputlisting{FruitArray.java}} + +\only<2>{ +\begin{textblock}{8}(1,5) +\begin{tikzpicture} + \draw (0,0) node[inner sep=3mm,fill=cream, ultra thick, draw=red, rounded corners=2mm] + {\begin{minipage}{11cm}\raggedright\tt\fontsize{8}{10}\selectfont +\begin{tabular}{l} +{\large \rm runtime exception}\\ +orange\\ +Exception in thread "main" java.lang.ArrayStoreException:~Apple\\ +at FruitArray.main(FruitArray.java:21)\\ +\end{tabular} +\end{minipage}}; +\end{tikzpicture} +\end{textblock}} + + +\end{frame}} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\mode{ +\begin{frame}[c] + +\begin{itemize} +\item {\bf In Java a class for students} +\end{itemize} + +{\lstset{language=java}\fontsize{8}{10}\selectfont +\texttt{\lstinputlisting{Student.java}}} + +\onslide<2->{ +\begin{itemize} +\item {\bf Same in Scala} +\end{itemize} + +{\lstset{language=Scala}\fontsize{8}{10}\selectfont +\texttt{\lstinputlisting{Student.scala}}}} + +\end{frame}} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\mode{ +\begin{frame}[c] +\frametitle{\begin{tabular}{c}Scala\end{tabular}} + +\begin{itemize} +\item First released in 2003 (work started in 2001) by Martin Odersky from EPFL in Lausanne\smallskip +\item at the moment 2.9.2 (2012)\smallskip +\item blend of functional and oo-programming\medskip\medskip +\item Twitter switched in 2009 from Ruby to Scala +\item Guardian switched in 2011 from Java to Scala +\item UBS approved it for general production usage (2011) +\end{itemize} + + +\end{frame}} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\mode{ +\begin{frame}[t] + +\only<1>{ +Hello World in Java:\medskip +{\lstset{language=Java}\fontsize{12}{14}\selectfont +\texttt{\lstinputlisting{Hello.java}}}} +\only<2->{ +Hello World in Scala:\medskip +{\lstset{language=Scala}\fontsize{12}{14}\selectfont +\texttt{\lstinputlisting{Hello.scala}}}\bigskip\medskip + + +Some curiosities, compared to Java: +\begin{itemize} +\item<3-> The semicolons are missing. +\item<4-> The {\bf\texttt{public}} access modifier is missing. +\item<5-> The declaration of main starts with {\bf\texttt{def}}. +\item<6-> main returns mysterious type {\bf\texttt{Unit}}. +\item<7-> In Scala there is {\bf\texttt{object}} and {\bf\texttt{class}}. +\end{itemize}} + + +\end{frame}} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\mode{ +\begin{frame}[c] + +\begin{center} +\textcolor{ProcessBlue}{\LARGE\bf Demo} +\end{center} +\end{frame}} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\mode{ +\begin{frame}[c] +\frametitle{\begin{tabular}{c}Functions\end{tabular}} + +Transformations:\bigskip +\begin{center} +\LARGE +Input(s) $\Rightarrow$ Output\bigskip\bigskip +\end{center}\pause + +``Given some input; produce some output.''\\ +``Transform the input into some output.''\\ + +\end{frame}} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\mode{ +\begin{frame}[c] +\frametitle{\begin{tabular}{c}Functions in Scala\end{tabular}} + +\mbox{}\bigskip\bigskip\bigskip\bigskip +{\lstset{language=Scala}\fontsize{12}{14}\selectfont +\texttt{\lstinputlisting{max.scala}}} + +\small +\begin{textblock}{8}(1,3) +{\bf\texttt{def}} starts a function definition +\end{textblock} +\begin{textblock}{8}(2.3,4) +function name +\end{textblock} +\begin{textblock}{8}(3.8,5) +parameter list in parentheses +\end{textblock} +\begin{textblock}{8}(6.5,6) +function's result type +\end{textblock} +\begin{textblock}{8}(11,7) +equal sign +\end{textblock} +\begin{textblock}{8}(9,10) +function body\\ +in curly braces +\end{textblock} + +\end{frame}} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\mode{ +\begin{frame}[c] + +{\lstset{language=Java}\fontsize{7}{8}\selectfont +\texttt{\lstinputlisting{URLReader.java}}} + +\only<2>{ +\begin{textblock}{5}(12,2) +\includegraphics[scale=0.50]{skeleton.jpg}\\ +\end{textblock}} +\end{frame}} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\mode{ +\begin{frame}[t] +\frametitle{\begin{tabular}{c}Map\end{tabular}} + +\begin{itemize} +\item {\bf\texttt{map}} takes a function, say f, and applies it to every element of the list: +\end{itemize} + +\begin{textblock}{15}(2,7) +\fontsize{13}{14}\selectfont +\bf\texttt{List(1, 2, 3, 4, 5, 6, 7, 8, 9)} +\end{textblock} + +\begin{textblock}{15}(2,10) +\fontsize{13}{14}\selectfont +\bf\texttt{List(1, 4, 9, 16, 25, 36, 49, 64, 81)} +\end{textblock} + +\end{frame}} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\mode{ +\begin{frame}<1-2>[t] +\frametitle{\begin{tabular}{c}Filter\end{tabular}} + +\begin{itemize} +\item {\bf\texttt{filter}} takes a condition, say p, and filters out all elements of the list not satisfying p: +\end{itemize} + +\begin{textblock}{15}(2,7) +\fontsize{13}{14}\selectfont +\bf\texttt{List(1, 2, 3, 4, 5, 6, 7, 8, 9)} +\end{textblock} + +\end{frame}} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\mode{ +\begin{frame}[c] +\frametitle{\begin{tabular}{c}Conclusion\end{tabular}} + +\begin{itemize} +\item Scala is still under development (compiler is slow)\medskip +\item there are at least 5 books on the market\medskip +\item {\bf\texttt{http://www.scala-lang.org/}}\medskip +\item ``deep'' type-system (computer science)\bigskip\pause +\item (for the lazy programmer)\\ programming in Scala is much more fun + +\end{itemize} +\end{frame}} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\end{document} + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: t +%%% End: +