What is Scratch?
Starting from the basics and going all the way up to a programmer's perspective, this section is going to have a few surprises along the way.
The Basics (for everyone)
Scratch is a visual block-based programming language aimed at kids. Its massive community and reputation have made it well-known for being a great first coding language for kids.
However, what if Scratch could be not only for kids but for adults as well? What if adults used it as a first programming language as well? Chances are, you don't even understand some concepts that kids grasp right away with Scratch. The power of those colorful blocks is hidden in the illusion that Scratch is just for kids.
You couldn't be more wrong.
A Kid's Perspective
People think programming is difficult. They're right, it is. It's not as difficult as it seems, however. A common first sentence that people I'm teaching say is:
Coding is boring.
I've gotten so used to this sentence that I have a canned response for it:
What's boring about making your imagination come to life on a computer screen or making your dream game? What's so boring about making something you like cooler than it already is?
(People never have an answer to that.)
Kids get used to it after a while. The colorful, playful interface makes them realize that the people who made Scratch aren't playing by the rules. The language is specifically for kids, and nobody else. This is a great language to start with, sure, but also to keep at it. There is so much potential to Scratch, that even the most complex project on it is good enough to run as a website, and nobody could guess that it was made with Scratch.
To kids, Scratch is a playground, always changing and moving. There are people there, a community that even Dev doesn't have. When you share something or do something, there is instant feedback. Instant compliments and constructive criticism. Nothing — and I mean it — nothing is like that other than Scratch.
A Professional Programmer's Perspective
Being a kid, how would I know how a professional programmer would feel on Scratch?
Well, long story short, I have a father.
My father is mainly a backend programmer. He works at Bloomberg, which is impressive in itself, and he also introduced me to Scratch. Funny, he doesn't get it very well now. He is learning Scratch, and I'm teaching him. Life is weird.
So, yeah, because of my long-winded conversations with my father on Scratch, I more or less know how he feels about it.
In Scratch, code is written through snapping blocks together. Some blocks are static. They don't change, and you can't change them. They serve one purpose, and always work the same. Fewer and fewer work that way with each update, though.
Most blocks, however, are changeable. You can change values or options. You can do all sorts of things.
Code spreads out in all directions in Scratch and can be used in different ways. Because of this, complex programs with a lot of code often end up messy and unreadable.
This also makes it extremely hard to edit code, as dragging a block also drags all the other blocks under it, meaning that coding in Scratch takes way more time than other languages.
People have made scrolling platformers and cloud-based games. They've learned to encode and decode data from the cloud and display it. You can make games with Scratch that won't look out of place in a mobile app store. Deep learning has made it to Scratch now, and in a few years, we'll look back, thinking, we didn't have xxx
back then??
A couple of links that show how Scratch has progressed to be an incredibly powerful programming language:
- Scratch Studio - Machine Learning
- Facial Recognition on Scratch
- Particles - TurboWarp (TurboWarp is a Scratch alternative compiler)
- My realist raytracer v2.0 - TurboWarp
- Raycasted 3d terrain engine v1.1 - TurboWarp
- Planet Generator - TurboWarp
- Optics (refraction) v0.5 (By an adult/the most followed person on Scratch! Also, phosphorus is TurboWarp's predecessor)
- Sand and Water v3.2 - TurboWarp
- Fractal GIF Maker - TurboWarp
- Updated Scratch Emulator v0.29.2 - TurboWarp
- Gravity Raycasting (Black hole) - TurboWarp
- The Ninja 3D - TurboWarp (A surprisingly addicting 3D game! Wow!)
- 3D Platformer - TurboWarp (Our second game! Another 3D one!)
- Photorealistic 3d Renderer - TurboWarp (This one is SO COOL.)
- Minecraft V5 - TurboWarp
- Knotted - TurboWarp (This game is simpler than the other ones, but complex in itself. Try seeing inside!)
- Super Mike World - Full Version on Scratch (Another game! This one is 2D, but still complex. Once again, see inside!)
- Griffpatch's projects (One of the most advanced coders on the site. Look at his projects, they're epic.)
- Most loved Scratch projects list - ScratchStats.com (ScratchStats is a website for Scratch community statistics.)
- Star Wars (Story Mode) Grievous Ship Invasion (An amazingly well-put-together game by FUNUT, one of my fav Scratchers.)
- Everest (Another one by FUNUT. Play it! It's hard...)
- xamuil2
Try going to each and every one of the links above and checking them out. Play them through, and look at the source code. Each and every one was crafted with care and amazingness.
Top comments (13)
The lack of functions in Scratch was the one thing I found truly irritating when I tried it with my kids. You had no choice but to duplicate code and that's really a bad habit for a budding programmer. I hope they added it since.
At the time I found BYOB (now Snap!) that is basically Scratch with functions and is used to teach university students. Maybe it would be of interest to you, although I don't know if the community there is as vibrant.
Scratch has added functions two versions ago in the 2.0 Preview :)
I don't know when you used Scratch, but it has all sorts of things now!
I like Snap! because of the complexity present. However, I feel like it's missing a community. There's no social interaction. It's great if a kid is trying to code, but if someone's looking for feedback or fame, it's not that great.
I had to check: the last Scratch programs my kids made (that I could find!) date back to 2013. So, yes, it was a while ago.
I'm really glad they added functions, that gives it so much more potential!
BTW, they're not called functions, they're called custom blocks.
Technically. I just avoid scratch terminology since I don't want to confuse non-Scratch users.
This is a very well written post, scratch and other forms of visual programming are playing a larger role in our community than ever before, just look at node graph based programming in Unreal Engine and others. I have looked to scratch to create a simplistic interface for my product configurator project.
I didn't read this post as "just a kid" but a very switched on individual.
Nice :)
as a fellow scratcher myself, I started with Scratch (my dad introduced me to it).
Now while the rest of my Grade 9 class is learning scratch, I'm over here creating full-stack apps and ethical hacking and very advanced whatnot. so yeah.... I'm grateful for scratch
While my class (grade 8 now) can't code a platformer in Scratch, I get to be making one in JavaScript
You have opened my eyes to how complicated Scratch can get.
I taught Scratch to a bunch of fourth graders and only a few got it.
So congrats!
Yeah, it can get super confusing from time to time.
I prefer mBlock (another visual based code editor like Scratch). The ability to use micropython and code extensions for it with JS really is a great segway from blocks to real code.
Some comments may only be visible to logged-in visitors. Sign in to view all comments.