Reifying Programming

Here is the abstract for my next talk:

The need to think abstractly makes programming difficult, especially for normal people. To make programming more concrete I propose to represent programs as data structures reifying their execution. Programming shifts from editing textual abstractions to direct inspection and manipulation of concrete executions. Reified execution also helps ground abstraction through a new testing mechanism: interventions. An intervention tests and overrides behavior at a specific point within a reified execution, replacing hand-coded tests and mocks. Intervention points are stable because programs are edited structurally, not textually. Interventions also provide scaffolding that assists program development through refactoring-like steps of gradual abstraction.

This entry was posted in General. Bookmark the permalink. Trackbacks are closed, but you can post a comment.

4 Comments

  1. Anders Kindberg
    Posted August 25, 2017 at 2:52 am | Permalink

    I immediately start speculating about how it could be done. Looking forward to hearing more about it!

  2. Mark Whybird
    Posted August 28, 2017 at 7:30 pm | Permalink

    I’m with Anders on this – would love to see it. Will the talk be online?

  3. Posted September 5, 2017 at 2:08 pm | Permalink

    Yes, I’ll record either the live presentation or a practice talk.

  4. Posted September 10, 2017 at 1:47 pm | Permalink

    I have been chasing this idea myself: https://github.com/d-cook/Objects

    I have also found the following (invaluable) resources on this topic:

    * Bret Victor’s presentations (http://worrydream.com) are perhaps the most valuable. In particular, see “Learnable Programming”, “Ladder of Abstraction”, “Drawing Dynamic Visualizations”, and “Stop Drawing Dead Fish”.

    * Intentional Domain Workbench: http://www.intentsoft.com/intentional-technology/

    * JetBrains MPS: https://www.jetbrains.com/mps/

Post a Comment

Your email is never published nor shared. Required fields are marked *

You may use these HTML tags and attributes <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*
*

  • Subscribe to Blog via Email

    Enter your email address to subscribe to this blog and receive notifications of new posts by email.