summaryrefslogtreecommitdiff
path: root/intro.tex
diff options
context:
space:
mode:
authorCamil Staps2016-05-23 21:47:58 +0200
committerCamil Staps2016-05-23 21:47:58 +0200
commitd0843d062309efffde384c31c5de2d844f886781 (patch)
tree67c25d4a1e2a80bac50fcd0183869ba17a1aea49 /intro.tex
parentKleine tekstuele wijzigingen (diff)
Feedback: metavariabelen; duidelijkheid; formatting
Diffstat (limited to 'intro.tex')
-rw-r--r--intro.tex27
1 files changed, 18 insertions, 9 deletions
diff --git a/intro.tex b/intro.tex
index df82f41..6f99329 100644
--- a/intro.tex
+++ b/intro.tex
@@ -3,7 +3,7 @@
\label{sec:intro}
Smurf is een esoterische programmeertaal oorspronkelijk ontworpen door Matthew
-Westcott. In de specificatie \cite{safalra} beschrijft hij kort wat Smurf is:
+Westcott. In de specificatie~\cite{safalra} beschrijft hij kort wat Smurf is:
\begin{quote}
Smurf = String-based MURiel Forthoid
@@ -11,12 +11,20 @@ Westcott. In de specificatie \cite{safalra} beschrijft hij kort wat Smurf is:
The only native data type is the string, and operations are carried out on
strings in a forty manner.
\end{quote}
-We hebben dus te maken met een Forth-achtige programmeertaal. De eigenschappen
-die we hiervan terugzien in Smurf zijn voornamelijk reflection,
-stackgeörienteerd en `geconcateneerd programmeren'. We kunnen het programma dus
-dynamisch aanpassen, werken met een stack en schrijven een programma als één
-grote functiecompositie (zonder met functieapplicaties te werken). Voordat we
-alle commando's bespreken is een voorbeeld op zijn plaats.
+Voor iemand die niet in de materie zit is deze beschrijving misschien wat
+overweldigend. Het gaat om een Forth-achtige programmeertaal. De eigenschappen
+van Forth die belangrijk zijn in Smurf, zijn de volgende:
+\begin{itemize}
+ \item Stack-geörienteerd: alle operaties werken op een stack van strings.
+ \item Reflection: het is mogelijk (en in veel gevallen zelfs noodzakelijk)
+ het programma zichzelf dynamisch aan te laten passen.
+ \item `Geconcateneerd programmeren': de taal kent geen functieapplicatie maar
+ alleen functiecompositie. Een programma is een functie, opgebouwd uit
+ kleinere functies. Bij het uitvoeren wordt die grote functie toegepast op
+ de initiële toestand. Bij deze initiële toestand hoort bijvoorbeeld een
+ lege stack.
+\end{itemize}
+Voordat we alle commando's bespreken is een klein voorbeeld op zijn plaats.
\begin{exmp}
We bekijken het volgende programma:
@@ -47,8 +55,9 @@ illustreren met een voorbeeld:
om de variabele `papa' de waarde `smurf' te geven. Hierna is de stack weer
leeg. Vervolgens zetten we `papa' op de stack en gebruiken we \smurfinline{g}
om het bovenste element als variabele op te zoeken in de variable store en de
- waarde ervan op de stack te zetten. Hierbij wordt het bovenste element van de stack verwijdert. De stack bestaat nu dus uit het element
- `smurf'. Met \smurfinline{o} sturen we deze string naar de output.
+ waarde ervan op de stack te zetten. Hierbij wordt het bovenste element van de
+ stack verwijdert. De stack bestaat nu dus uit het element `smurf'. Met
+ \smurfinline{o} sturen we deze string naar de output.
\end{exmp}
\input{introcoms}