Experiential Programming Research
Mission
To focus on the human experience during the act of programming. Two questions arise: 1) How can languages fit better with the personal experiences of the human readers and writers of those languages? 2) What kind of meaningful and useful experiences can be created for the programmer whilst programming?
One strategy is domain specificity to engineer experiences for narrow audiences of programmers. However, Experiential Programming Research aims at domain agnostic solutions to flexible and sculpted personal experiences of programming.
Practical Goals
- Supporting experimentation and observation during programming.
- Identify principles and paradigms suited to live-coding.
- Explore naturalistic languages and naturalistic decomposition strategies.
- Enable learning through Experiential Programming
- Experiential Programming for Scientists: Modelling
Components
Experiential Programming Theory: Identify domain agnostic guiding principles and concepts with a strong philosophical foundation and evidenced practical justification.
Definitive Scripting: Based upon EP-theory, develop one possible new conception and/or paradigm for ”programming” that supports EP goals more closely.
Naturalistic Definitive Scripting (NDS): Scale the basic definitive scripting “paradigm” using natural, and again domain agnostic, abstraction mechanisms which more readily adapt to uncertainty and change present in exploratory programming practices.
Experiential Programming Environments (EPEs): Definitive scripting cannot operate statically and must be supported by dynamic live modelling environments to provide appropriate experiences and affordances during the construction of software artefacts.
Multi and Interdisciplinary Application: EP-theory can radically alter the theory and practice of a number of diverse subject areas, from education to contemporary science. These impacts are studied across a select few topics where EP could be of greatest immediate benefit.
Related Fields and Concepts
Empirical Modelling: The progenitor of Experiential Programming Research.
Intersubjectivity:
End-User-Programming
End-User Software Engineering
Interaction Design
Human-Computer-Interaction
Constructionism
Constructivism: Jean Piaget
Experience-based Learning: Relates to ELT below. See John Dewey’s “Experience and Education” and his call for a Theory of Experience (for learning).
Experiential Learning (Theory): Kolb. Ties to John Dewey, William James and others.
Action Research
Humanistic Psychology: eg. Carl Rogers and self-actualisation which takes a more subjective angle on psychology.
Live-coding
Pragmatism
Karl Popper’s Three Worlds: 1) Physical world (objective reality?). 2) Mind of the modeller (subjective). 3) Knowledge products of the human mind (the models, but not physical artefacts?). Worlds 1 and 3 can be thought of as hardware and software respectively, one may consider software from both angles but the physical consideration of software is world 1.
Peirce’s Theory of Signs
Semiotics
Naturalistic Programming Languages
Natural Language Programming
Controlled Natural Languages
Radical Empiricism
Subjective Programming: Relates to linear and non-linear programming problems which have numeric objective functions. In subjective programming there is no known numeric objective function but there is still a sense of solution with respect to constraints. This is from the 70’s and 80’s and has not continued.
Exploratory Programming: “The programmer is not just attempting to engineer working code to match a specification. The goal is open-ended, and evolves through the process of programming.” (Kery and Myers, 2017). It encompases live coding, hacking, rapid prototyping and bricolage.
Bricolage
Opportunistic programming
Reactive Programming: Such as AngularJS, ReactJS, Reflect (by Facebook).
Functional Programming
Functional Reactive Programming
Agile Software Development
Serious Games
Learnable Programming: Bret Victor essay. The importance of observation and seeing what is going on within a program at all times.
Data-flow
Situated Abstraction: Noss et al. “… abstraction is conceived, not so much as pulling away from context, but as a process of constructing mathematical meanings by drawing context into abstraction, populating abstraction with objects and relationships of the setting.” (Pratt and Noss, 2010).
Knowledge in Pieces (KiP): diSessa. epistemological perspective, more practically useful that constructivism directly.
Structuralism (Philosophy of Mathematics):
Phenomenology: The philosophical study of structures of experience, or the ways we experience things and thus the meanings things have in our experience. “… Husserl and Merleau-Ponty spoke of pure description of lived experience …”. “Intentionality”. (Need to be more specific here).
Intuitionism (Philosophy of Mathematics):
Literate Programming: And related modern notebook interpretation. Donald Knuth.
Processing (tool):
Mathematica (tool):
Jupyter Notebook (tool):
Human-centric Computing:
Behavioural Computer Science: