Moving Scratch generation to Python on browser

(kushaldas.in)

25 points | by kushaldas 2 days ago

5 comments

  • njoyablpnting 1 hour ago
    This is super cool! Would love to see how you hooked up Ruff and ty.

    Just curious, why not use Pygame?

    Scratch abstracts away a ton of stuff to allow the student to focus on logical building blocks that mirror the mental model one might have when writing a real program. I'm wondering if keeping a lot of those abstractions when transitioning to text programming is educationally useful?

    For example, it might not be clear that @on_forever is really just a loop, etc. One thing I've noticed when teaching beginners is that when you introduce a library/framework at the same time as a language, they start to form a model of the language that often wrongly includes parts of the library.

    This is why I think Pygame is so useful for education, it sits at just the right level of abstraction for learning. In Pygame, your game loop is just a loop, handling input is just conditions in your loop, etc.

    Regarding rewriting the AST to avoid async/await, do you have some experience or evidence to suggest that these should be abstracted out? I can see an argument for both sides, so just wondering how exactly you arrived at that decision.

    Also, I tried a program with an infinite loop and the UI became unresponsive and I had to close the page. This indicates to me it's running on the main browser thread. Kids (and sometimes senior engineers) write infinite loops occasionally, so I highly recommend executing the user's code in a worker to prevent the harsh experience of losing your work suddenly.

  • varun_ch 12 minutes ago
    See also!

    Leopard[0] translates existing Scratch projects JavaScript with a a library for creating games with a really nice API for 'rendering sprites, collision detection, audio, and more'

    and on the other side, goboscript[1] is a text based programming language that compiles to Scratch projects. It lets users write Scratch projects with text syntax that you can write in an IDE and version control etc.

    maybe both of these could be interesting stepping stones? personally when I 'graduated' from Scratch as a kid I just dumped into writing HTML/CSS/JS websites, which is a very different environment entirely. It actually took a while before I realized where the overlap was with what I learned through Scratch.

    [0] https://leopardjs.com/ https://github.com/leopard-js/leopard

    [1] https://github.com/aspizu/goboscript

  • conartist6 1 hour ago
    I like the direction youre moving. Would a drag and drop editor for Python syntax be useful for a project like this?
  • bgilroy26 3 hours ago
    I have loved Scratch for many years. This looks cool! Thank you for sharing!
  • soferio 2 hours ago
    Looks fantastic.