Papers we love

Binnen Sogyo hebben we de traditie dat we maandelijks een nieuwsbrief rondsturen. De nieuwsbrief gaat veel over interne feitjes, echter sinds februari 2015 verzorgd Kevin van der Vlist het topic: papers we love. Hij deelt met ons papers die interessant zijn om te lezen en ons kunnen inspireren. De topic is uitgegroeid tot een mooie verzameling die we ook graag hier willen delen. Bij deze de eerste papers we love van februari 2015, er volgen er meerdere.


Het concept ‘papers we love'[2] is in korte tijd vrij bekend geworden. De doelstelling die zij hanteren is dat ze (meer) willen leren van academische papers. Dit doet men door periodiek een paper uit te kiezen, deze kritisch te lezen en vervolgens met elkaar te bespreken. Hiervoor worden ook op verschillende plekken bijeenkomsten georganiseerd. In Nederland is er een in Amsterdam te vinden.

Nu is een interne meetup wellicht wat overdreven voor een nieuwsbrief, maar toch wil ik dit concept niet aan jullie voorbij laten gaan. Zelf vind ik het erg leuk om (gave!) papers te lezen. Het is ontzettend leerzaam omdat je enerzijds state of the art ontwikkelingen kan volgen, maar anderzijds ook de enorme hoeveelheid bestaande kennis tot je kan nemen. In dit onderdeel van de nieuwsbrief zal ik dan ook iedere week een paper aandragen, met een klein stukje toelichting over waarom je deze wat mij betreft moet lezen. De papers zullen varieren tussen klassiekers uit ons vakgebied, maar ook wat nieuwere (max 3 jaar oud) papers komen aan bod. Hierdoor zal er hopelijk een leuke, inspirerende afwisseling ontstaan.

De eerste paper heet “The Smalltalk-76 Programming System Design and Implementation” [1] en kan je vrij op internet vinden. Deze paper beschrijft het ontwerp van Smalltalk, waarbij feitelijk het object georiënteerd programmeren wordt beschreven. Er wordt een systeem beschreven waarbij objecten gedragingen uitvoeren wanneer zij berichten ontvangen met opdrachten. Hierdoor wordt het vrij eenvoudig om op een wat abstractere manier een programma uit te drukken, waarbij je meer scheiding krijgt tussen het hoe en wat van code: een belangrijke pijler voor modulariteit en daarnaast ook herbruikbaarheid.

Nu zijn de algemene object-georiënteerde zaken wel leuk, maar men gaat in deze paper verder dan dat de meeste OO-talen van tegenwoordig doen. In de sectie ‘The Reactive Principle’ wordt beschreven dat objecten ten aller tijde een efficiënte representatie van zichzelf moeten kunnen geven. Met dit uitgangspunt in het achterhoofd hebben ze vervolgens een grafische interface gemaakt die heel dynamisch met de gebruiker om kan gaan, iets wat in die tijd uniek was.

Het lezen van dit paper geeft je een goed beeld over de problemen en limitaties waar we in die tijd tegenaan liepen. De researchers bij Xerox hebben getracht deze problemen op te lossen door bestaande ideeën op een inventieve manier te aggregeren. Hiermee is een belangrijk resultaat neergezet wat, zeker in de OO-wereld, belangrijke uitgangspunten heeft aangetoond.

Daarnaast is het een hele pure implementatie van OO. Dit zie je in de paper ook terug, een object iets uit laten voeren doe je door het sturen van een message (concept), niet door het callen van een method reference op een object (technische implementatie). Veel moderne OO talen hebben dit veel minder puur geïmplementeerd. Dit soort achtergronden (zeker als je er wat dieper op in gaat) geven je een goed beeld over waarom moderne talen minder puur zijn, over welke tradeoffs er gemaakt zijn om toch OO-concepten aan te bieden.

Kortom, wat mij betreft een paper die we allemaal een keer gelezen moeten hebben!

[1] Daniel H. H. Ingalls. 1978. The Smalltalk-76 programming system design and implementation. In Proceedings of the 5th ACM SIGACT-SIGPLAN symposium on Principles of programming languages (POPL ’78). ACM, New York, NY, USA, 9-16. DOI=10.1145/512760.512762