1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
|
\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 het maken van 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 belangrijk 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 voorkennis precies
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}
|