|
1 | 1 | \chapter{Resultat} |
2 | 2 |
|
3 | | -I detta kapitel redovisas kortfattat det resulterande läromaterialet, vilket består av fem kapitel. Det är även publicerat på en hemsida och dess källkod är fritt tillgänglig. Även |
| 3 | +I detta kapitel redovisas det resulterande läromaterialet, vilket består av fem kapitel. Det är publicerat på en hemsida och dess källkod är fritt tillgänglig. Även |
4 | 4 | resultaten från utvärderingen med testgruppen och mötena med Åke Fäldt redovisas. |
5 | 5 |
|
6 | 6 | \section{Läromaterialet}\label{sec:res_laromaterial} |
7 | 7 |
|
8 | | -Läromaterialet blev till slut en sammanvävning av domänspecifika språk som |
9 | | -modellerar fysik, och en lärotext som förklarar kopplingen mellan fysiken och de |
10 | | -domänspecifika språken. Figur~\ref{fig:smakprov_laromaterial} visar ett kort |
11 | | -utdrag ur läromaterialet. Där ses hur domänspecifika språk och lärotext |
12 | | -är sammanvävda. Ett längre utdrag finns i bilaga~\ref{cha:utdrag}. |
| 8 | +Detta avsnitt innehåller en översikt av läromaterialet samt ett utdrag av vardera kapitel. Utdragen exemplifier delar av läromaterialet och implementationerna av domänspecifika språk. De fullständiga implementationerna är inte inkluderade (och förklarade) eftersom det är precis det läromaterialet innehåller. Rapporten skulle då bli en kopia av läromaterialet. Istället hänvisas till ett längre utdrag i bilaga~\ref{cha:utdrag} samt hemsidan där läromaterialet~\cite{LYAP} finns tillgängligt. De utdrag som finns är inga exakta kopior ord-för-ord av läromaterialet utan de har anpassats till rapporten. |
| 9 | + |
| 10 | +\subsection{Översikt} |
| 11 | + |
| 12 | +Läromaterialet är en löpande text där Haskell-kod och lärotext sammanvävts. Det ser ut som i figur~\ref{fig:smakprov_laromaterial}. I texten följer läsaren med i implementationen av ett domänspecifikt språk och det visas hur det används. Tanken är att läsaren parallellt programmerar det som texten förklarar, för att på så sätt även få praktisk färdighet i det som presenterats. För detta syfte finns det även övningar tillagda direkt i den löpande texten, se figur~\ref{fig:smakprov_ovning}, som ofta innebär att läsaren själv ska implementera en liten del av det domänspecifika språket. Det finns också övningar i slutet av kapitlet som ofta innebär större vidareutvecklingar av de domänspecifika språken. |
13 | 13 |
|
14 | 14 | \begin{figure}[tph] |
| 15 | + \centering |
15 | 16 | \includegraphics[width=\linewidth]{figure/smakprov_laromaterial.png} |
16 | 17 | \caption{Ett smakprov av det resulterande läromaterialet. Lärotexten ligger mot den ljusgrå bakgrunden medan det domänspecifika språket ligger mot den mörkgrå. Notera att detta exemplets källkod (i Litterate Haskell) har visats tidigare i avsnitt \ref{sec:lhs}.}~\label{fig:smakprov_laromaterial} |
17 | 18 | \end{figure} |
18 | 19 |
|
19 | | -Språket i lärotexten är enligt projektgruppen lättsamt\footnote{Diskuteras utförligare i avsnitt \ref{sec:res_disk}.} och det finns även bilder och övningar. |
20 | | -Figur~\ref{fig:smakprov_bild_laromaterial} är ett exempel på en bild ur |
21 | | -läromaterialet. Notera speciellt den medvetet oseriösa ritningstekniken som är |
22 | | -tänkt att vara rolig och muntra upp läsaren. Övningar ligger både i den löpande |
23 | | -texten och i slutet av kapitlet. Övningarna i den löpande texten innebär oftast |
24 | | -att läsaren ska implementera en liten del av det aktuella domänspecifika språket |
25 | | -på egen hand, vilket illustreras i figur~\ref{fig:smakprov_ovning}. Övningarna i slutet av kapitlet innebär ofta större vidareutvecklingsmöjligheter av de domänspecifika språken. |
26 | | - |
27 | 20 | \begin{figure}[tph] |
28 | 21 | \centering |
29 | | - \begin{subfigure}[t]{0.5\textwidth} |
30 | | - \centering |
31 | | - \includegraphics[width=0.9\linewidth]{figure/smakprov_bild_laromaterial.png} |
32 | | - \caption{Exempel på en bild. Bilden visar hur en hund springer och |
33 | | - hoppar upp på en stillastående |
34 | | - vagn.}~\label{fig:smakprov_bild_laromaterial} |
35 | | - \end{subfigure}% |
36 | | - ~~~ |
37 | | - \begin{subfigure}[t]{0.5\textwidth} |
| 22 | + \includegraphics[width=0.4\linewidth]{figure/smakprov_ovning.png} |
| 23 | + \caption{Exempel på en övning. Övningen ligger som en del av den löpande texten.} |
| 24 | + \label{fig:smakprov_ovning} |
| 25 | +\end{figure} |
| 26 | + |
| 27 | +Språket i lärotexten är enligt projektgruppen lättsamt\footnote{Diskuteras utförligare i avsnitt \ref{sec:res_disk}.} och i detta syfte finns det även bilder tillagda. Figur~\ref{fig:smakprov_bild_laromaterial} är ett exempel på en bild ur |
| 28 | +läromaterialet. Notera speciellt den medvetet oseriösa ritningstekniken som är tänkt att vara rolig och muntra upp läsaren. |
| 29 | + |
| 30 | +\begin{figure}[tph] |
38 | 31 | \centering |
39 | | - \includegraphics[width=0.9\linewidth]{figure/smakprov_ovning.png} |
40 | | - \caption{Exempel på en övning. Övningen ligger som en del av den |
41 | | - löpande texten.}~\label{fig:smakprov_ovning} |
42 | | - \end{subfigure} |
43 | | - \caption{Exempel på en bild och en övning ur läromaterialet.} |
| 32 | + \includegraphics[width=0.4\linewidth]{figure/smakprov_bild_laromaterial.png} |
| 33 | + \caption{Exempel på en bild. Bilden visar hur en hund springer och hoppar upp på en stillastående vagn.} |
| 34 | + \label{fig:smakprov_bild_laromaterial} |
44 | 35 | \end{figure} |
45 | 36 |
|
46 | | -Läromaterialet behandlar ett flertal områden inom fysik och matematik. |
47 | | -Fokuset är på klassisk mekanik samt den matematik som tillhör området. I |
48 | | -sin fullständighet är de behandlade områdena: |
| 37 | +Läromaterialet innehåller 5 kapitel som vardera behandlar ett område inom fysik och matematik. Fokuset är på klassisk mekanik samt den matematik som tillhör området. De behandlade områdena är: |
49 | 38 |
|
50 | 39 | \begin{itemize} |
51 | 40 | \item Dimensioner |
@@ -96,6 +85,86 @@ \section{Läromaterialet}\label{sec:res_laromaterial} |
96 | 85 | antal delvis färdigställda områden, till exempel bevisföring. Texten i |
97 | 86 | läromaterialet är skriven på engelska. |
98 | 87 |
|
| 88 | +\subsection{Dimensioner} |
| 89 | +\label{sec:grund_impl} |
| 90 | + |
| 91 | +I detta avsnitt visas delar av hur implementationen av dimensioner ser ut i läromaterialet. Den fullständiga implementationen innehåller tre delar: |
| 92 | + |
| 93 | +\begin{enumerate} |
| 94 | + \item Dimensioner på värdenivå |
| 95 | + \item Dimensioner på typnivå |
| 96 | + \item Datatyp för storheter |
| 97 | +\end{enumerate} |
| 98 | + |
| 99 | +Dimensioner på värdenivå används för att enkelt kunna skriva ut dimensioner i GHCi. Dimensioner på typnivå används för att ge typsäkerhet till dimensioner, så att till exempel en längd och en massa inte kan adderas, likt att ett värde av typ \texttt{Double} och \texttt{Integer} inte kan adderas i Haskell. Till sist kombineras de två varianterna av dimensioner till en datatyp för storheter som aritmetiska operationer kan utföras på. |
| 100 | + |
| 101 | +Dimensioner kan ses som en produkt av de 7 basdimensionerna\footnote{Längd, massa, tid, elektrisk ström, temperatur, substansmängd och ljusstyrka.}, med en indiviudell exponent till varje basdimension. Datatypen, på värdenivå, som används ser därför ut som följande |
| 102 | + |
| 103 | +\begin{lstlisting}[frame=none,belowskip=-0.5\baselineskip] |
| 104 | +data Dim = Dim Integer -- Length |
| 105 | + Integer -- Mass |
| 106 | + Integer -- Time |
| 107 | + Integer -- Current |
| 108 | + Integer -- Temperature |
| 109 | + Integer -- Substance |
| 110 | + Integer -- Luminosity |
| 111 | + deriving (Eq) |
| 112 | +\end{lstlisting} |
| 113 | + |
| 114 | +Varje fält i datatypen representerar exponenten för motsvarande basdimension. Om exponenten är $0$ betyder det att den basdimension inte är inkluderad i dimensionen. Några exempel ges för att förtydliga. |
| 115 | + |
| 116 | +\begin{lstlisting}[frame=none,belowskip=-0.5\baselineskip] |
| 117 | +length = Dim 1 0 0 0 0 0 0 |
| 118 | +mass = Dim 0 1 0 0 0 0 0 |
| 119 | +time = Dim 0 0 1 0 0 0 0 |
| 120 | + |
| 121 | +velocity = Dim 1 0 (-1) 0 0 0 0 |
| 122 | +acceleration = Dim 1 0 (-1) 0 0 0 0 |
| 123 | +area = Dim 2 0 0 0 0 0 0 |
| 124 | +\end{lstlisting} |
| 125 | + |
| 126 | +Hastighet skrivs vanligtvis som $\frac{m}{s}$ men ekvivalent är att skriva $m^1*s^{-1}$ vilket förklarar varför värdena ovan ser ut som de gör. |
| 127 | + |
| 128 | +I resterande del av detta kapitel i läromaterialet visas hur multiplikation och division samt hur en \textit{utskriftsfunktion}, som skriver ut ett värde snyggt, kan implementeras. Därefter följer ett antal delkapitel som innehåller testning, typnivådimensioner och storheter. Som tidigare nämnt inkluderas de inte här eftersom då skulle rapporten och läromaterialet bli precis samma text. |
| 129 | + |
| 130 | +\subsection{Matematisk analys} |
| 131 | + |
| 132 | +\subsection{Vektorer} |
| 133 | + |
| 134 | +\subsection{Exempelproblem} |
| 135 | + |
| 136 | +\subsection{Partikelmekanik} |
| 137 | + |
| 138 | +Implementationen av komposita områden var en vidareutveckling av de redan |
| 139 | +implementerade grundläggande områdena. Detta utfördes genom att kombinera |
| 140 | +element från två eller fler områden för att på så sätt tillsammans skapa ett |
| 141 | +nytt område. Denna kombination växte fram organiskt genom att studera de områden |
| 142 | +som skulle implementeras och se vilka av de grundläggande områdena som |
| 143 | +låg till grund för det. Efter en sådan genomgång växte den faktiska |
| 144 | +implementationen fram genom experimentering och diskussion inom gruppen. |
| 145 | + |
| 146 | +Ett exempel på ett komposit område är implementationen av partikelmekanik |
| 147 | +där de grundläggande områdena vektorer och matematisk analys |
| 148 | +kombinerades. Anledningen till detta var att partiklars position, hastighet och |
| 149 | +acceleration modelleras med vektorer, dessutom är de krafter som påverkar |
| 150 | +partiklar även de modellerade som vektorer. Sedan används matematisk analys för att |
| 151 | +göra beräkningar på dem. Därför var det naturligt att modellera partikelmekanik |
| 152 | +med hjälp av vektorer vars komponenter var uttryck som |
| 153 | +implementerades av matematisk analys. |
| 154 | + |
| 155 | +Exempel från läromaterialet: |
| 156 | +\begin{lstlisting}[frame=none, belowskip=-0.5\baselineskip, xleftmargin=0.5in] |
| 157 | +type Mass = FunExpr |
| 158 | +type VectorE = Vector3 FunExpr -- Vector of functional |
| 159 | + -- expressions |
| 160 | + |
| 161 | +data Particle = P { pos :: VectorE -- Position as a |
| 162 | + -- function of time |
| 163 | + -- , unit m |
| 164 | + , mass :: Mass -- Mass, unit kg |
| 165 | + } |
| 166 | +\end{lstlisting} |
| 167 | + |
99 | 168 | \section{Utvärderingen med testgruppen}\label{sec:res_test} |
100 | 169 |
|
101 | 170 | Utfallet från utvärderingen med testgruppen var till övervägande del positivt. |
@@ -139,4 +208,4 @@ \section{Möte med programansvarig och datas nämnd för studier} |
139 | 208 | Både Roger Johansson, programansvarig på datateknik, och datas nämnd för studier (DNS) |
140 | 209 | var positiva till projektets initiativ och målsättning. Johansson beskrev |
141 | 210 | problematiken med att matematiken inte är lika naturlig för datastudenter som för |
142 | | -andra ingenjörsområden |
| 211 | +andra ingenjörsområden. |
0 commit comments