Papers we love: Efficiency of projectional editing: A controlled experiment

 
01 mei 2017

De paper van deze keer heet Efficiency of Projectional Editing: A Controlled Experiment en beschrijft een experiment waarbij de auteurs proberen de efficiëntie van projectional editing te meten. Voordat we naar de paper kijken wil ik dit eerst ook even toelichten.

Bij traditionele editors, zoals we deze waarschijnlijk gewend zijn, werken we in tekstbestanden en manipuleren we deze ook als zodanig. Details verschillen per editor, maar meestal wordt op de achtergrond deze tekst continu geparsed naar een zogenaamde CST (concrete syntax tree), zodat er een abstractere boomstructuur ontstaat die nog steeds alle informatie uit de oorspronkelijke tekstuele representatie bevat. Het maken van een CST van een tekstinput kan lastig zijn en brengt ons in het parsing domein, een niet-triviaal onderwerp uit ons vakgebied. Ik ga hier nu niet op in maar op wikipedia vind je genoeg links om je eens in het onderwerp in te lezen.

Wanneer we een CST hebben kunnen we bijvoorbeeld ‘slimme’ refactorslagen toepassen: we hebben immers een representatie van ons programma met ‘betekenis’. Denk bijvoorbeeld aan het renamen van een variable. Door de boom te doorzoeken met de kennis van welke variabele het betreft, gecombineerd met de regels van de taal in kwestie (scope, visibility, etc), kan er automatisch een aanpassing plaatsvinden die iedere referentie van dezelfde variable automatisch hernoemd. Andersom kan het ook gebruikt worden voor fouten, bijvoorbeeld wanneer je naar een niet-gedefinieerde variabele probeert te verwijzen. Kortom, het in je editor parsen van de source text levert enorm interessante features op, dingen die we inmiddels ook allemaal als gegeven aannemen.

Bij projectional editing gaat dit anders. Hier werk je niet met tekst, maar bewerk je direct een representatie van je programma: een AST (abstract syntax tree). Een verandering in je programma is dus een verandering van deze boom welke direct en realtime kan worden gevalideerd en eventueel geëvalueerd. Een goede inleiding hiervan kun je op youtube bekijken en er staat ook het een en ander op de blog van Martin Fowler.

Doordat er met deze AST wordt gewerkt kun je ook zonder problemen een compositie maken van verschillende talen. Bij het bewerken van een AST zorgt de user er voor dat er altijd een unieke selectie voor een element wordt gemaakt, waardoor je geen last van ambiguiteit meer hebt. Hierdoor kan je bijvoorbeeld helemaal los gaan met het declareren van nieuwe DSLs of het maken van extensies op een bestaande taal. Een mooi voorbeeld hiervan is mbeddr, een taal/framework om software te schrijven voor embedded systemen. Onder water is alles uiteindelijk C, maar je kunt door uitbreidingen een heel andere representatie van de taal maken, bijvoorbeeld door ‘native’ support te hebben voor tabellen of diagrammen. In de afbeelding hieronder zie je bijvoorbeeld een LaTeX math-mode-achtige extensie geactiveerd.

Kortom, het gebruik van projectional editors zorgt voor waanzinnige mogelijkheden tijdens het programmeren. Om te bepalen of dit ook daadwerkelijk een (meetbaar) effect heeft op de productiviteit van mensen die met software engineering bezig zijn hebben de auteurs van deze paper getracht een vergelijking te maken tussen een ‘gewone’ en een ‘projectional’ editor. De proefpersonen zijn onderverdeeld in drie groepen (traditionele editor — studenten, projectional beginners en projectional experts — bedrijfsleven) en hebben allemaal dezelfde taken uit moeten voeren. Bij deze taken is er gekeken naar hoe snel en met hoeveel fouten deze zijn voltooid, waarbij er een vergelijking werd gemaakt om te bepalen of er iets te zeggen was over de efficiëntie.

Nu heb ik wel wat kritiek op de validiteit van de studie (de keuze van proefpersonen, achtergrond, interpretatie van geobserveerde acties e.d.) maar het probeert wel duidelijk een evenwichtige vergelijking te maken tussen twee compleet verschillende denkmodellen om zo te bepalen of er iets over efficiëntie gezegd kan worden. Dat is nu bepaald geen sinecure en naar mijn mening erg waardevol. Voor het echte onderzoek verwijs ik jullie naar de paper (aanrader!) maar de TL;DR van het onderzoek is samen te vatten als “er is niet direct te zeggen dat projectional editors beter zijn, maar het lijkt er wel op dat het naarmate kennis en ervaring toenemen wel de beste optie wordt”. Kortom, weer een typische to be continued


Over deze 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.


Werken met ?
Kijk dan bij onze mogelijkheden voor zowel starters als ervaren engineers.


Categorieën: Gave Technologie


Plaats een reactie

Jouw emailadres wordt nooit gepubliceerd of gedeeld. Benodigde velden zijn met * gemarkeerd.