7 ms·
Bret Victor: Learnable Programming (2012)
- Zhyl 5y agoI 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 ago
- bloniac 5y agoI was really tuning in to the concepts but he completely lost me when all the examples used math and trigonometry. I loathe teaching of programming through math and trig. I feel using math and trig to teach programming is a bigger barrier than anything else.
- auggierose 5y agoIt should all be taught together. Trigonometry is the easiest thing in the world, it just feels complicated because of the way you learnt it first. What is complicated about going around a circle? Is it really more complicated than writing programs?
- jerf 5y agoI have a blog post in the $SOMEDAY pile where I warn about technologies that keep using the same example over and over again. If something is broadly applicable, people should be able to come up with independent examples of how it's useful. If the same example keeps coming up over and over, one should become suspicious that it only works on that example. I observe that this style of programming only ever seems to be used for geometric programming of very visual things, or sometimes audio processing pipelines. I'm becoming suspicious that it may not be good for much of anything else. I'd be interested in seeing a mockup of how to use this technique for a JSON parser or a web handler or something and obtain any utility vs. what we already do. I don't deny that it may be useful in a certain domain or potentially useful as an early teaching tool, but I remain highly skeptical that the promises/claims/demands that it be used for general-purpose programming is possible or a good idea, and the more I see the same examples over and over the deeper my skepticism becomes, no matter how slick the presentation.
- RodgerTheGreat 5y agoThe classic "hello world" for visual programming languages tends to be a Fahrenheit to Celsius converter. Not only is this example a very simple calculation, it happens to be a reversible, total function, which can often (unintentionally?) imply a degree of flexibility and interactivity which does not generalize to stateful or non-reversible programs.
- dgb23 5y agoI love Bret Victor's essays and talks, they are truly inspiring, including this one. It's too a comprehensive and far reaching essay for me to comment on in general, but I have a few random thoughts to share: Right at the first example what immediately came to mind is simply having a better API. It's a boring but effective solution to say fill(color(r,g,b)). It also teaches data abstraction which is a common and powerful concept in programming (and I think it was introduced in an early chapter in SICP as well). Secondly I think there are not enough good tools that empower non-programmers (not full-time) to program. Programming literacy (to some degree) should be more widespread and I agree with the notion that it is a way of thinking rather than just mechanical. For example Excel is a tool that has managed to democratize programming to a high degree. When I teach designers to code websites, there are some who have had some experience with Excel, and they typically have less of a problem to understand some of the programming basics. On the other hand Excel is also terrible, because it hides relations behind cells. The broader concept of this is also criticized in this essay. In essence we need to find useful abstraction layers between what is main stream programming and main stream GUIs. I know many are actually doing that with varying degrees of success. But I think we need to be much more playful and drawing from history and science rather than thinking in terms of products (to sell) if we want to reach the stated goals.
- opsbdb76 5y agoExcel can be beautiful and pain free and I would still hand over my taxes to an accountant. Its all nonsense that everyone needs to code or enjoy it. And that the tools are the issue. As a non programmer with a PhD its a waste of my time, memory and energy that could otherwise be spent on my own domain. Its much simpler to have a 10 minute chat with a professional coder to get what I need. Similar to the waste of time and skill development required to explain complex domain knowledge to the public. Talking instead to a professional writer makes my life much easier. I dont want to think about what tools the accountant, coder and writer use.
- abaracadab 5y agoThis makes sense to be domain specific. But it’s all in the realm of what interests people. Personally, I like to code, I like to draw, I enjoy maths, music and many other things. All of those skills actually augment each other: geometry aids art, art aids programming and so forth. I don’t agree with Bret Victor though I think design and algorithms should actually be explored with pen and paper and through other means. And I think the current way of doing things is okay like in REPLs but understanding the design and ideas outside of the computer is crucial.
- spdegabrielle 5y agoThis is 9 years old. Has there been any progress?
- maliker 5y agoYes, he founded dynamicland.org and is doing large scale prototyping and user testing. YC Research put in some funding not too long ago.
- crispyambulance 5y agoYeah, it's like he disappeared into a really, really deep rabbit hole with this stuff. I hope it's rewarding for him and his team, but I do hope he comes out EVENTUALLY and does talks and articles again!
- jashmenn 5y agoI love this essay so much. So much that I tried to implement all of the demos in JavaScript, which you can try in interactive form here: https://www.newline.co/choc/ https://www.newline.co/choc/
- cloogshicer 5y agoThis is really wonderful, thank you so much for implementing and open sourcing it!
- oolonthegreat 5y agosuch great points! I've always found the tooling lacking for teaching beginners programming, sure there are good languages, but as he points out the environment is also vital. I find it very hard to introduce programming to my social science friends (who would actually benefit greatly from knowing how to manipulate data), most of those who have extra time go to learn excel or spss.
- vitiral 5y agoLove this! I love tutorials which fulfill these requirements like [1]. I'm making my language fngi using these principles as much as possible as well, and my whole civboot project is in pursuit of exactly this ideal. [1]: https://www.google.com/url?sa=t&source=web&rct=j&url=https://download-mirror.savannah.gnu.org/releases/pgubook/ProgrammingGroundUp-1-0-booksize.pdf&ved=2ahUKEwjs04nBzeDxAhVbaM0KHXFSCGYQFnoECAwQAQ&usg=AOvVaw0IGriOEqIsRv5tGRqllEUB https://www.google.com/url?sa=t&source=web&rct=j&url=https:/...
- divs1210 5y agoWeb browser dev tools might be the the most exemplary real world programming environments that do this stuff. If there's something else out there in common use, I would love to know! (not something niche like Lisp Machines or SmallTalk systems)