Happy New Year!
I’m really interested in this discussion, my ongoing PhD is about teaching programming, but I don’t have any definitive answer. I thank you for the opportunity to think and talk about it.
I’m not sure about the names in global namespace, I also worry about the namespace pollution, I have heard conflicting things from students. I think having it helps to reduce cognitive load for beginners, but as they progress they want to know “what is from Python vs. what is from this drawing library?”. So I see benefits from it being optional/gradual.
Then, it worries me a lot that expectations from professional programmers can spoil completely the educational experience of beginners. I’ve seen people wanting to impose type annotation discipline to exploratory coding by beginners and it is madness.
I think maybe we can decouple the namespace discussion from the OO issue, and, I think OO can be presented in a “first consume, then produce” style. As it happens with Python generally, people start using lists, they learn the list .append()
and some string methods before they can define classes, etc.
I find most of these OOP-centric tools have so much complexity upfront compared to Processing, even pygame, I find it very hard to use them in introductory classes. For me it is critical for the student to be able write 2-to-4 lines of code and see some result. And it gets more important on non-formal settings where I have to try and reach a very varied public, so it is Papert’s “low floor, high ceiling” challenge for tools, always.
How to balance the immediacy of something like Bernardo’s py5pjs (here adapted to have the same function names as py5) and teaching something more sophisticated like geopandas, shapely, trimesh, etc? I don’t know. And you are trying to make something for multiple platforms/backends… it is very hard.
Another lineage of tools to study is Just van Rossum’s DrawBot, and relatives (nodebox/shoebot). They have a slightly different API. Then, I wish we could all collaborate and focus energy in a smaller set of tools/APIs, so it becomes easier to adapt examples,etc (maybe a Processing bias).
Sorry to take your time blurting these half-cooked impressions! Cheers!