• simulating "in head" vs "in computer" aka "playing computer"
  • related to Future Of Coding - "playing computer" is just silly
  • computers being able to simulate any other computers (ad infinitum) is an important computing idea that had to be invented! (Everything Was Invented)
  • taking a step back, Alan Kay keeps talking about computers as a meta-medium - one that can simulate any other one, and also one that allows us to create simulations to understand the world
  • references:

computation as simulation

Metaphor in User Interface Design

One of the realizations we had about computers in the 60s was that they give rise to new and more powerful forms of arguments about many important issues via dynamic simulations. That is, instead of making the fairly dry claims that can be stated in prose and mathematical equations, the computer could carry out the implications of the claims to provide a better sense of whether the claims constituted a worthwhile model of reality. And, if the general literacy of the future could include the writing of these new kinds of claims and not just the consumption (reading) of them, then we would have something like the next 50 year invention after the printing press that could very likely change human thought for the better.

— Alan Kay - The Real Computer Revolution Hasn't Happened Yet

"Visual Programming" failed (and continues to fail) simply because it is a lie (...)

When I write code, for example a layout algorithm for a set of GUI elements, I visually see the data in my head (the GUI elements), then I run the algorithm and see the elements "move" into position dependent upon their dock/anchor/margin properties (also taking into account previously docked elements positions, parent element resize delta, etc). This is the visual I need to see on screen! I need to see my real data being manipulated by my algorithms and moving from A to B. I expect with this kind of animation I could easily see when things go wrong naturally, seeing as visual processing happens with no conscious effort.

Instead visual programming thinks I want to see the textual properties of my objects in memory in fancy coloured boxes, which is not the case at all.

  • it's interesting to look at "simulator" problems from the point of view of VPLs - visualizing program state/execution is more useful than visualizing the AST - this, again, ties into Solving Things Visually

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
  • computational (can simulate, calculate, etc...)
  • on the other hand, interactions can be interesting when playing with Simulations, trying to understand the parameter spaces, and get a feel for how things work
Szymon Kaliski © 2021