Skip to content

Commit 721e58d

Browse files
author
Oskar Lundström
committed
2 parents 1a1e593 + af4da44 commit 721e58d

File tree

1 file changed

+69
-60
lines changed

1 file changed

+69
-60
lines changed

Rapport/include/Teori.tex

Lines changed: 69 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11

22
\chapter{Teori}
33

4-
I detta kapitel beskrivs fyra områden av central betydelse för projektet. Dessa
5-
områden är domänspecifika språk, begreppen syntax, syntaxträd och semantik,
4+
I detta kapitel beskrivs fyra koncept av central betydelse för projektet. Dessa
5+
koncept är domänspecifika språk, begreppen syntax, syntaxträd och semantik,
66
litterat programmering samt lärandeteorier.
77

88
\section{Domänspecifika språk}
@@ -13,6 +13,12 @@ \section{Domänspecifika språk}
1313
detta} område man lägger fokus på. Med språk menas ett sätt att uttrycka
1414
saker inom domänen. Svenska och Java är två exempel på språk.
1515

16+
Domänspecifika språk är vanligt förekommande i programmeringssammanhang. HTML är
17+
ett domänspecifikt språk för textformatering, SQL för databashantering och
18+
CSV för tabeller. Precis som domänspecifika språk i vardagen passar
19+
domänspecifika språk inom programmering bäst för sin egen domän. SQL är bra för
20+
att hantera en databas men inte för att skapa ett spel.
21+
1622
Domänspecifika språk används inte bara i programmering utan förekommer även i
1723
andra mer vardagliga sammanhang. Inom domänen matlagning är steka, grilla och
1824
fritera användbara ord. Likaså inom domänen ridning är grimma, box och galopp
@@ -21,22 +27,18 @@ \section{Domänspecifika språk}
2127
i form av ord och begrepp) blir svårtolkat utanför domänen. Ett recept kan inte
2228
förklaras i termer av grimmor, boxar och galopper.
2329

24-
Domänspecifika språk är vanligt förekommande i programmeringssammanhang. HTML är
25-
ett domänspecifikt språk för textformatering, SQL för databashantering och
26-
CSV för tabeller. Precis som domänspecifika språk i vardagen passar
27-
domänspecifika språk inom programmering bäst för sin egen domän. SQL är bra för
28-
databaser men inte att göra ett spel i.
29-
30-
Motsatsen till ett domänspecifikt språk är ett generellt språk. I vardagen är
31-
naturliga språk som svenska och engelska generella medan ryttar-begreppen ovan
32-
är domänspecifika. Precis som i vardagen finns det i datavärlden generella
33-
programmeringsspråk, till exempel C++ och Java. Dessa är turingkompletta, vilket betyder
34-
att det går att uttrycka alla beräkningsbara problem i dem och även lösa dem
35-
givet tillräckligt med tid och
36-
minnestillgångar~\cite{turing_ne}~\cite{turing_book}. Begränsningen med dessa
37-
generella språk är att de är just generella. Eftersom de har stöd för
38-
alla typer av beräkningar blir både läsbarheten och användarvänligheten
39-
lidande.
30+
Motsatsen till ett domänspecifikt språk är ett generellt språk. I
31+
vardagen är naturliga språk som svenska och engelska generella medan
32+
ryttar-begreppen ovan är domänspecifika. Precis som i vardagen finns
33+
det i datavärlden generella programmeringsspråk, till exempel C++ och
34+
Java. Dessa är turingkompletta, vilket betyder att det går att
35+
uttrycka alla beräkningsbara problem i dem och även lösa dem givet
36+
tillräckligt med tid och
37+
minnestillgångar~\cite{turing_ne}~\cite{turing_book}. Nackdelen med
38+
dessa generella språk är just att de är så generella. Eftersom
39+
domänspecifika språk inte behöver vara användbära utanför den
40+
specifika domänen kan de inkludera speciell syntax och ha inbyggd
41+
funktionalitet som inte hade passat i ett generellt språk.
4042

4143
Ett domänspecifikt språk kan antingen implementeras som ett fristående språk
4244
eller bäddas in i ett redan existerande språk. De domänspecifika språk som
@@ -53,16 +55,20 @@ \section{Domänspecifika språk}
5355
\section{Syntax, syntaxträd och semantik}\label{sec:syntax}
5456

5557
I samband med domänspecifika språk dyker begreppen \textit{syntax} och
56-
\textit{semantik} upp. Syntax är grammatiken för ett språk medan semantiken är
57-
betydelsen av en konstruktion, en mening, i språket. Inom
58-
aritmetik\footnote{Aritmetik är den gren inom matematiken som behandlar
59-
räkning av tal.} är tal och operationer syntax medan värdet av uttrycket är semantiken.
60-
Till exempel är $((3 + 2) * 10)^4$ syntax medan $6.250.000$ är semantiken,
58+
\textit{semantik} upp. Syntax är reglerna för hur man sammanslår
59+
enheter, som ord, i språket till komplexa strukturer, som meningar och
60+
satser. Semantik är betydelsen av sådana komplexa strukturer i ett språk.
61+
Inom aritmetik\footnote{Aritmetik är
62+
den gren inom matematiken som behandlar räkning av tal.} är tal och
63+
operationer syntax medan värdet av uttrycket är semantiken. Till
64+
exempel har det syntaktiska uttrycket $((3 + 2) * 10)^4$ det semantiska värdet $6.250.000$,
6165
eftersom det är det som det syntaktiska uttrycket \textit{betyder}.
62-
Domänspecifika språk har med syntax att göra eftersom många domänspecifika språk
63-
används för att modellera just syntax.
66+
Domänspecifika språk har med syntax att göra eftersom många
67+
domänspecifika språk används för att modellera just syntax.
6468

65-
En form av domänspecifika språk är syntaxträd, vilka har haft en stor betydelse i detta projekt. Ett syntaxträd är en trädrepresentation av en syntax.
69+
I domänspecifika språk som modellerar syntax, så kallade \textit{deep
70+
embeddings}, kan syntaxen representeras av trädstrukturer. Dessa
71+
strukturer kallas *syntaxträd*, och har haft stor betydelse i detta projekt.
6672
För att illustrera begreppet visas här ett domänspecifikt språk som består av ett
6773
syntaxträd som modellerar aritmetiska uttryck, implementerat i Haskell.
6874
Datatypen för syntaxträdet visas i figur~\ref{fig:syntax_exempel}.
@@ -84,7 +90,11 @@ \section{Syntax, syntaxträd och semantik}\label{sec:syntax}
8490
\texttt{Const}. Det är en konstant som man ej kan bygga vidare på.
8591

8692
Med datakonstruktorerna kan man konstruera uttryck representerade av syntaxträd. Ett exempeluttryck
87-
från den tidigare datatypen visas i figur~\ref{fig:syntax_exempel_varde}.
93+
från den tidigare datatypen visas i figur~\ref{fig:syntax_exempel_varde}, som visar hur det aritmetiska uttrycket $7 * (3
94+
+ 10)$ modelleras. Konstruktorn \texttt{:*:} får som sina två argument uttrycken
95+
\texttt{Const 7} och \texttt{Const 3 :+: Const 10}. Det är alltså en produkt av
96+
två deluttryck. Syntaxträd brukar illusteras med träddiagram. Detta
97+
exempeluttryck illustreras i figur \ref{fig:syntax_exempel_bild}.
8898

8999
\begin{figure}[tph]
90100
\begin{lstlisting}
@@ -94,12 +104,6 @@ \section{Syntax, syntaxträd och semantik}\label{sec:syntax}
94104
matematiska uttrycket $7 * (3 + 10)$}\label{fig:syntax_exempel_varde}
95105
\end{figure}
96106

97-
Figur~\ref{fig:syntax_exempel_varde} visar hur det aritmetiska uttrycket $7 * (3
98-
+ 10)$ modelleras. Konstruktorn \texttt{:*:} får som sina två argument uttrycken
99-
\texttt{Const 7} och \texttt{Const 3 :+: Const 10}. Det är alltså en produkt av
100-
två deluttryck. Syntaxträd brukar illusteras med träddiagram. Detta
101-
exempeluttryck illustreras i figur \ref{fig:syntax_exempel_bild}.
102-
103107
\begin{figure}[tph]
104108
\centering
105109
\includegraphics[width=0.4\linewidth]{figure/syntax_exempel_bild.png}
@@ -109,9 +113,9 @@ \section{Syntax, syntaxträd och semantik}\label{sec:syntax}
109113

110114
Precis som semantik har en roll i samband med syntax, har semantik även en roll
111115
i samband med syntaxträd. I detta exempel är semantiken det värde som
112-
syntaxträdet betyder. Detta värde kan beräknas utifrån syntaxträdet. Det görs
113-
genom en \textit{beräkningsfunktion}. För exemplets syntaxträd kan
114-
beräkningsfunktionen se ut som i figur \ref{fig:eval_tree}
116+
syntaxträdet har. Detta värde kan beräknas utifrån syntaxträdet genom
117+
en \textit{evaluator}, också kallad \textit{beräkningsfunktion}. För exemplets
118+
syntaxträd kan beräkningsfunktionen se ut som i figur \ref{fig:eval_tree}
115119

116120
\begin{figure}[tph]
117121
\begin{lstlisting}
@@ -123,32 +127,32 @@ \section{Syntax, syntaxträd och semantik}\label{sec:syntax}
123127
\caption{En beräkningsfunktion för syntaxträdet.}\label{fig:eval_tree}
124128
\end{figure}
125129

126-
Det finns tre saker som är speciellt värda att notera i
130+
Det finns tre speciella saker att observera i
127131
figur~\ref{fig:eval_tree}. Den första är att eftersom syntaxen innehåller tre olika
128-
typer av element, här motsvarat av de tre datakonstruktorerna, krävs tre fall i
132+
slag av element, här motsvarat av de tre datakonstruktorerna, krävs tre fall i
129133
beräkningsfunktionen som beräknar vardera av dem. \texttt{evaluate} har
130134
därför ett fall för \texttt{:+:}, ett för \texttt{:*:} och ett för
131135
\texttt{Const}.
132136

133-
Den andra saken att notera ur figur~\ref{fig:eval_tree} är hur ett fall
137+
Den andra saken att notera i figuren är hur ett fall
134138
beräknas. Hur beräkningen ska se ut får man genom att ta hänsyn till
135-
semantiken hos det syntaktiska elementet. \texttt{e1 :+: e2} är syntax för
139+
semantiken hos det syntaktiska uttrycket. \texttt{e1 :+: e2} är syntax för
136140
addition av de två uttrycken \texttt{e1} och \texttt{e2}. Därför blir
137141
semantiken, värdet, av \texttt{e1 :+: e2} lika med värdet hos \texttt{e1} och
138142
\texttt{e2} adderade. Ett liknande resonemang ger svaret på hur beräkningen av
139143
de två resterande fallen ska se ut.
140144

141-
Den tredje saken i figur~\ref{fig:eval_tree} värd att poängtera är dess
145+
Den tredje saken värd att poängtera är beräkningsfunktionens
142146
typsignatur, \texttt{Expr -> Double}. Den gör nämligen att man kan tolka
143147
\texttt{evaluate}, och beräkningsfunktioner i allmänhet, som en översättning
144148
från syntax (här \texttt{Expr}) till semantik (här \texttt{Double}).
145149

146150
\section{Litterat programmering och Literate Haskell}\label{sec:lhs}
147151

148152
\textit{Litterat programmering} (engelska \textit{literate programming}) är ett
149-
alternativt sätt att programmera som introducerats av Donald Knuth~\cite{knuth}.
150-
Istället för att skriva ett program för en dator, skriver man ett program som
151-
kan läsas både av människor och datorer. Det visar sig bland annat på följande sätt.
153+
alternativt sätt att programmera som introducerades av Donald Knuth~\cite{knuth}.
154+
Istället för att skriva ett program främst för datorer att exekvera, så skriver man
155+
programmet främst för människor att läsa.
152156

153157
Jämfört med traditionella program får dokumentationen en
154158
ökad betydelse. I traditionella program är programkoden den viktiga delen. I
@@ -173,8 +177,8 @@ \section{Litterat programmering och Literate Haskell}\label{sec:lhs}
173177

174178
Note that the Quantity data type has both value-level and type-level dimensions. As previosuly mentioned, value-level in order to pretty print and type-level to only permit legal operations.
175179
\end{lstlisting}
176-
\caption{Ett exempel på hur en källfil till litterat programmering kan se ut, tagen direkt från det resulterande läromaterialet.
177-
Exemplet är Literate Haskell. Rader som börjar med \texttt{>}
180+
\caption{Ett exempel på hur en källfil till litterat programmering kan se ut, tagen direkt från källkoden till läromaterialet.
181+
I exemplet är koden skriven i Literate Haskell. Rader som börjar med \texttt{>}
178182
markerar att det är programkod, medan rader utan markerar att det är
179183
dokumentation.}\label{fig:litterate_haskell_exempel}
180184
\end{figure}
@@ -194,7 +198,7 @@ \section{Litterat programmering och Literate Haskell}\label{sec:lhs}
194198
se ut som i figur~\ref{fig:litterate_haskell_exempel}. Filen, med tillägget
195199
\texttt{.lhs}, går att använda direkt med Haskell-kompilatorn GHC. All text
196200
ignoreras och programkoden behandlas som om den var en vanlig
197-
Haskell-fil. \texttt{.lhs}-filen kan också kompileras till en läsbar typsatt rapport eller hemsida.
201+
Haskell-fil. Filen kan också kompileras till en läsbar typsatt rapport eller hemsida.
198202
Det finns flera verktyg som gör det men det som används i detta
199203
projekt är \textit{Pandoc}~\cite{pandoc}. Med Pandoc kan texten märkas
200204
upp med både \textit{Markdown} (används i projektet) och \LaTeX. Det går
@@ -203,14 +207,14 @@ \section{Litterat programmering och Literate Haskell}\label{sec:lhs}
203207

204208
\section{Att skapa motiverande läromaterial}\label{sec:arcs}
205209

206-
Motivation är en persons vilja att göra något. I undervisningssammanhang vill
210+
Motivation är en persons vilja att göra något och i undervisningssammanhang vill
207211
man att studenten ska lära sig materialet. Studenten behöver alltså vara
208-
motiverad, att vilja, lära sig. Motivation kan ha flera källor. Till exempel att
212+
motiverad, ha vilja att, lära sig. Motivation kan ha flera källor, till exempel att
209213
studenten tycker materialet är intressant eller att det finns belöningar i form
210214
av tillfredsställelsen att få att högt betyg.
211215

212216
\textit{Motiverande design} innebär att systematiskt utforma undervisningen på
213-
ett sådant sätt att studenten blir motiverad till att vilja lära sig. Det handlar om
217+
ett sådant sätt att studenten blir motiverad till att lära sig. Det handlar om
214218
att använda olika tekniker för att väcka och behålla motivation. Det finns ett
215219
flertal olika modeller för detta men i detta projekt används enbart den så
216220
kallade \textit{ARCS-modellen}~\cite{arcs_book}.
@@ -220,11 +224,11 @@ \section{Att skapa motiverande läromaterial}\label{sec:arcs}
220224
tillfredsställelse''. Precis som namnet antyder innehåller modellen fyra delar
221225
som vardera behandlar en aspekt av motivation. \textit{Attention} handlar om att
222226
fånga uppmärksamhet och väcka nyfikenhet. \textit{Relevance} handlar om att
223-
tillgodose studentens behov så att materialet upplevs som relevant för hen.
224-
\textit{Confidence} handlar om att övertyga studenten att hen kommer kunna
227+
tillgodose studentens behov så att materialet upplevs som relevant.
228+
\textit{Confidence} handlar om att övertyga studenten att hen kan
225229
lyckas lära sig materialet. \textit{Satisfaction} handlar om att ge studenten
226230
tillfredsställelse efter att ha lärt sig något så att hen vill fortsätta lära
227-
sig. Det finns strategier för hur man genomför de olika delarna i praktiken och
231+
sig. Det finns olika strategier för hur man genomför de olika delarna i praktiken och
228232
här följer en översikt för \textit{Attention}.\footnote{Eftersom projektet har
229233
ett begränsat fokus på de pedagogiska aspekterna, se
230234
avsnitt~\ref{sec:avgransningar}, har enbart \textit{Attention} tagits hänsyn till. Av detta skäl är det enbart denna
@@ -244,16 +248,21 @@ \section{Att skapa motiverande läromaterial}\label{sec:arcs}
244248
lär sig elever av varandra. Eleverna befinner sig vid sin närmsta
245249
utvecklingszon, där eleverna kan hjälpa varandra att förstå innebörden av
246250
definitioner och uttryck genom att sätta ord på det de vill kommunicera. Denna
247-
typen av kommunikation skulle kunna tänkas hjälpa elever sätta fingret på det de
248-
inte förstår. Med denna bakgrunden skulle parprogrammering kunna vara
251+
typ av kommunikation kan hjälpa elever sätta fingret på vad de
252+
inte förstår. Med denna bakgrund kan parprogrammering vara
249253
fördelaktigt. Dels för att eleverna kan lära sig av varandra, att de genom att
250254
kommunicera sin förståelse internaliserar ämnet och bygger en djupare
251-
förståelse. Parprogrammering lämpar sig antagligen även för att begränsa
255+
förståelse. Parprogrammering kan även lämpa sig för att begränsa
252256
flyktförsök, där elever medvetet eller mindre medvetet börjar göra något annat.
253257

254258
%Jean Piaget - Kognitivismen (lära sig A, B, A + B -> C, alternativt att eleven utmanas med något den trodde var sant, och tvingas omformulera en lösning som stödjer den presenterade situationen). s157
255259

256-
Två andra aspekter på lärande är interaktion och snabba belöningar. Då internetplattformars interaktion med eleven är begränsad i jämförelse med då eleven är i skolan och har tillgång till lärare, så brukar internetbaserade läroplattformar förlita sig på behavioristiska element (former av respons) i form av rätt eller fel svar~\cite{LSB_und}. Evolutionärt sett har snabba belöningar varit fördelaktigt framför långsiktiga som kräver långsiktigt engagemang (exempelvis öva inför en tenta) vilket beskrivs i boken \textit{Dansa på deadline: Uppskjutandets psykologi}~\cite{DPD}. Sporadiska belöningar är något som enligt författarna påverkar oss människor extra mycket, och som de menar även används inom exempelvis spelbranchen.
257-
258-
259-
260+
Två andra aspekter på lärande är interaktion och snabba
261+
belöningar. Eftersom internetplattformars interaktion med eleven är
262+
begränsad i jämförelse med då eleven är i skolan och har tillgång till
263+
lärare, så brukar internetbaserade läroplattformar förlita sig på
264+
behavioristiska element (former av respons) i form av rätt eller fel
265+
svar~\cite{LSB_und}. Evolutionärt sett har snabba belöningar varit
266+
fördelaktigt framför långsiktiga som kräver långsiktigt engagemang
267+
(exempelvis öva inför en tenta) vilket beskrivs i boken \textit{Dansa
268+
på deadline: Uppskjutandets psykologi}~\cite{DPD}.

0 commit comments

Comments
 (0)