From b1ccd71006f0663d33710fba96ab9321bf1ab690 Mon Sep 17 00:00:00 2001 From: Matthijs Kooijman Date: Sun, 13 Dec 2009 20:42:25 +0100 Subject: [PATCH] Fill most of the presentation. --- figures/archs/Pyth.dia | Bin 0 -> 2826 bytes figures/archs/Pyth.pdf | Bin 0 -> 7688 bytes figures/archs/Square.dia | Bin 0 -> 1511 bytes figures/archs/Square.pdf | Bin 0 -> 6306 bytes figures/norm/Incorrect.dia | Bin 0 -> 1475 bytes figures/norm/Incorrect.pdf | Bin 0 -> 2076 bytes figures/norm/Normalizing.dia | Bin 0 -> 1666 bytes figures/norm/Normalizing.pdf | Bin 0 -> 17815 bytes matthijs/introduction.lhs | 287 +++++++++++++++++++++++++++++++---- 9 files changed, 259 insertions(+), 28 deletions(-) create mode 100644 figures/archs/Pyth.dia create mode 100644 figures/archs/Pyth.pdf create mode 100644 figures/archs/Square.dia create mode 100644 figures/archs/Square.pdf create mode 100644 figures/norm/Incorrect.dia create mode 100644 figures/norm/Incorrect.pdf create mode 100644 figures/norm/Normalizing.dia create mode 100644 figures/norm/Normalizing.pdf diff --git a/figures/archs/Pyth.dia b/figures/archs/Pyth.dia new file mode 100644 index 0000000000000000000000000000000000000000..251c2749097c21246e244e9a0f85f6799d2410fc GIT binary patch literal 2826 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 literal 0 HcmV?d00001 diff --git a/figures/archs/Pyth.pdf b/figures/archs/Pyth.pdf new file mode 100644 index 0000000000000000000000000000000000000000..7d9e94ed6dc77e1aa48d9b062ad5d707bcc7d012 GIT binary patch literal 7688 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 literal 0 HcmV?d00001 diff --git a/figures/archs/Square.dia b/figures/archs/Square.dia new file mode 100644 index 0000000000000000000000000000000000000000..dcf77eb54942cdb7f350e0c5c542e3b413976b8a GIT binary patch literal 1511 zcmV* z5N`=&!I_!#VSjrKAx-!&NgzyHDM+mp=5mj1&ON?9$@>p4%g}lfNh;&$&PD**mWXEY zTt>m2{m-XA-um{3`gqxJBI02ztgH(+E z=V8c4I%s6y-&odRf;m?_yI0)hN+oi-R>F$-Qry{7KKl|R@j9B@+o&RL7Kd?SJ@N3) ze)E`L_NYiRD&=X(z2bqGCW3!4r-u4stV`;ZNUCX2Q3;o-4mpkEQ1EDrs*<(nj+4%Ks43PqEiD-sQ|v+JyOeqmdfnk3rBd;r z6VeFJa;_G25E-drLcOvtgbWs{XZr2!@A7f36a|T#w<}R8!jL6jr^!p}yYIeK+w7Zx zvOmdGPD9Z&`b)g$UHZ*s(pTS3z8&o!@5zR3HsgLb_XQR7{QWLi%ehF8(5xI|$h0WJ zM#omY8h7f#Y;RS%j~pW88<7<0ANGBRRlMLrZ7e=h@@eudUW9-ct$!kKQ5#FmzFM8R{Zp0+~*$7>S+* zkAhI_aWWW0T{Ol7uv_E+=uZju*kR4ur53HKlSHL{I zi)MA0q~cM)iQ(9krS2!_2Ue?KKKIfH*nNq2m%vUEk@6 zXlihVf#m5*zpy%*h}O%ZtvVVy-U^l)9yFGxge)$x59vz9`4P4fSvm9mW;pJ)j@{g&$B}Br%l=|L@}&$n zdSEb*+w5?5$Om_MMcdvv*uz@|?z0R&^WdY5 zM1#zczKtpaK64$GX&iyBGhnN#k(?Zf0LPEiD%SK>Wpmg=8HBVyq7i*zaBijYFJg7MD@vZ$| z8{T#;so}iQNt>Mh+T`S=IH)L*yuZVAuSXuhp5qUzN7ae72+{E%7cfLlQK3rURfVo9 z^aE6gURs4J`m-}QXm1mbWyfPLuR_nIL)v%@V8+}G2_m14F$E5DNq+Klx|(^}vQ9Jw zj>?g7p7l^YFycG8WD*~C>}Yi9%vRO$G`aEDN`0kDh0T@fU%FBaW{umsQga7fZ-p2j z-yhU)-ytDD^&x+(cVI%c$i#teH{^;1bDB+ax=B;AXwv`IJP}5prtMUHqDRxyp*eR1 zjqXgXYJ6C}oPMBnXXa!|c7ba$WlpkW&IK~rF>Q@ro2}Ap#GF$bH4~;X6w>V*lrt5| zyMWJvapu!Gz$0i_n`H-th&x6QV2E+{(f0}c`St1LDosO6lZlI0W%>n`$?vO7*eSkt z8djIS!(^(2^Y3zh6-oMVm8791shNaVLHd~m=|OyzA~BdRtoM=510*8^^PEA?a|bZv z{+Lto^|<}p4D+Mn&a;%V-^)xgDx}?PU^t+A0gdj3`B`%G*%O_Q?dSYgiuX6ApE2Iw Nd;?s#ns2)?005YC02KfL literal 0 HcmV?d00001 diff --git a/figures/archs/Square.pdf b/figures/archs/Square.pdf new file mode 100644 index 0000000000000000000000000000000000000000..36ebe54429702879065cc3ba52fbcb0cd96e6b29 GIT binary patch literal 6306 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 M0SBQQn%qGE0PDIpe*gdg literal 0 HcmV?d00001 diff --git a/figures/norm/Normalizing.pdf b/figures/norm/Normalizing.pdf new file mode 100644 index 0000000000000000000000000000000000000000..0fe07e980c12f08f76dc3e9b00a8d574174b6fa0 GIT binary patch literal 17815 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%0A@@6ngXd8a<=mX5w*dvkb(!s~%*X#fdL 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 $ sqrt(4) = 2$ \end{block} -} - -\note[itemize] -{ - \item Functional language - Math like - \item Central: Functions - \item Outside: - \begin{itemize} - \item Put arguments in (application) - \item get result out - \end{itemize} - \item Inside: - \begin{itemize} - \item \emph{How} does the function work? (definition) - \end{itemize} - - \item Next sheet: sqrt example -} - -\frame -{ - \begin{block}{A mathematical square function} + \begin{block}{A mathematical square function}<2-> $ f(x) = x * x$ \end{block} - \pause - \begin{block}{A square function in Haskell} + \begin{block}{A square function in Haskell}<3-> \texttt{square x = x * x} \end{block} } \note[itemize] { + \item Functionele taal -$>$ Wiskunde-achtig + \item Functies staan centraal + \item Next sheet: sqrt example + \item Van buitenaf: + \begin{itemize} + \item Stop er argumenten in (toepassen) + \item Krijg een resultaat terug + \end{itemize} \item Next sheet: f(x) = x*x example + \item Van binnenaf: + \begin{itemize} + \item \emph{Hoe} werkt de functie (definitie) + \end{itemize} \item Next sheet: square in Haskell - \item No braces - \item Next sheet: pyth in Haskell - \item Functions can be used by other functions + \item Geen haakjes } \frame @@ -67,6 +57,7 @@ \includegraphics[width=3cm]{figures/Pythagoras} \end{column} \end{columns} + \pause % TODO: Alignment is weird due to mixing columns and non-columns \begin{block}{Calculating $c$ in Haskell} @@ -74,4 +65,244 @@ \end{block} } +\note[itemize] +{ + \item Functies kunnen door andere functies gebruikt worden + \item Next sheet: Pyth function + \item Complexere functie + \item Next sheet: Pyth in Haskell +} + +\frame +{ + \begin{block}{} + \texttt{pyth a b = sqrt ((square a) + (square b))} + \end{block} + + \begin{figure} + \includegraphics[width=9.5cm]{figures/archs/Pyth} + \end{figure} +} + +\note[itemize] +{ + \item Next sheet: Pyth hardware + \item Argumenten -$>$ input poorten + \item Toepassing -$>$ component + \item Resultaat -$>$ output poort + \item (Combinatorische) hardware is continu +} + +\frame +{ + \frametitle{Purity} + + \begin{block}{Pure functions} + sqrt, pyth + \end{block} + \begin{block}{Impure functions} + random, delete\_file + \end{block} +} + +\note[itemize] +{ + \item Next sheet: Purity + \item Wiskundige en functionele functies zijn (meestal) puur. + \item Zelfde argumenten -$>$ zelfde resultaten + \item Geen bijwerkingen. +} + +\frame +{ + TODO: Impure (stateful) example. +} + +\note[itemize] +{ + \item TODO +} + +\frame{ + \begin{center} + {\Huge \clash} + + \bigskip + CAES language for hardware descriptions + \end{center} +} + +\note[itemize] +{ + \item Next sheet: \clash + \item Hardware beschrijven in Haskell: \clash + \item Nog niet gezien: keuzes, pattern matching, polymorfisme, hogere orde + functies.... + \item Dit was de taal -$>$ compiler nodig +} + +\frame +{ + \begin{block}{Compiler pipeline} + $\xrightarrow{Haskell}{GHC frontend} + \xrightarrow{Core}{Normalization} + \xrightarrow{Core}{Backend} + \xrightarrow{VHDL}$ + \end{block} +} + +\note[itemize] +{ + \item Next sheet: \clash\ pipeline + \item GHC: bestaande compiler + \item Core: simpele functionale taal, niet minder expressief (vergelijk: + taal zonder synoniemen) + \item VHDL: Complexe HDL, gebruiken alleen netlist onderdelen. + \item Normalisatie: Nog simpeler maken. +} + +\frame +{ + \frametitle{Netlists} + + \bigskip + \bigskip + \begin{figure} + \includegraphics[width=9.5cm]{figures/archs/Square} + \end{figure} + + \begin{block}{Remember \texttt{square}} + square x = x * x + \end{block} + +} + +\note[itemize] +{ + \item Next sheet: Square netlist + \item Core hetzelfde als Haskell -$>$ gebruik Haskell syntax voor Core + \item Netlist is componenten (vierkantjes) en verbindingen (lijntjes) + \item Component heeft poorten, poorten moeten een naam hebben + \item Resultaat van square heeft geen naam -$>$ geen normaalvorm +} + +\frame +{ + \frametitle{Transformation} + \begin{columns} + \begin{column}{5cm} + func = E + + \smallskip + \hrule + + \smallskip + func = let res = E in res + \end{column} + \begin{column}{5cm} + E has no name + \end{column} + \end{columns} + + \pause + \bigskip + \begin{block}{Apply to square} + square x = x * x + + \smallskip + \hrule + + \smallskip + square x = let res = x * x in res + \end{block} +} + +\note[itemize] +{ + \item Next sheet: transformation example + \item Transformatie nodig om output poort een naam te geven + \item Next sheet: Apply to square + \item Toepassen op square, res heeft nu een naam. +} + +\frame +{ + \frametitle{Normalization system} + + \begin{figure} + \includegraphics[width=9.5cm]{figures/norm/Normalizing} + \end{figure} +} + +\note[itemize] +{ + \item Systeem van transformaties + \item Volgorde ongedefinieerd: Doe maar wat, tot het net meer kan. + \item Next sheet: Graafnotatie + \item Lijnen zijn transformaties + \item Keuzes (meerdere uitgaande lijnen) + \item Alles komt onderin uit +} + +\frame +{ + \frametitle{Normalization system} + + \begin{figure} + \includegraphics[width=8cm]{figures/norm/Incorrect} + \end{figure} +} + +\note[itemize] +{ + \item Meerdere normaalvormen + \item Cykel + \item Systeem werkt nu \emph{meestal} + \item verbeteringen en bewijzen nodig +} + +\frame +{ + \frametitle{Normalization system} + + \begin{itemize} + \item Easy to work with + \item Allows analysis + \item Still complex + \end{itemize} +} + +\note[itemize] +{ + \item Goede scheiding + \item Makkelijk implementeren + \item Wiskundige beschrijving -$>$ bewijzen + \item Huidige systeem is nog incompleet + \item De goede weg +} + +\frame +{ + \frametitle{But now?} + \begin{itemize} + \item \clash\ has a solid base + \item Lots of work left + \item Needs testing! + \end{itemize} +} + +\note[itemize] +{ + \item \clash\ is helemaal nieuw werk + \item Tekortkomingen: Haskell is niet ideaal, state beschrijvingen zijn + niet compact, transformaties zijn nog niet (bewezen compleet). + \item Meer testen nodig, +} + +\frame +{ + {\Huge Thanks!} + +} + % vim: set filetype=tex sw=2 sts=2 expandtab: -- 2.30.2