3 ms·
I am a massive fan of Bret Victor and his talks. 'Up and down the ladder of abstraction' [0] was eye opening for me, and has informed my pedagogical style ever
by Zhyl 5y ago
I am a massive fan of Bret Victor and his talks. 'Up and down the ladder of abstraction' [0] was eye opening for me, and has informed my pedagogical style ever since.
I think, though, even though I agree broadly with what he has to say on visual programming and gaining an intuitive understanding of what programmes do, I feel like the emphasis he puts onto areas he feels are weaknesses are not the areas that I feel are the areas that are most in need of tooling.
Let me explain.
Victor puts a lot of emphasis on real-time visualisation of outputs, dedicating a lot of time in his talks [1] to drawing a tree and showing how visually representing how the code is drawing onto the canvas allows for greater exploration of ideas and possibilities, whilst creating a greater mental link between code and screen.
I agree that having this link is useful, but I think what it disregards is the amount of effort that it takes to get to a situation where you have an interactive real-time IDE for the purposes of drawing a tree. True, there is a deeper point he is trying to make about making ideas more visual, but the examples he uses and the aspects of modern computing that he criticises doesn't generalise well without a lot of interpretation.
He says in the closing paragraph of the featured article that these "are not training wheels" and that this is how all programming should be, but I think it would actually only be helpful in a subset of contexts, and commercially viable to invest in the tooling required in only a very small subset of cases.
I feel like a more applicable use of this IS training wheels - interactive explainables that can bring a topic or a concept to life which can then be applied to a number of different contexts that will then not need specialist software or tooling to facilitate. Examples would be Stephen Wittins [2], Betterexplained [3], Red Blob Games [4] or Nicky Case [5]
[0] http://worrydream.com/LadderOfAbstraction/ http://worrydream.com/LadderOfAbstraction/
[1] https://vimeo.com/71278954 https://vimeo.com/71278954
[2] https://acko.net/blog/how-to-fold-a-julia-fractal/ https://acko.net/blog/how-to-fold-a-julia-fractal/
[3] https://betterexplained.com/articles/intuitive-convolution/ https://betterexplained.com/articles/intuitive-convolution/
[4] https://www.redblobgames.com/pathfinding/a-star/introduction.html https://www.redblobgames.com/pathfinding/a-star/introduction...
[5] http://ncase.me/trust http://ncase.me/trust
- continuational 5y agoI think Bret Victor is right. We need more of those tools, and the future of programming will include them. No, his demos don't seem to generalize. Yes, it looks hard to arrive at that goal. But we absolutely should work towards it!
- lyxell 5y ago> I think what it disregards is the amount of effort that it takes to get to a situation where you have an interactive real-time IDE for the purposes of drawing a tree. I agree with your view, but one of the reasons for this is that there is still a lot to ask from the GUI frameworks in most languages (especially languages like C++ and Rust). However, I still believe that this can change. Raph Levien is driving some pretty targeted work on pushing the state of GUI frameworks for Rust [0]. In C++ Dear ImGui is heavily used by the game development community [1]. My experience is that it is really fast to get a visualization for most projects going in very little time using this framework. See the gallery threads [2] for examples. This project also gets better every month. [0]: https://raphlinus.github.io/rust/druid/2020/09/28/rust-2021.html https://raphlinus.github.io/rust/druid/2020/09/28/rust-2021.... [1]: https://github.com/ocornut/imgui https://github.com/ocornut/imgui [2]: https://github.com/ocornut/imgui/issues/3793 https://github.com/ocornut/imgui/issues/3793
- Zhyl 5y agoAh, this is interesting. It seems like the rust community are doing similar things with updating UI paradigms as they are with updating CLI conventions! Thanks for this, I will bookmark it and read it in more detail.
- pjmlp 5y agoIn what concerns C++, there is yet no other environment that matches the RAD tooling of C++ Builder. However thanks to Borland mismanagement only old timers or devs working at enterprises are fully aware of its existence.
- lyxell 5y agoI looked it up. The main reason that I'm excluded from the audience is not due to Borland but rather that I don't have Microsoft Windows as my operating system.
- vnorilo 5y agoBret Victor was definitely an influence when I sought to combine the visual graph-patching paradigm (for audio programming) with a repl-like experience on a more-powerful-than usual functional backend [1]. He does talk about real-time visualization of outputs. IDEs for building trees is definitely not where we want to go. However, there's an aspect in there that I'm utterly convinced about: direct manipulation of program objects! The ability to grab hold of program objects, tweak and move them and see the response, almost like you had some cord or lever in hand that connects to the program, feels amazing. To me, it's the most amazing aspect of Sutherland's super early work [2]. Hancock's dissertation also deals with some of these things [3]. As you observed, we struggle with generalizing such direct manipulation. Especially the composition and abstraction of such components. That's the difference between a IDE to draw trees and a magic medium between thought and computing. Will we some day have the latter? I do not know. 1: https://kronoslang.io/ https://kronoslang.io/ (It's all written by yours truly, including the website, WASM jit compiler and frontend, so please be gentle :) 2: https://blogs.commons.georgetown.edu/cctp-797-fall2013/archives/807 https://blogs.commons.georgetown.edu/cctp-797-fall2013/archi... 3: https://dspace.mit.edu/handle/1721.1/61549 https://dspace.mit.edu/handle/1721.1/61549
- andrekandre 5y agothats a realy cool web app, congrats on the quality! unfortunately, i wasnt able to get any audio output on my ipad....
- vnorilo 5y agoThank you! Mobile Safari is the browser that breaks more often, will have to take a look again!
- amitp 5y agoI agree. I've put a lot of work into building these types of visualizations (Red Blob Games) and I've been able to come up with useful visualizations for only some of the problems I work on, and for a small subset of the data structures. For example, with my A* pages I purposefully chose graphs that are planar and have at most a few hundred nodes, because that works well for the visualization. But if you were to ask me to make my A* visualizations work for any graph, including non-planar or millions of nodes, I wouldn't know how. I know some people want general purpose tools "for practioners" but I don't know how to get there, and years of making these visualizations has not gotten me any closer! :-( Maybe someone will come along and figure out a generalization, but I don't think it will be me. I think the "trailing wheels" style pages are a subset that clearly benefits from visualizations, so I'll focus on those.
- andrekandre 5y agoI feel like a more applicable use of this IS training wheels - interactive explainables that can bring a topic or a concept to life which can then be applied to a number of different contexts that will then not need specialist software or tooling to facilitate. this is probably arguing analogies, but i think its worth delving a bit more on the training wheels analogy the reason i think so is because with training wheels they seem like a shortcut/helpful but actually they actively harm and mislead about how to ride (leaning vs turning) and you become dependent on them and cant really function without them, but if you start out with the bicycle low enough where kids (or even adults) feet can tough the ground easily, they will just naturally put their feet to the ground when they loose balance and (quite quickly) learn to balance and ride much faster than if they ever used training wheels [0] my claim is that we should help people to program, but not with training wheels but in a way that naturally occurs from using the tool (it goes without saying thst this is _very_ hard to implement) [0] https://kidsrideshotgun.com/blogs/news/stabilisers-suck-why-your-child-shouldn-t-use-training-wheels https://kidsrideshotgun.com/blogs/news/stabilisers-suck-why-...