Towards projection: mapping reflection onto the userland

Allowing end-users to extend and adapt applications can speedup software evolution and serve as a pedagogical tool for programming. Alas even open-ended architectures (like the Emacs architecture) presuppose a significant familiarity with programming languages and tools for end-users. General visual programming (as in the case of blocks) offers a more gentle alternative but still introduces additional tools and cognitive abstractions for prospective developers. We propose a possible third alternative: the direct mapping of reflective and meta-programming facilities onto base-level notions and interfaces through an additional self representation model, the projection layer. Our main hypothesis is that for certain types of applications used by non programmers (like for e.g., simulation software) this projection to the base-level has the potential to open a more gradual learning path for programming extensions, by using the same UI and abstractions that the end-user is already familiar with. This position paper analyses our approach and describes our on-going efforts to support or refute our hypothesis through a case-study on software for crisis assessment.

[1]  G. G. Meyer,et al.  Lecture notes in business information processing , 2009 .

[2]  Sean McDirmid Usable live programming , 2013, Onward!.

[3]  Robert Hirschfeld,et al.  The Lively PartsBin--A Cloud-Based Repository for Collaborative Development of Active Web Content , 2012, 2012 45th Hawaii International Conference on System Sciences.

[4]  M. Ragan-Kelley,et al.  The Jupyter/IPython architecture: a unified view of computational research, from interactive exploration to communication and publication. , 2014 .

[5]  Pattie Maes,et al.  Computational reflection , 1987, The Knowledge Engineering Review.

[6]  Luís Veiga,et al.  Rubah: DSU for Java on a stock JVM , 2014, OOPSLA.

[7]  R. Stallman EMACS the extensible, customizable self-documenting display editor , 1981, SIGPLAN SIGOA Symposium on Text Manipulation.

[8]  Gilad Bracha,et al.  Mirrors: design principles for meta-level facilities of object-oriented programming languages , 2004, OOPSLA.

[9]  Mitchel Resnick,et al.  Scratch: A Sneak Preview , 2004 .

[10]  Adele Goldberg,et al.  SmallTalk 80: The Language , 1989 .

[11]  Pattie Maes,et al.  Concepts and experiments in computational reflection , 1987, OOPSLA '87.

[12]  MaloneyJohn,et al.  The Scratch Programming Language and Environment , 2010 .

[13]  Gordon S. Blair,et al.  Models@ run.time , 2009, Computer.

[14]  Mark von Rosing,et al.  Business Process Model and Notation - BPMN , 2015, The Complete Business Process Handbook, Vol. I.

[15]  John Maloney,et al.  The Scratch Programming Language and Environment , 2010, TOCE.