Skip to content

Commit 95a9347

Browse files
author
Oskar Lundström
committed
Gjorde delar av disk till en rad
1 parent 9c57eb3 commit 95a9347

File tree

1 file changed

+20
-96
lines changed

1 file changed

+20
-96
lines changed

Rapport/include/Diskussion.tex

Lines changed: 20 additions & 96 deletions
Original file line numberDiff line numberDiff line change
@@ -181,21 +181,9 @@ \subsection{Om läromaterialets fokus på matematik och Haskell snarare än
181181

182182
\subsection{Lämpliga områden för domänspecifika språk}\label{sec:lampligt}
183183

184-
Under genomförandet av projektet utfördes flera experiment för att bedöma olika
185-
områdens lämplighet för att modelleras med ett domänspecifikt språk. Det visade
186-
sig snabbt att vissa områden lämpade sig bättre än andra. Områden
187-
som vektorer och matematisk analys lämpade sig väldigt väl, och ingår även i
188-
läromaterialet (se avsnitt~\ref{sec:res_laromaterial}). Detta var inte särskilt
189-
förvånande eftersom båda områdena är varsin egen gren inom matematiken
190-
och lämpar sig därmed väl för implementering i Haskell som är ett språk med nära
191-
anknytning till matematik. En annan sak som dessa områden hade
192-
gemensamt var en tydlig syntax och en fix struktur som bestod av ``data och
193-
operationer''. Tabell~\ref{tab:data_och_ops} visar några exempel på områden med
194-
sina data och operationer.
195-
196-
\captionsetup[figure]{name=Tabell}
184+
Under genomförandet av projektet utfördes flera experiment för att bedöma olika områdens lämplighet för att modelleras med ett domänspecifikt språk. Det visade sig snabbt att vissa områden lämpade sig bättre än andra. Områden som vektorer och matematisk analys lämpade sig väldigt väl, och ingår även i läromaterialet (se avsnitt~\ref{sec:res_laromaterial}). Detta var inte särskilt förvånande eftersom båda områdena är varsin egen gren inom matematiken och lämpar sig därmed väl för implementering i Haskell som är ett språk med nära anknytning till matematik. En annan sak som dessa områden hade gemensamt var en tydlig syntax och en fix struktur som bestod av ``data och operationer''. Tabell~\ref{tab:data_och_ops} visar några exempel på områden med sina data och operationer.
197185

198-
\begin{figure}[tph]
186+
\begin{table}[tph]
199187
\centering
200188
\caption{Exempel på data och operationer i några domänspecifika språk}\label{tab:data_och_ops}
201189
\begin{tabular}{l|l}
@@ -205,15 +193,9 @@ \subsection{Lämpliga områden för domänspecifika språk}\label{sec:lampligt}
205193
Vektorer & Addition, skalärprodukt \\
206194
Analys, funktioner & Derivera, multiplicera \\ \bottomrule
207195
\end{tabular}
208-
\end{figure}
196+
\end{table}
209197

210-
\captionsetup[figure]{name=Figur}
211-
212-
Att notera ur tabell~\ref{tab:data_och_ops} är att operationerna inom ett område
213-
görs på en och samma slags data, och sedan resulterar i samma slags data igen.
214-
Det här exemplifieras i matematisk analys, där derivering är en operation som
215-
görs på en funktion och resulterar i en annan funktion. Detta illustreras
216-
i figur~\ref{fig:analys_op_exempel}.
198+
Att notera ur tabell~\ref{tab:data_och_ops} är att operationerna inom ett område görs på en och samma slags data, och sedan resulterar i samma slags data igen. Det här exemplifieras i matematisk analys, där derivering är en operation som görs på en funktion och resulterar i en annan funktion. Detta illustreras i figur~\ref{fig:analys_op_exempel}.
217199

218200
\begin{figure}[tph]
219201
\begin{mdframed}
@@ -227,94 +209,36 @@ \subsection{Lämpliga områden för domänspecifika språk}\label{sec:lampligt}
227209
&f_2(x) = (D(f_1))(x) = 2x
228210
\end{align*}
229211
\end{mdframed}
230-
\caption{Ett exempel på hur derivering, en operation i matematisk analys, tar
231-
data av ett slag till data av samma slag igen. I exemplet är $f_1$ och $f_2$
232-
data av slaget funktioner, medan $D$ är operationen derivering. Som synes har
233-
denna operation samma slags data både in och ut.}\label{fig:analys_op_exempel}
212+
\caption{Ett exempel på hur derivering, en operation i matematisk analys, tar data av ett slag till data av samma slag igen. I exemplet är $f_1$ och $f_2$ data av slaget funktioner, medan $D$ är operationen derivering. Som synes har denna operation samma slags data både in och ut.}\label{fig:analys_op_exempel}
234213
\end{figure}
235214

236-
Den fixa strukturen kombinerat med data och operationer\todo{?} gör det enkelt att
237-
modellera dessa områden med datatyper i Haskell. Datatyper har nämligen också en
238-
fix form. Dessutom blir relationen mellan data och operationer i fysik och
239-
datatyper och funktioner i Haskell tydligare, vilket illustreras i
240-
figur~\ref{fig:haskell_fysik_likhet}, som jämför fysikaliska dimensioner med
241-
motsvarande implementation i Haskell. Denna strukturella likhet gör
242-
modellerandet och manipulerandet av data enkel att genomföra rent tekniskt. Men
243-
den innebär också en pedagogisk vinst. Genom att ha strukturerat upp fysik
244-
tydligt i Haskell blir det förhoppningsvis enklare för läsaren att förstå hur
245-
datan (de matematiska strukturerna) hänger ihop rent fysikaliskt. Och även hur relationerna mellan olika
246-
datatyper och funktioner som dyker upp i läromaterialet direkt kan översättas
247-
till motsvarande relationer inom fysik.
215+
Den fixa strukturen kombinerat med data och operationer\todo{?} gör det enkelt att modellera dessa områden med datatyper i Haskell. Datatyper har nämligen också en fix form. Dessutom blir relationen mellan data och operationer i fysik och datatyper och funktioner i Haskell tydligare, vilket illustreras i figur~\ref{fig:haskell_fysik_likhet}, som jämför fysikaliska dimensioner med motsvarande implementation i Haskell. Denna strukturella likhet gör modellerandet och manipulerandet av data enkel att genomföra rent tekniskt. Men den innebär också en pedagogisk vinst. Genom att ha strukturerat upp fysik tydligt i Haskell blir det förhoppningsvis enklare för läsaren att förstå hur datan (de matematiska strukturerna) hänger ihop rent fysikaliskt. Och även hur relationerna mellan olika datatyper och funktioner som dyker upp i läromaterialet direkt kan översättas till motsvarande relationer inom fysik.
248216

249217
\begin{figure}[tph]
250218
\centering
251219
\frame{\includegraphics[width=0.6\linewidth]{figure/haskell_fysik_likhet.pdf}}
252-
\caption{Jämförelse mellan fysikaliska dimensioner (övre raden) och
253-
motsvarande implementation i Haskell (undre raden). Implementationen kommer
254-
från det resulterande läromaterialet. Mer om implementationen finns att läsa i
255-
avsnitt~\ref{sec:grund_impl}}\label{fig:haskell_fysik_likhet}
220+
\caption{Jämförelse mellan fysikaliska dimensioner (övre raden) och motsvarande implementation i Haskell (undre raden). Implementationen kommer från det resulterande läromaterialet. Mer om implementationen finns att läsa i avsnitt~\ref{sec:grund_impl}}\label{fig:haskell_fysik_likhet}
256221
\end{figure}\todo{Figur ligger fel enligt Exam}
257222

258-
Anledningen till att vi tycker att dessa drag gör ett område mer eller
259-
mindre lämpat för ett domänspecifikt språk kommer från det val vi gjorde tidigt
260-
i projektet, nämligen valet att använda Haskell. I avsnitt~\ref{sec:syntax}
261-
beskriver vi begreppen syntax, semantik och syntaxträd och dess koppling till
262-
både domänspecifika språk och Haskell. Dock finns det ingenting som säger att
263-
det måste läggas ett sådant stort fokus som vi har gjort på till exempel syntaxträd. Hade
264-
vi istället valt bort Haskell till fördel för ett objektorienterat språk hade vår definition av vad som gör ett område lämpat för
265-
implementation kanske sett helt annorlunda ut.
266-
267-
I kontrast till dessa lämpliga områden står mindre lämpliga områden (eller
268-
åtminstone områden som vi inte lyckades göra något bra av). Lutande plan är ett exempel på ett mindre lämpligt område. Områden av detta slag har drag som gör det mindre lämpligt än exempelvis vektorer.
269-
270-
När ett domänspecifikt språk skapas till ett område görs det genom att
271-
identifiera syntaxen som används, datan som modelleras,
272-
vilka operationer som används på denna data och vad det finns för lagar och samband
273-
som gäller för dessa. Detta sätt att arbeta fungerar bra för områden som är
274-
generella och som går att modellera på ett sätt som tillåter vidareutveckling, såsom
275-
vektorer i flera dimensioner eller vektorer vars komponenter kan vara av vilken
276-
typ som helst.
277-
278-
Ett exempel på ett område som inte har några tydliga data och operationer är
279-
lutande plan. Ett sådant område har istället teoretiska samband som relaterar
280-
olika egenskaper i systemet till varandra. Ett sådant samband är till exempel $a
281-
= g \cdot \sin(v)$ för det lutande planet i figur~\ref{fig:lutande_plan}.
223+
Anledningen till att vi tycker att dessa drag gör ett område mer eller mindre lämpat för ett domänspecifikt språk kommer från det val vi gjorde tidigt i projektet, nämligen valet att använda Haskell. I avsnitt~\ref{sec:syntax} beskriver vi begreppen syntax, semantik och syntaxträd och dess koppling till både domänspecifika språk och Haskell. Dock finns det ingenting som säger att det måste läggas ett sådant stort fokus som vi har gjort på till exempel syntaxträd. Hade vi istället valt bort Haskell till fördel för ett objektorienterat språk hade vår definition av vad som gör ett område lämpat för implementation kanske sett helt annorlunda ut.
224+
225+
I kontrast till dessa lämpliga områden står mindre lämpliga områden (eller åtminstone områden som vi inte lyckades göra något bra av). Lutande plan är ett exempel på ett mindre lämpligt område. Områden av detta slag har drag som gör det mindre lämpligt än exempelvis vektorer.
226+
227+
När ett domänspecifikt språk skapas till ett område görs det genom att identifiera syntaxen som används, datan som modelleras, vilka operationer som används på denna data och vad det finns för lagar och samband som gäller för dessa. Detta sätt att arbeta fungerar bra för områden som är generella och som går att modellera på ett sätt som tillåter vidareutveckling, såsom vektorer i flera dimensioner eller vektorer vars komponenter kan vara av vilken typ som helst.
228+
229+
Ett exempel på ett område som inte har några tydliga data och operationer är lutande plan. Ett sådant område har istället teoretiska samband som relaterar olika egenskaper i systemet till varandra. Ett sådant samband är till exempel $a = g \cdot \sin(v)$ för det lutande planet i figur~\ref{fig:lutande_plan}.
282230

283231
\begin{figure}[tph]
284232
\centering
285233
\frame{\includegraphics[width=0.5\linewidth]{figure/Lutande_plan.pdf}}
286-
\caption{Den variant av lutande plan som refereras till i exemplet i texten. $a$
287-
är en lådas acceleration längs med planet, $g$ är tyngdacceleration och $v$ är
288-
vinkeln. Friktionen antas vara försumbar.}~\label{fig:lutande_plan}
234+
\caption{Den variant av lutande plan som refereras till i exemplet i texten. $a$ är en lådas acceleration längs med planet, $g$ är tyngdacceleration och $v$ är vinkeln. Friktionen antas vara försumbar.}~\label{fig:lutande_plan}
289235
\end{figure}
290236

291-
Samband och ekvationer av detta slag kan visserligen modelleras som ett domänspecifikt
292-
språk, men vi menar att nyttan inte blir stor med det eftersom allt vi då gör är
293-
att skriva de formler som redan finns att tillgå i diverse kursböcker i fysik
294-
utan att tillföra någon ny kunskap och utan att modellera dem på ett generellts
295-
eller unikt sätt. Det som då kan göras är att programmera en ekvationslösare men
296-
den hade varit både mekanisk och komplex. Den skulle alltså skilja sig
297-
drastiskt från hur studenter löser problem för hand och skulle vara svår att förstå.
298-
Alldeles för mycket fokus skulle hamna på algoritmer istället för fysik. Vi
299-
anser även att en ekvationslösare inte hjälper till att lära ut fysik, tvärtom
300-
döljer den matematiken som ligger bakom svaret.
301-
302-
När det kommer till lutande plan och liknande områden är nyckeln att visserligen
303-
känna till vilka samband som gäller, men det är framförallt viktigt att veta när de ska
304-
användas och hur de ska tillämpas på olika typer av uppgifter. Vi behandlar
305-
därför områden som lutande plan genom att lösa exempeluppgifter modellerade i de
306-
tidigare domänspecifika språken. De tidigare språken tillhandahåller de matematiska
307-
verktyg som behövs för att koda upp lösningar av problem. Därav innehåller det
308-
resulterande läromaterialet, som beskrivs i avsnitt~\ref{sec:res_laromaterial},
309-
inga domänspecifika språk för fysikaliska problem.
310-
311-
Att vissa områden var mindre lämpliga var ett oväntat resultat i projektets
312-
genomförande. Vid start trodde vi att det skulle gå att göra domänspecifika
313-
språk för alla områden, såväl matematiska som fysikaliska, men som vi
314-
diskuterat här gick inte det. Istället gjordes uppdelningen mellan grundläggande och
315-
komposita områden, som beskrevs i avsnitt~\ref{sec:valet}, så att fysikaliska
316-
områden (som blev komposita) kunde behandlas som tillämpningar av
317-
grundläggande områden.
237+
Samband och ekvationer av detta slag kan visserligen modelleras som ett domänspecifikt språk, men vi menar att nyttan inte blir stor med det eftersom allt vi då gör är att skriva de formler som redan finns att tillgå i diverse kursböcker i fysik utan att tillföra någon ny kunskap och utan att modellera dem på ett generellts eller unikt sätt. Det som då kan göras är att programmera en ekvationslösare men den hade varit både mekanisk och komplex. Den skulle alltså skilja sig drastiskt från hur studenter löser problem för hand och skulle vara svår att förstå. Alldeles för mycket fokus skulle hamna på algoritmer istället för fysik. Vi anser även att en ekvationslösare inte hjälper till att lära ut fysik, tvärtom döljer den matematiken som ligger bakom svaret.
238+
239+
När det kommer till lutande plan och liknande områden är nyckeln att visserligen känna till vilka samband som gäller, men det är framförallt viktigt att veta när de ska användas och hur de ska tillämpas på olika typer av uppgifter. Vi behandlar därför områden som lutande plan genom att lösa exempeluppgifter modellerade i de tidigare domänspecifika språken. De tidigare språken tillhandahåller de matematiska verktyg som behövs för att koda upp lösningar av problem. Därav innehåller det resulterande läromaterialet, som beskrivs i avsnitt~\ref{sec:res_laromaterial}, inga domänspecifika språk för fysikaliska problem.
240+
241+
Att vissa områden var mindre lämpliga var ett oväntat resultat i projektets genomförande. Vid start trodde vi att det skulle gå att göra domänspecifika språk för alla områden, såväl matematiska som fysikaliska, men som vi diskuterat här gick inte det. Istället gjordes uppdelningen mellan grundläggande och komposita områden, som beskrevs i avsnitt~\ref{sec:valet}, så att fysikaliska områden (som blev komposita) kunde behandlas som tillämpningar av grundläggande områden.
318242

319243
\subsection{Domänspecifika språk, fysik och pedagogiska aspekter}\label{sec:bara_fysik}
320244

0 commit comments

Comments
 (0)