7 ms·
Linux Kernel Module written in Scratch (a visual programming language for kids)
- isp 4y agoGitHub: - https://github.com/scratchnative/scratchnative https://github.com/scratchnative/scratchnative - https://github.com/scratchnative/scratch-linux-modules https://github.com/scratchnative/scratch-linux-modules
- BossingAround 4y agoIn other words, Scratch can interface with C code.
- dvhh 4y agoMore like "Scratch can generate some C code"
- usrusr 4y agoThe blog says C++ though. Forget everything about kids and jigsaw UI, ++ in the kernel, this ist huge! ;)
- abbix 4y agoThere is also a C codegen available, still WIP though.
- gonzo41 4y agoSo, time to start using scratch in a professional context. I know some BA's who'll have a lot of fun.
- liotier 4y agoThe design workshop with a Surface on the wall is going to be tons of lego-colored fun !
- dvhh 4y ago"finally spaghetti code that look like spaghetti"
- atleta 4y agoI'd say visual programming languages were first created to be used in a professional context. (Think BPEL and even earlier incarnations.)
- bragr 4y agoLooking the repos to refute your snark, but you appear to be correct. The example given seems to be the thinnest of wrappers around the kernel C API and translates directly into the equivalent C for compilation. Does not seem like native scratch code in the kernel a la Rust.
- keithnz 4y agoI was looking at the repos too, not only at the linux module, but the whole "OS". Hoping for some cool scratch stuff.....but....it's just minimal wrappers. As an aside, I think scratch is great, it's definitely not just for kids, I think it's great for anyone learning programming
- MarcScott 4y agoA colleague of mine completed the first half of advent of code just using Scratch. She pushed it to it's absolute limits.
- Retr0id 4y agoThis supports a very tiny subset of Scratch - basic control flow, variable assignment, and arithmetic operators. It's also an "incorrect" implementation, because Scratch arithmetic operators are supposed act on double-precision floats. "Real" Scratch is much harder to compile to a native language, firstly because Scratch has a very weird concurrency model (unofficially documented here [1]), and secondly because it has weird dynamic type conversion rules, much like JavaScript. E.g. the scratch expression (("0x1" join "4") + (2)) would evaluate to 22. I'm just being pedantic though, this is still a cool project. [1] "Scratch and its inner workings" https://docs.google.com/document/d/16SFYkk9dWpMhYaZNnLTE_kTmgJF91RjzxWYnEScQe6c/edit https://docs.google.com/document/d/16SFYkk9dWpMhYaZNnLTE_kTm...
- freedomben 4y agoThat document you linked is amazing! I don't know much scratch but my son has gotten deep into it building games, and he's frequently asking me questions about how it works and I'm always forced to speculate. This is fascinating indeed. Thank you!
- fooker 4y agoI have heard scratch described as a 'Domain Specific Language for writing Race Conditions'
- Wowfunhappy 4y agoIt's certainly easy to end up with race conditions in Scratch, but I don't think it's any easier than in something like Javascript?
- candiodari 4y agoThe kernel does not save the state of the math coprocessor when context switching. This means floats are off-limits in the kernel.
- Retr0id 4y agokernel_fpu_begin() / kernel_fpu_end()
- deleted 4y ago[deleted]
- isaacfrond 4y agoBasic on the commodore 64. That's how I learned it. You turn the computer on, and that's pretty much all you can do. Learning to program now, is like, sure I get that it's important and all, but why? why would I? We had it so good.
- maweki 4y agoNeeding to program specifically? No reason. The computational and analytical thinking skills that come with it are generally useful though. I also never again written a poem analysis or held a talk about labour movements in the Weimar Republic. Did I practice important skills in school? I'd say yes.
- isaacfrond 4y agoThat is kind of the point. Programming has become the same kind of useful skill as writing a poem analysis. It's easy to explain that it is useful and important. But I don't get across why you would want it.
- Wowfunhappy 4y agoI teach Scratch to children professionally. It is such a brilliant learning tool—except for one thing that annoys me so much! One of the first things we have kids try to create is a game called "Ghostbusters". The first step is "make your ghost hide and show every two seconds." Nearly every student codes something like this: forever hide show ⬏ The result is a ghost that does not do anything. Not the best introduction! I always tell the kids some variation of "the computer is going too fast", so they'll add a wait block. Their code need the wait block anyway, but it would be better if they could see what was happening and figure it out on their own. Also, my explanation is actually bullshit. Think about it—the ghost should be hidden as often as it's visible. Furthermore, if the kid does: forever show hide ⬏ ...their ghost will disappear and never reappear! Can you figure out what's happening yet? Well, consider this. If you do: move 10 steps move 10 steps move 10 steps ...your sprite will jump forwards 30 pixels all at once. But, if you do: repeat 3 times move 10 steps ⬏ ...then the sprite will animate forward, moving ten pixels per frame for three frames. Scratch only updates the screen at set "yield points", which are basically any instruction containing the word "wait" (reasonable enough) and after each iteration of a loop (very problematic). Loops should not have side effects! It's much more difficult to teach iteration when the unrolled version does something completely different! But the problem is deeper than that—it pops up everywhere with basically every student I work with, because it prevents kids from seeing the results of their code! Fundamentally, two blocks in the same script which request a screen update should not be able to run on the same frame. (Unless the user has enabled turbo mode, which is already an option for advanced users who need to push the limits of the language.) I know that all languages have quirks, but I just don't know what Scratch's developers were thinking here, or why I seem to be the only person who considers this a massive problem! I made a fork of Scratch which fixes this problem, but I'm not really sure what to do with it. Without a backend for saving projects to the cloud, I can't realistically use it in my classes. I've been trying to add a backend, but the code is undocumented and I have zero experience with backend development. https://github.com/LLK/scratch-vm/compare/develop...Wowfunhappy:scritch-vm:develop https://github.com/LLK/scratch-vm/compare/develop...Wowfunha...
- jaltekruse 4y agoHave you tried to open a PR on the main project? No idea how welcoming they are to outside contributors, but feedback from an instructor, complete with code to fix a pedigogical problem, I would be surprised if they didn't at least give it some consideration.
- mark_l_watson 4y agoEven though they are using a minimal and compileable version of Scratch, I think this is so cool. In the 1980s, I had a Lisp Machine and except for the microcode it was Lisp for everything. Amazing to have an OS and all tools written in one high productivity language.