A hypothesis: for live programming to scale beyond toy programs, generic low-level visualizations aren't enough. Instead, we need Live Literate Programming: better tools for creating *program-specific* views, which communicate our higher-level understanding.
-
Show this thread
-
Replying to @geoffreylitt
Bearish on program visualization right now. People have been trying to vis code for half a century, and nothing has worked. All we have are Doxygen inheritance diagrams. My guess: without a more principled understanding of program comprehension, we can't build effective vis.
3 replies 2 retweets 10 likes -
Replying to @wcrichton @geoffreylitt
First, you understand the tasks. Then you use cognitive principles to match the needs of the tasks to the best representation. For example, data visualization has done this well. We know why pie charts are bad, when to use a line vs. scatter plot, so on.
2 replies 0 retweets 2 likes -
Replying to @wcrichton
Hmm I think I agree with this sentiment... To me, Learnable Programming communicates some key tasks/goals (esp. "follow the flow", "see the state") that resonate w/ my experience and provide guidance on what viz to use, curious what you think of those http://worrydream.com/LearnableProgramming/ …
1 reply 0 retweets 1 like -
Replying to @geoffreylitt
I see Learnable Programming as high-level design principles for program understanding/authoring tools, in the same vein as the cognitive dimensions of notation. They're a useful lens, but sometimes hard to evaluate, or know if you've applied them correctly.
1 reply 0 retweets 2 likes -
Replying to @wcrichton @geoffreylitt
For example, instead of Processing, imagine a Rails dev making a CRUD website. I have an asset pipeline, a database, so on. How do I visualize a database? A transaction? A server connection? A thread pool?
1 reply 0 retweets 1 like -
Replying to @wcrichton @geoffreylitt
Now I've come up with a proper visualization for all those things. How do I package the vis with the data types? How does my IDE access the vis? How does it know which vis to render, and at what granularity? How does it have access to my runtime state?
1 reply 0 retweets 1 like -
Replying to @wcrichton @geoffreylitt
Bret's basic reply is "well, figure it out." But these are genuinely hard PL/SE/HCI problems that we haven't even begun to address.pic.twitter.com/foY16jo6Qq
2 replies 0 retweets 1 like
I always come back to Doxygen inheritance graphs because that is the *only* software visualization tool that is widespread. Why? - Just needs a simple static analysis of your code - Uses domain-specific vis tools (graphviz) - Bundled with other useful tool (doc generator)
Loading seems to be taking a while.
Twitter may be over capacity or experiencing a momentary hiccup. Try again or visit Twitter Status for more information.
cognitive psychology. PhD