DEV Community


Posted on

A Programmer's Perspective of Scratch

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:

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)

sfiquet profile image
Sylvie Fiquet

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.

coolscratcher profile image

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.

sfiquet profile image
Sylvie Fiquet

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!

Thread Thread
markverb1 profile image

BTW, they're not called functions, they're called custom blocks.

Thread Thread
coolscratcher profile image

Technically. I just avoid scratch terminology since I don't want to confuse non-Scratch users.

adam_cyclones profile image
Adam Crockett πŸŒ€

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.

coolscratcher profile image

Nice :)

sas2k profile image
Sasen Perera

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

kaamkiya profile image

While my class (grade 8 now) can't code a platformer in Scratch, I get to be making one in JavaScript

mccurcio profile image
Matt Curcio

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!

coolscratcher profile image

Yeah, it can get super confusing from time to time.

best_codes profile image
Best Codes

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.