diff options
author | Camil Staps | 2016-05-23 21:47:58 +0200 |
---|---|---|
committer | Camil Staps | 2016-05-23 21:47:58 +0200 |
commit | d0843d062309efffde384c31c5de2d844f886781 (patch) | |
tree | 67c25d4a1e2a80bac50fcd0183869ba17a1aea49 /intro.tex | |
parent | Kleine tekstuele wijzigingen (diff) |
Feedback: metavariabelen; duidelijkheid; formatting
Diffstat (limited to 'intro.tex')
-rw-r--r-- | intro.tex | 27 |
1 files changed, 18 insertions, 9 deletions
@@ -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} |