diff options
Diffstat (limited to 'opdracht3')
-rw-r--r-- | opdracht3/opdracht3.tex | 243 |
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} + |