A Programmer's Perspective of Scratch
CoolScratcher

CoolScratcher @coolscratcher

About: I'm a 14-year old kid who's cool! I run KidCreatorsTeam (kids teaching kids), and the channel Cool Scratcher. Not many kid coders out there, so be nice to me :)

Location:
USA
Joined:
Feb 23, 2020

A Programmer's Perspective of Scratch

Publish Date: Nov 17 '20
17 13

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.

Comments 13 total

  • Matt Curcio
    Matt CurcioNov 18, 2020

    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
      CoolScratcherNov 18, 2020

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

  • Adam Crockett 🌀
    Adam Crockett 🌀Nov 18, 2020

    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.

  • Sylvie Fiquet
    Sylvie FiquetNov 18, 2020

    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
      CoolScratcherNov 18, 2020

      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.

      • Sylvie Fiquet
        Sylvie FiquetNov 18, 2020

        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!

        • mark.exe
          mark.exeJun 25, 2021

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

          • CoolScratcher
            CoolScratcherJul 7, 2021

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

  • Jscoder17
    Jscoder17Jan 29, 2021

    Hey can you check your email?

  • Sasen Perera
    Sasen PereraOct 26, 2022

    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
      KaamkiyaJul 20, 2023

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

  • Best Codes
    Best CodesOct 24, 2023

    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.

Add comment