I like Scratch - my kid uses it and I worked briefly with the guy who made Blockly, the underlying visual programming toolkit - but the programming environment makes many things far too complicated with its singular focus on sprites.<p>It's very, very difficult to do things as simple as display a number on screen. My 7yo was making a number guessing game, and to display a two-digit number we had to make two sprites that had 10 "costumes" (0-9) then do modular math to select the costume for each digit. Sprites also have their own code, and if you duplicate one and edit the code the edits don't apply to the duplicate - so there's no user library or abstraction power at all.<p>This made dealing with Scratch far more complex and time-consuming than the logic of the game my kid was making, which is the exact opposite of what you want in a learning environment. I don't really want to focus on the idiosyncrasies of Scratch when teaching programming.<p>Some simple text and drawing commands, user-defined functions, and a library would go a huge way towards making Scratch simpler. There are some other Blockly-based environments that may have this... but they're not as popular.
At work we built a BI tool around Scratch (Blockly) back in 2013. It’s still seeing daily use: <a href="https://www.dialogic.nl/wp-content/uploads/2018/02/demo1.gif" rel="nofollow">https://www.dialogic.nl/wp-content/uploads/2018/02/demo1.gif</a>
It is great that Scratch can be used as an introduction to programming, but that is not why it was created. It was part of the MIT MediaLab "Computer Clubhouse"[1] project where it would be used to enable a remix culture of cute animations and even simple games. Scratch's implementer, John Maloney, had already helped create a programming environment for kids called EToys[2] using Squeak Smalltalk, just as in the first versions of Scratch (later rewritten in Flash and then in Javascript).<p>So the comments about how it is hard to do in Scratch something that would be trivial in Basic or some other language are not surprising. It is an animation system that allows you to use programming to increment that.<p>As others have pointed out, a system with the same visual as Scratch but design for actually programming is Snap![3] so it is just a matter of using the tools for what they were created to do.<p>[1] <a href="https://web.media.mit.edu/~mres/papers/Clubhouse/Clubhouse.htm" rel="nofollow">https://web.media.mit.edu/~mres/papers/Clubhouse/Clubhouse.h...</a><p>[2] <a href="http://squeakland.org/" rel="nofollow">http://squeakland.org/</a><p>[3] <a href="https://snap.berkeley.edu/" rel="nofollow">https://snap.berkeley.edu/</a>
A fun statistic is that Scratch now has over 100 million projects published by users on their website[1].<p>GitHub only reached 100m repos in 2018[2] - I can't find any more up-to-date numbers, but it's probably around 150m today.<p>It's crazy to think that Scratch and GitHub operate on similar orders of magnitude.<p>[1] <a href="https://scratch.mit.edu/statistics/" rel="nofollow">https://scratch.mit.edu/statistics/</a><p>[2] <a href="https://github.blog/2018-11-08-100m-repos/" rel="nofollow">https://github.blog/2018-11-08-100m-repos/</a>
One of my earliest memories of writing code was playing Gorillas, a QBASIC game, on my school's PC in the early 90s. My friends and I would tweak the source code to make the gravity stronger or weaker, or make other interesting mods to the projectiles.<p>For me, it was a perfect introduction, because there was an already written, already playable program, and I could dive into the code little by little and explore.<p>Scratch is very similar. My kids love to play games on Scratch, but they also enjoy taking a look under the hood to see if there's something simple they can modify.
Scratch has succeeded in the way that counts most - building community.<p>However I tried to help my son to write some stuff with it and found it very hard and unintuitive to get stuff done.<p>There are other, similar systems that are MUCH better for programming, such as Construct3 <a href="https://www.construct.net/" rel="nofollow">https://www.construct.net/</a> and Snap <a href="https://snap.berkeley.edu/" rel="nofollow">https://snap.berkeley.edu/</a><p>In a way it's very disappointing that such a difficult to program system has become the default tool for teaching kids to program.<p>Also a shout out to CodeCombat - that's also a great way to teach kids very advanced underlying programming concepts whilst completely hiding all the complexity.<p>Also try <a href="https://www.microstudio.dev" rel="nofollow">https://www.microstudio.dev</a>
Google Game Builder what I really like to use to teach because it’s using JS. Not that I used it many times but it’s really engaging and at least you interact with a “real” language.<p>It was killed by Google (ofc) but still available and works perfectly <a href="https://github.com/googlearchive/gamebuilder" rel="nofollow">https://github.com/googlearchive/gamebuilder</a><p>The last full build (binary release) is here <a href="https://github.com/googlearchive/gamebuilder/tree/master/builds" rel="nofollow">https://github.com/googlearchive/gamebuilder/tree/master/bui...</a><p>Here is the original trailer <a href="https://youtu.be/l9Mf_XEZq-A" rel="nofollow">https://youtu.be/l9Mf_XEZq-A</a><p>And some of the tutorial videos are also available <a href="https://youtube.com/playlist?list=PLuYHfxlxFzb25nWnevSN5wQVOHMbkenkt" rel="nofollow">https://youtube.com/playlist?list=PLuYHfxlxFzb25nWnevSN5wQVO...</a>
As a former computing teacher, I loved Scratch. I remember reading about it on a Thursday evening on Slashdot, maybe spring of '08, or 09.<p>I had a free lesson first thing the next day, so I installed it on the network then had a class of 10 year olds give it a whirl. Had a full scheme of work written by the Monday, and was demoing it to other schools by the summer.<p>Loved it, loved the scratch board addon hardware, loved the complimentary "makey makey" project, and the cards, and the books and on and on.<p>incredible project.
I've spent a fair amount of time with Scratch, enough to say I understand the language pretty well.<p>The primary game I've created during this study:
<a href="https://scratch.mit.edu/projects/575241838/fullscreen/" rel="nofollow">https://scratch.mit.edu/projects/575241838/fullscreen/</a>
Here you can design a level and let a friend pass it - destroy all the bricks.<p>In Scrath you hit language limitations all the time. The Scratch designers say it is so to be friendly to beginners, however the need to invent crazy tricks to achieve simple things is not actually friendly.<p>IMHO, it is better and simpler to teach children using more normal languages, consisting of a small set of well composable elements.<p>The Snap! is an extended reimplementation of Scratch, but prvides power approximately equal to Scheme: <a href="https://snap.berkeley.edu/" rel="nofollow">https://snap.berkeley.edu/</a>
However, I haven't used it much since I need development support on tablet, which is not complete in Snap.<p>I also tried Lego Boost and Lego Technics - the coding experience is basically the same as in Scratch, but for teaching programming Scratch is better I think, because you can create interesting things without the need to connect to devices. And not much you can build from lego motors and sensors.<p>And the last I explored was the Castle mobile app. A couple of games I created:<p><a href="https://castle.xyz/d/l-_oFKrf5?cxshid=yjIUmDcFo" rel="nofollow">https://castle.xyz/d/l-_oFKrf5?cxshid=yjIUmDcFo</a>
<a href="https://s.castle.xyz/qZbz0u2nK10" rel="nofollow">https://s.castle.xyz/qZbz0u2nK10</a><p>The coding experience is worse then Scratch in my opinion (especially on Android were the Castle app has a redraw bug, so that the menus you invoke are not visible until you manually initiate a redraw by switching to Android app list and back to the Castle app). But the advantage is 2d physics support - they wrap the Box2D engine.<p>Also, I think the Elevator Saga is a good idea for learning. And it's just javascript. <a href="https://play.elevatorsaga.com/" rel="nofollow">https://play.elevatorsaga.com/</a>
For beginners up to about 12 years old, Scratch is optimal. For older ones I think a text-based language is better. In the past, that was BASIC. Today it can be Python, with which beginners have some problems in my experience. And now comes the shameless self-promotion: I have developed something that can fill this gap. By the way, it is open source.<p><a href="https://easylang.online/ide/" rel="nofollow">https://easylang.online/ide/</a>
The great: Scratch has some hugely good things going for it. The community sharing model is ridiculously good. The ease of being able to jump in, put up a sprite and make it do something is super. It is so easy to go from kid-style ideas to something that happens on screen: "there is a castle, and a dragon, and it flies over and makes a noise...". They did a great job of making the sprite actors easy to use with a small number of programming blocks. The actor/message model is nice. Importing images and making them into objects is easy, and there is a big enough library of built-in actors to get you started.<p>The not-so-great: if you try to do something outside of the range of what Scratch really tried to make easy, it quickly gets hard. Moving 2d sprites around in simple patterns using built-in collision detection: peachy. Pretty much anything else: not so much. And as projects get large the block-based visual programming is a frustration. There is no text mode.<p>My wish: It would be great if someone would make a one-level-up version of scratch, with great community sharing features and sprite/object/message based library with super-easy graphics programming but text-based source code and with the ability for add-on libraries to be part of the ecosytem.
Scratch is great, but the problem is: where do kids go after scratch? Often they are transitioned directly to professional-grade languages and developer tools, which has the effect of turning what was once fun to something scary and frustrating. Many kids stop their PL development right then and there, writing it off as something “not for me”.<p>I find this sad, as it means a lot of people who might otherwise benefit from programming in their daily lives never pick it up again. Just as not everyone who can cook needs to be a chef with professional grade equipment to benefit from the activity, not everyone who programs needs to be a software developer with all the incidental complexity that entails.<p>We start teaching Java to kids as early as 8th/9th grade when the vast majority aren’t ready for it. Even my sophomore students in college regularly struggle with the language.<p>There’s a huge gap between scratch and Java that is begging to be filled by innovative language design. Or better yet, a language that can a student can stick with from early age all the way through adulthood. Imagine if students who started at 11 actually stuck with it through 18 and beyond, instead of giving up at 13/14. Scratch has a perception problem as being something exclusively for kids; I don’t know how it can shed that reputation.<p>We need to stop treating early childhood programming education as the first stage of the funnel into corporate tech jobs. Not everyone wants to end up there, and we shouldn’t design their education with that goal in mind. Programming literacy is too important in the 21st century to reserve the skill for would-be devs.
> Most importantly, browsing projects shows you what’s possible. A kid begins by playing games, starts to get curious, and next thing you know, they’re changing the code to give themselves extra lives.<p>This is actually the driver for a lot of kids to learn programming. Neopets and Myspace allowed you to customize your profile with HTML, Minecraft allows you to make mods in Java, Roblox has an entire game studio that leverages Lua. Kids see something they want to be able to do, and they do it!<p>The steepness of the learning curve does matter, but searching "how to make a roblox game" into YouTube goes quite a long ways these days
> It was the community aspects that really drew in my kids. They would get really excited whenever somebody followed them or “loved” one of their projects. It gave them the motivation to build more ambitious things.<p>This is really what sparked my love of coding and, more broadly, creating things when I made projects in Scratch as a kid in the early 2010s. Seeing all of the positive feedback on stuff I posted as well as seeing the awesome stuff other people posted motivated me to keep one-upping myself with cooler and cooler projects. Those who downplay the positive effect Scratch can have on kids tend to overlook this part of the equation.
A lot of discussion here about the limitations of Scratch as a programming language.<p>But the magic of Scratch is the community. My daughter learned Scratch, and she joined multiple teams of 10-year olds making all kind of interactive stories and games. And virtually every interaction she had was positive, uplifting, and helped her construct her identity as a programmer.<p>She now teaches Scratch for kids and programs in Java and Python. But making those friends and doing those team projects was invaluable - and nearly unreplicable in another language/ environment.
Having already known how to code, I gave Scratch a shot after hearing about it. I know I'm not the target audience, but despite "looking" friendly I found it very complex and not very intuitive at all. If the goal is to ultimately learn programming with industry standard tools, I think the time would be better spent learning those tools and fundamentals rather than becoming comfortable with Scratch and trying to transition to them.
I didn't see anyone else mention it, but I think one contributing factor is the inclusion of Scratch on the Raspberry Pi, which until the past year or so has been one of the most affordable ways to get kids set up with a little computer for learning.<p>Many educational programs have a setup where each kid gets a Pi (well until recently since the past year they've been hard to get), and Scratch was the perfect companion since it didn't require a ton of RAM or a fast CPU to run well.<p>At this point though I see it come with a lot of other educational programs on Chromebooks, too. Since the sharing is over that MIT site, it's perfect for those "lite" computers that don't store anything local.<p>One interesting side effect of its popularity is that I've seen a number of kids who "know scratch" but don't really "program" anything with it. They just load up other people's programs and game with it, basically a Steam for Kids.
FYI There is a free online Scratch Conference July 21, 2022<p><a href="https://www.scratchfoundation.org/scratch-conference" rel="nofollow">https://www.scratchfoundation.org/scratch-conference</a>
One of the coolest things about scratch that I've seen from using it and being an instructor is that it teaches the user how to work in event based systems. I've seen children with better intuitions for event based architectures than some veteran developers.
Is there a reason that visual programming languages haven’t taken off for professional programming?<p>I know of several for specific fields (Dark for backends, TouchDesigner for live graphics/multimedia), but none that are more generalised, open, or in wide use.<p>It feels like an underdeveloped area that’s ripe for exploration and experimentation.
From a quick look it doesn't seem that the graphical elements are inherent to the language. It could be expressed in a text syntax, and with more or less difficultly other languages could get a similar graphical overlay.<p>If the graphics are useful training wheels to new programmers of scratch, the same is probably true for the text languages. And from time to time even a super cyclist can find a use for training wheels.<p>For one thing, a language expressed in a common graphical form could help communicate with non-coder domain experts, quality assurance teams, customers, etc. This is kind of an argument to publish the latin bible in the vulgar argot, less exclusive to the priesthood.
I remember introducing a middle schooler to programming using Scratch at my highschool's open day. I had spent a few hours making a simple two player shooting game and a maze generator for the IT class display. Most kids just wanted to play the games, but seeing just one of them be genuinely excited about the possibility of creating his own interactive experiences, asking questions about how certain mechanics were implemented, what I did to get to this point, if I thought he would be able to create similar things, was really encouraging. Probably didn't make a difference in the long run, but still a treasured memory for me.
I never find the time to dive into it, but for years I carry the thought that somewhere in the general direction of “take the visual programming module of Scratch and make it talk to a cleanly designed high-level API of our business application” lies the key for tremendous feature development productivity, at least for some kinds of features — where from then on, our Product Managers simply go like “oh I know, let’s just put this block into that IF block and thus add another step to the user registration”, without the need to use precious dev resources.
I learned to program on scratch in the 6th grade when it was very new, circa 2008. In many ways, it is more real than other learning languages.<p>In retrospect, the smalltalk influence of scratch I think left such an impression on me that I continue to love dynamic, always live environments to this day. The broadcast system is surprisingly powerful and forward thinking. I do recall it being a bit difficult to build up your own abstractions, but such guardrails I think are useful for learning and I usedd Scratch before custom blocks were available.
College student here. Scratch was my first real introduction to programming. It's an amazing tool, and a great way to get anybody started with programming
There's a similar project at MIT call <i>App Inventor</i> <a href="http://www.appinventor.mit.edu/" rel="nofollow">http://www.appinventor.mit.edu/</a> which uses a graphical Scratch-like environment to build Android apps. I can't tell if the two projects share code, but they certainly share philosophy and approach.<p>I found App Inventor actually quite a practical way to write small useful Android apps. Certainly better than loading squigabytes of IDE/library/emulator/etc and fighting with the Android build system. (This from someone with plenty of code-cutting history!)<p>I wouldn't use App Inventor for anything big, but for small projects, have a look.
I love what they've done and how my kids have taken to it. The combination of design tools and code reminds me of the "golden age" of Flash in some ways. Vector graphics editor, sound editor, code, it all works together - this is pretty special to see in one tool that kids can use.<p>The games are actually getting quite <i>good</i> on the platform, and that means it's hard for a lot of parents to understand how much time is gaming vs. coding.
This is extremely heartening. I can’t wait for the day we get popular Smalltalk apps that users can easily inspect and modify! Seems like it’s actually a great platform on which to bootstrap a free software ecosystem more effective (for remixing) than GitHub.
I have yet to see a visual programming language that looks any easier than something like JS or Python, Scratch is no exception.<p>I still think Scratch’s interactive environment is impressive.
Scratch is awesome! I used it in high school for some small, silly games. It was fun :)<p>As for "next steps" from Scratch: I think micro:bit [0] can fill that gap. Several of my coworkers were part of an event that used it to teach a group of middle-schoolers about programming. It uses block-based programming (supporting even Scratch I think?) and lets you move to and from a text-based language (Python and JS IIRC). I'm not sure if micro:bit has the same social component that the Scratch site does, but it seems like it could at least kids "hey, this is what my code looks like in Python!" Then, they may go and download Python and start hacking away on that.<p>0: <a href="https://www.microbit.org/" rel="nofollow">https://www.microbit.org/</a>
The simplicity of the visual language that Scratch provides inherits from the simplicity of Lisp, via Logo. The Logo language (& the Mindstorms pedagogical philosophy), which is what Scratch builds off of in a visual way, was implemented as a dialect of Lisp.<p>From anecdotal experience, I do believe that the choice of a Lisp for Logo was an important criterion in the simplicity of the language, and thus the high impact of the learning impact.<p>I do think that if we find Scratch useful and powerful, then we should really re-/consider Clojure as an important language for <i>real</i> general purpose programming work, for many reasons:
<a href="https://www.youtube.com/watch?v=Y3-53JoGPE4" rel="nofollow">https://www.youtube.com/watch?v=Y3-53JoGPE4</a>
My son and I got a lot out of a similar iPad app called Tynker, which we both ended up liking better than Scratch, which he used at school. Tynker has a physics engine, which opens up all sort of great game possibilities (we made a cheapo Angry Birds). Also as referenced above, Tynker has a slightly richer language that gets rid of the need for some bad practices (e.g., functions can return values, you can declare local vars vs all-globals-all-the-time, etc). Having the tool work well on a tablet also travels really well, and is a simpler container than a browser window for a really young kid.
Scratch was how I got started in programming back in elementary school. It was taught in our computer classes. Everything this article says is spot on, the social aspect is amazing. I made a few programs and got comments on it and stars which hooked me. Side note hearing griffpatch is still around amazes me, I remember playing his scratch programs and wishing I could eventually do that. What’s amazing is it’s all still around and runs![1]<p>1. <a href="https://scratch.mit.edu/users/miniman520/" rel="nofollow">https://scratch.mit.edu/users/miniman520/</a>
Interesting that this popped up now. I had heard of Scratch but never really looked into it, but decided to give it a go last month. I decided to write a planetarium using the actual Hipparcos catalog, and solving Kepler's equation for the planet positions. I had hoped I could use it as an example to show that it's not really that hard to do. Unfortunately, I found it pretty tough to organize the code in any meaningful way. E.g. blocks can't have local variables, nor return values. You can't call a bock in another sprite, there's a workaround using "broadcast and wait", but it triggers a screen refresh. Just moving blocks around to order them in a meaningful way was quite a chore. Some mistakes, like making a variable global rather than sprite level, can't be corrected. Adding comments seems to be a bit buggy, and they don't move as you move the blocks around.<p>Since I've been programming for many a decades now, it's hard for me to see what it'd be like for a beginner to approach the language. But I was left wondering if this really is any easier for beginners. And if it is easier, is it really better they learn this way since it seems to actively force some poor programming choices.<p>In the end my code ended up looking way more complicated than it really is, and I'm not sure anyone but me could make heads or tails of it. (For anyone that wants to have a look: <a href="https://scratch.mit.edu/projects/708233643/" rel="nofollow">https://scratch.mit.edu/projects/708233643/</a> ).
I search for anything I can to figure out what is happening with the Scratch community because my daughter, who has been a scratch user for 6 years has, over the last two been on there almost exclusively for the "community."<p>It's super cool to see other kids remix her works and she to do the same.<p>The one complaint I have is that we have run into one creep who was soliciting kids' info, however it was only one time and he disappeared pretty quickly.
I prefer this sort of programming system.<p>Mostly these days I do 3D modeling, so I'm using a Blockly version of OpenSCAD:<p><a href="https://www.blockscad3d.com/editor/" rel="nofollow">https://www.blockscad3d.com/editor/</a><p>but I'd really like to see a nice, stand-alone desktop development environment like to Scratch which isn't encumbered by a sandbox and which is able to write and append to local files and which is easily installed and which runs reliably.<p>Crashed and burned on pyFlow, Ryven, GraphSCAD, and a bunch of others.<p>Currently hoping that Nodezator (a node programming system based on pygame) will pan out --- it just needs branches and loops for my purposes:<p><a href="http://nodezator.com" rel="nofollow">http://nodezator.com</a><p>In the meanwhile, I'm copying OpenSCAD code out of BlockSCAD and pasting it into RapCAD:<p><a href="https://forum.makerforums.info/t/g-code-preview-using-openscad-rapcad/85729" rel="nofollow">https://forum.makerforums.info/t/g-code-preview-using-opensc...</a>
One problem I've seen with Scratch is that schools rely on it for too long. Kids get into high school and the school is still teaching with Scratch.
Observations:<p>- among many thoughtful comments, a search for "fun" yields mostly comments about functions and expressivity; I think this is a key aspect that isn't as apparent to many experienced people here. The fond recollections of ZX80/81's captures some of that idea, though.<p>- Scratch is blessedly non-commercial and immensely approachable. It's educational mission is not top-down, but bottom-up.<p>- The mix of 3GL expressivity with enough constraint to get a person started is great. Kind of reminds me of the generativity I see in kids playing Minecraft.<p>- The pure old-schoolness of it all keeps you from being mugged in a dark semantic alley by a gang of monad-botherers.
My children did not like scratch (it is taught at school in France). They had much less problems to understand Python which seems more natural in the interactions (displaying things, especially).<p>They are unfortunately not interested in programming but when they have to do something at school they catch up with Python quickly. With scratch not that much.
It is impossible to do anything substantial in Scratch because it does not have text-based representation, and so cannot be comprehended by programming tools which are critical to modern programming (or even just programmers). If it had a comprehensible ETL language, it might be possible to use for significant engineering, but the current export format is just a JSON morass, worst in some ways than byte code. As usual with ETL hacking of a primarily graphical representation, there could be significant issues where the VUI is unable to represent changes made "behind its back"...all of which is to say, forget it.
I just tried Scratch to make a quick little animation and I must say that it's actually pretty amazing. I've known about it for close to a decade but never really tried it out. I just spent a few minutes playing around and I was amazed by how easy it was to program a simple little animation.
I have to say that I used this back in school many years ago, and I absolutely hated it. But I realize that other people might feel different about it.<p>I much preferred just being able to write text characters, I felt like it gave me a lot more freedom in what I can achieve, but also how I achieve those things.<p>I might be an outlier in that though.
Scratch project I reviewed last year which in my opinion was amazing.<p><a href="https://scratch.mit.edu/projects/524709085/editor/" rel="nofollow">https://scratch.mit.edu/projects/524709085/editor/</a><p>1,2,3 and 4 to change ghosts and r to randomise colour.
A good place to start if you want your kids to pick up Scratch and programming.<p><a href="https://projects.raspberrypi.org/en/paths" rel="nofollow">https://projects.raspberrypi.org/en/paths</a><p>Disclosure I work for RPF.
I discovered the existence of, and taught myself, BASIC on my Apple IIc when I was about 8. My first program was an implementation of Mad Libs. Surely we could just take that concept and make it even easier for kids.
I used Scratch ALL THE TIME as a kid. I'd always play other people's projects and I made several of my own. I think in the long run it did help me; it was definitely fostered my interest in coding and game dev. And it probably did help me understand concepts in coding like variables.<p>I remember browsing Github several months ago and seeing that there was a repo for a Scratch plugin. That really surprised me, I didn't even know it allowed plugins. I'm surprised that there were people willing to make them too! That's awesome!
The annual variation shown in the graph immediately says tells me that a large portion of use is driven by academic forces. That can be a problem, but can also be an opportunity.<p>If the institutions driving Scratch adoption decide to switch away from Scratch, the community will be on much more unstable foundations. The opportunity here is finding non-education modes of engagement. Social engagements, viral engagements, or non-academic partnerships are all ways Scratch could strengthen its community.<p>Wishing them luck - it looks like this brings joy to a lot of kids.
Scratch was my introduction to programming. I was already a computer nerd, but had never programmed before. This was in the mid 2000s.<p>Now I'm in the industry and so are 15% of my classmates from that time.
When launched the community made me laugh. Every lang has its own community, this one is hilarious. They can code but dont bother a 12 year old with your doctrine of copyright. I MADE THIS!
I can't get my son to get excited with Scratch :(<p>Every time we open RPi, and I start opening Scratch, he will say, "Daddy, how about we do this" while taking over the mouse and opening a game.<p>When I'm not looking he'll open Chrome and play YouTube.<p>To be fair, once we're in Scratch, I don't even know what to do with it.
I tried to teach with scratch to a class of kids, the software worked across tablets like iOS and Android and PCs in incoherent ways, the same code blocks worked slightly or totally differently.<p>And I'm not gonna give such classes anymore around this software, a waste of time.
“ Most importantly, browsing projects shows you what’s possible. A kid begins by playing games, starts to get curious, and next thing you know, they’re changing the code to give themselves extra lives.”<p>Gorillas.bas anyone?<p>My programming life started the same way about 30 years ago.<p>I love to hear this is still happening.
For teaching kids (school classes) to code, I have had better success with <a href="https://www.codecombat.com" rel="nofollow">https://www.codecombat.com</a> than MIT Scratch.<p>Kids had more fun than with scratch and learnt programming actual language.
I believe it. Back in college we started out with this visual tool called Raptor and it was a great introduction to programming before diving into more complicated languages like Java. While Raptor was fun, clearly Scratch would have been nicer.
Lego Mindstorms is probably the reason i got into programming.<p>Moved from using the visual editor as a kid to learning that I could use this weird language called "C"(?) to do even more complex things with a few sketchy libraries.<p>Amazing
Code available is awesome for simple games.<p>I think it was a Q-basic game called worm or nibbles or something that I first “programmed” on. Wanted infinite lives or a very short maximum length. Just had to change a variable.
There is no better way for people to show that they understand message passing and the actor model than to have them implement a simple scene in Scratch.
Unfortunately I think making "games, animations, stories" is not that big of a deal.<p>Even though it is nice to get kids into programming - it is not what business development will be.
Scratch is overrated. The color blocks are a fantastic draw for getting a nonprofit funded, but for the children actually using it, the they're just an obstacle. Even at the youngest school ages, children grasp the grammatical concepts of programming effortlessly. It's the math that's the kicker--explaining modulus when they haven't gotten to division yet, binary & hex before they've fully grasped decimal, coordinate systems before they've learned negative numbers, etc...<p>IMHO, best modern tools for <i>lern2code</i> would be a tie between Lua/Love2d & p5.js.<p>And for 3rd place... you're going to think this is WAY OUT THERE... C--spare them the gcc esoterica of course--with sample project they can use as a scratchpad. Having types, but without all of the meta complexity of anonymous funcs, OOP, closures, dynamic typing, etc, takes a lot of the complexity (<i>and frustration!</i>) out of learning to program.<p>At the older & more social ages, the old web APIs were a wonderful stomping-ground. That avenue has since been narrowed-down & greatly so, for obvious reasons.<p>The Papert/LOGO/PARC stuff should be thrown into the fire. A military-industrial experiment on children; how quickly can we transform the random prole into a technician? Not that any of the researchers were "bad people" or even aware of it. It was a simple necessity of the times & typical "<i>forest for the trees</i>" situation. I think the numerical/visual/spatial primacy of this branch--trying to give kids a visual "feel" for mathematical representations before their brains are ready for the "real deal"--diverts focus away from many of the more "human" uses of the technology.