summaryrefslogtreecommitdiff
path: root/opdracht3
diff options
context:
space:
mode:
Diffstat (limited to 'opdracht3')
-rw-r--r--opdracht3/opdracht3.tex243
1 files changed, 243 insertions, 0 deletions
diff --git a/opdracht3/opdracht3.tex b/opdracht3/opdracht3.tex
new file mode 100644
index 0000000..18f5b91
--- /dev/null
+++ b/opdracht3/opdracht3.tex
@@ -0,0 +1,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 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}
+