Programming as a Specific Case of a Bigger Problem

  • but, what problem exactly?
    • working with dynamic systems (Bret Victor's Thesis)
    • Matt Tognetti suggests "model building"
    • Alan Kay says that computing is about understanding and creating systems
      • the "ways" to do that need to be invented
      • debugging is important part of that medium - being able to abstract "up" and "down", to inspect, replay, etc...
      • creating systems should be done in a Simulator
  • "programming" as it exists now seems more like an implementation detail over that bigger idea

Computing is really about understanding, inventing, and building systems. As in many cases in the past in science, when existing math is not up to the task, new math has to be invented. In this case, one of the needs for new ways to think about what's going on stems from the degrees of freedom available and addition of the dimension of time.

The degrees of freedom and extent of dynamic relationships in desired artifacts, generally mean that they have to be debugged rather than proved. (And there are parts of math where proofs have some of the same quality - all proofs have to be debugged, some proofs actually require modeling them on a computer to debug them.)

Some of the earliest pioneers realized that the computer was "meta" in that it could be a great vehicle for modeling ideas about itself, so that much of the new math that was needed could be "extracted" from the "process space" itself. Many computer "theories" are models of processes written as running systems that can be debugged and explored.

Was computing dumbed down by the arrival of computer science in academia? - Alan Kay

A Compact And Practical Model of Personal Computing As A Self‐Exploratorium

— STEPS 2011 - Alan Kay

  • more ideas of "self-exploratorium" in Simulator
  • Programming is a Specific Case of a Bigger Problem
    • right now "programming" is "blindly manipulating symbols"

      the author sees and manipulates indirect symbolic representations, and must imagine how they give rise to dynamic behavior

      • this could be improved by (Future Of Coding):
        • seeing the dynamic behaviour that is being created (Simulator)
        • exploring multiple representations of that behaviour (Ladder of Abstraction)
        • directly manipulating representations and data
    • but, programming is not that important in-itself:
      • it's about "using representations to think powerfully about systems" - the same way that Logo (Mindstorms) wasn't about teaching children programming, but teaching children to think mathematical thoughts through the interface of programming
      • we switched from analog to digital circuits, and then to programmable circuits, but they are all about the same thing:

        a software system is an instance of a more general class of systems, so it's possible to write about "programming" using ideas that aren't actually specific to programming