\documentclass[a4paper]{article}

\usepackage[dutch]{babel}
\usepackage{geometry}
\usepackage[hidelinks]{hyperref}

\title{Academisch Schrijven\\\large{Opdracht 3}}
\author{Camil Staps}

\usepackage{pdfpages}

\begin{document}

\maketitle

\begin{abstract}
	Van drie artikelen uit het domein van het functioneel programmeren worden de
	inleidende alinea's bestudeerd. Wat zijn de doelgroep en de boodschap, hoe
	blijkt dit uit het abstract en de inleiding, en hoe effectief zijn die
	teksten dan?
\end{abstract}

\section{Why Functional Programming Matters \cite{whyfp}}
\subsection*{Doelgroep}
Dit artikel is geschreven voor programmeurs. Het leesdoel is afhankelijk van
het type programmeur: functioneel programmeurs zullen het paper vooral lezen om
meer inzicht te krijgen in de unieke eigenschappen van hun talen, om die
uiteindelijk beter te kunnen benutten. Voor niet-functioneel programmeurs kan
dit artikel een inleiding tot functioneel programmeren zijn, waardoor ze de
afweging kunnen gaan maken of ze al dan niet over moeten stappen naar dit (op
het moment van schrijven) relatief nieuwe paradigma.
\begin{quote}
	This paper is an attempt to demonstrate to the larger community of
	(non-functional) programmers the significance of functional programming, and
	also to help functional programmers exploit its advantages to the full by
	making it clear what those advantages are.
\end{quote}
Verder is het duidelijk dat de auteur uit gaat van enige kennis van
programmeren in het algemeen en gestructureerd programmeren in het bijzonder.
Dit blijkt uit de vele vergelijkingen tussen functioneel en gestructureerd
programmeren. Bijvoorbeeld:
\begin{quote}
	Functional programs contain no assignment statements, so variables, once
	given a value, never change. More generally, functional programs contain no
	side-effects at all. A function call can have no effect other than to compute
	its result.
\end{quote}

\subsection*{Boodschap}
De auteur wil de voordelen van functioneel programmeren duidelijk maken. Dit
heeft twee doelen: enerzijds het inzichtelijk maken van de eigenschappen van
dit paradigma, om functioneel programmeurs te helpen `betere' code te
schrijven; anderzijds, aangeven welke voordelen functioneel programmeren heeft
ten opzichte van gestructureerd programmeren om gestructureerd programmeurs
over te halen ook functioneel te gaan programmeren.

Het uiteindelijke doel hiervan is beter gestructureerde software, omdat dit
gemakkelijk te schrijven en te debuggen is:
\begin{quote}
	Well-structured software is easy to write and to debug, and provides a
	collection of modules that can be reused to reduce future programming costs.
	In this paper we show that two features of functional languages in
	particular, higher-order functions and lazy evaluation, can contribute
	significantly to modularity. [..] We conclude that since modularity is the
	key to successful programming, functional programming offers important
	advantages for software development.
\end{quote}

\subsection*{Effectiviteit van het abstract en de inleiding}
Zoals hierboven duidelijk is geworden zijn zowel de doelgroep als de boodschap
gemakkelijk uit de inleiding en het abstract af te leiden.

De inleiding is wellicht enigszins aan de lange kant, maar leest snel weg. De
taal is niet technisch en de zinnen lopen goed. Ook is er een duidelijke
structuur aanwezig: na een korte algemene uitleg over wat functioneel
programmeren precies inhoudt, beschrijft de schrijver wat er mis is met de
conventionele `elevator pitch' voor dit paradigma. Hiermee geeft hij direct ook
aan wat de relevantie van zijn artikel is: deze elevator pitch verbeteren.

In het abstract geeft de auteur heel globaal aan waarom functioneel
programmeren is. Dit is op zich verwacht, gezien de titel van het artikel. De
inleiding heeft twee functies: de lezer van meer context voorzien, en
articuleren waarom een artikel over dit onderwerp nodig is.

We kunnen concluderen dat zowel het doel als de inhoud van het abstract en de
inleiding duidelijk zijn en de lezer goed kunnen helpen bij het bepalen of het
interessant zou kunnen zijn bij zijn onderzoek.

\section{Why Functional Programming Matters To Me \cite{fpbeauty}}
Dit artikel verschilt van de anderen in de zin dat het verscheen in het boek
\emph{The Beauty of Functional Code -- Essays Dedicated to Rinus Plasmeijer on
the Occasion of His 61st Birthday} \cite{fpbeauty}. De volgende beschrijving
van het boek komt van Peter Achtens webpagina \cite{peter88} en moet hierom
bekend worden verondersteld bij de lezer:
\begin{quote}
	This festschrift has been compiled on the combined occasion of Rinus' 61st
	birthday and the 25th IFL symposium meeting. It consists of 19 scientific
	essays written by former PhD students and co-authors of Rinus. The theme of
	the book is the beauty of functional code and the influence it has or had on
	the author's work. The festschrift was offered to Rinus on the first evening
	of the 25th IFL. 
\end{quote}

\subsection*{Doelgroep}
Gezien het bovenstaande moeten we doelgroep zoeken als deelverzameling van de
groep mensen die ge\"interesseerd zijn in de schoonheid en impact (voornamelijk
op academici) van functioneel programmeren.

Door te refereren naar bepaalde papers, zoals het hierboven bestudeerde Why
Functional Programming Matters To Me \cite{whyfp}, en het gebruiken van
bepaalde vaktermen, maakt de auteur duidelijk welke voorkennis verondersteld
wordt:
\begin{quote}
	I learned to appreciate the beauty of functional programming (languages) and
	the semantic beauty of \emph{term graph rewriting} of which \emph{Clean} was
	and still is an implementation. [..] As a starting point, I refer to John
	Hughes’ seminal	1984 paper in which he argues that functional programming
	matters because it offers glue with which to structure programs in an
	improved modular and reusable way, through the use of higher order functions
	and lazy evaluation.
\end{quote}
Het wordt ons duidelijk dat de lezer bekend wordt verondersteld met functioneel
programmeren, haar eigenschappen en voordelen.

Behalve dit valt er weinig over de doelgroep op te maken uit het abstract en de
inleiding. We moeten dus concluderen dat de doelgroep dezelfde is als die van
het boek: mensen die ge\"interesseerd zijn in de schoonheid en impact van
functioneel programmeren.

\subsection*{Boodschap}
Allereerst neemt Peter een historische inslag:
\begin{quote}
	\emph{Trax}\textsuperscript{\textsc{TM}} is an attractive case because it has
	interesting computational problems, for which I use classical functional
	techniques, but also because it is a distributed multi-user application,
	for which I use the more recently developed iTask formalism.
\end{quote}
Vervolgens geeft hij duidelijk aan wat hij wil doen in zijn artikel:
\begin{quote}
	I demonstrate the style of functional programming by showing how to implement
	the game \emph{Trax}\textsuperscript{\textsc{TM}}, which was brought to my
	attention by Rinus a couple of years ago.
\end{quote}
Op basis hiervan kunnen we zeggen dat naast het uiteenzetten van de schoonheid
van functioneel programmeren, en articuleren waarom dit paradigma voor de
auteur belangrijk is geweest (wat de algemene doelen van het boek zijn), dit
specifieke artikel de lezer middels een case-study met sommige ontwikkelingen
in het onderzoeksveld bekend wil maken.

\subsection*{Effectiviteit van het abstract en de inleiding}
Hierboven merkten we dat er weinig in het abstract en de inleiding staat waar
we de doelgroep uit kunnen afleiden. Het enige dat we over de doelgroep te
weten kwamen moesten we zelf, indirect, afleiden. Dit maakt deze inleidende
tekst enigszins ongeschikt voor zelfstandige publicatie: het artikel moet
binnen de context van het boek waarin het verscheen gelezen worden.

Hetzelfde geldt voor de boodschap, maar in mindere mate. De auteur sluit de
inleiding af met een korte, duidelijke opmerking over wat hij met zijn artikel
wil bereiken:
\begin{quote}
	Finally, in Sect. 5, I hope to have explained to you why functional
	programming matters to me.
\end{quote}

\section{Monads for functional programming \cite{monads}}
\subsection*{Doelgroep}
Uit het abstract blijkt dat de auteur affiniteit met functioneel alsook
gestructureerd (`other languages') programmeren van zijn lezers verwacht:
\begin{quote}
	The use of monads to structure functional programs is described. Monads
	provide a convenient framework for simulating effects found in other
	languages, such as global state, exception handling, output, or
	non-determinism.
\end{quote}
Aan het eind van de inleiding geeft hij duidelijk aan welke precieze voorkennis
nodig is:
\begin{quote}
	No knowledge of category theory is required to read these notes. The examples
	will be given in Haskell, but no knowledge of that is required either. What
	is required is a passing familiarity with the basics of pure and impure
	functional programming;
\end{quote}
De doelgroep kan dus als volgt worden samengevat: zij die ge\"interesseerd zijn
in het simuleren van effecten uit gestructureerde talen in een pure functionele
taal, en een basiskennis hebben van de idee\"en achter zowel zuivere als
onzuivere functionele talen.

\subsection*{Boodschap}
De auteur begeeft zich in het onderzoeksveld dat de voordelen van enerzijds
zuiver en anderzijds onzuiver functioneel programmeren probeert samen te
brengen:
\begin{quote}
	Pure languages are easier to reason about and may benefit from lazy
	evaluation, while impure languages offer efficiency benefits and sometimes
	make possible a more compact mode of expression. Recent advances in
	theoretical computing science, notably in the areas of type theory and
	category theory, have suggested new approaches that may integrate the
	benefits of the pure and impure schools. These notes describe one, the use of
	monads to integrate impure effects into pure functional languages.
\end{quote}
In die laatste zin geeft de auteur precies aan welke bijdrage hij hier zelf aan
zal leveren.

De schrijver van dit artikel wil de lezer dus bekend maken met een techniek om
effecten uit onzuivere functionele of zelfs gestructureerde talen te integreren
in een pure functionele taal, zodat de voordelen van de puurheid
(bewijsbaarheid en luie evaluatie) benut blijven.

\subsection*{Effectiviteit van het abstract en de inleiding}
Van de drie artikelen die ik hier bekijk heeft dit paper veruit de effectiefste
inleidende teksten. Hoewel de inleiding korter is dan die van beide andere
artikelen, krijgt de lezer genoeg informatie om te bepalen of het artikel voor
hem van belang is. Door expliciet aan te geven wat de doelgroep is kan hier
geen misverstand over bestaan. Ook het doel van schrijven en de inhoud van het
paper zijn relatief expliciet in de tekst genoemd.

\begin{thebibliography}{9}
	\bibitem{whyfp} Hughes, J.: \emph{Why Functional Programming Matters}.
		Computer Journal 32(2) (1989) 98--107
	\bibitem{fpbeauty} Achten, P. en Koopman, P. Eds.: \emph{The Beauty of
		Functional Code -- Essays Dedicated to Rinus Plasmeijer on the Occasion of
		His 61st Birthday}. Springer, Festschrift, LNAI 8106, augustus 2013, ISBN
		978-3-642-40354-5 79--96
	\bibitem{monads} Wadler, P.: \emph{Monads for functional programming}. In
		Broy, M. Ed.: \emph{Marktoberdorf Summer School on Program Design Calculi},
		Springer Verlag, NATO ASI Series F: Computer and systems sciences, volume
		118, augustus 1992.
	\bibitem{peter88} Papers by Peter Achten.
		\url{http://www.cs.ru.nl/~peter88/papers/MyPapers.html}. Opgehaald 21 april
		2016.
\end{thebibliography}

\appendix
\section{Inleidingen van de artikelen}
De bestudeerde alinea's van de bestudeerde artikelen
\cite{whyfp,fpbeauty,monads} kunnen hieronder worden gevonden.

\includepdf[pages=1-2]{../papers/Why-Functional-Programming-Matters-Hughes-1989.pdf}
\includepdf[pages=1-2]{../papers/Why-Functional-Programming-Matters-To-Me-Achten-2013.pdf}
\includepdf[pages=1-2]{../papers/Monads-For-Functional-Programming-Wadler-1992.pdf}

\end{document}

