A Programmer's Perspective of Scratch
Tags: discuss, scratch
Published: 2020-11-17 22:55:22

# 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](https://scratch.mit.edu/studios/3995548/)
- [Facial Recognition on Scratch](https://scratch.mit.edu/projects/416762902/)
- [Particles - TurboWarp](https://turbowarp.org/449708139) (TurboWarp is a Scratch alternative compiler)
- [My realist raytracer v2.0 - TurboWarp](https://turbowarp.org/444219459)
- [Raycasted 3d terrain engine v1.1 - TurboWarp](https://turbowarp.org/444263092?turbo)
- [Planet Generator - TurboWarp](https://turbowarp.org/416842874?turbo)
- [Optics (refraction) v0.5](https://phosphorus.github.io/#115735599) (By an adult/the most followed person on Scratch! Also, phosphorus is TurboWarp's predecessor)
- [Sand and Water v3.2 - TurboWarp] (https://turbowarp.org/206806888)
- [Fractal GIF Maker - TurboWarp](https://turbowarp.org/425376087)
- [Updated Scratch Emulator v0.29.2 - TurboWarp](https://turbowarp.org/290745095)
- [Gravity Raycasting (Black hole) - TurboWarp](https://turbowarp.org/419599433?turbo)
- [The Ninja 3D - TurboWarp](https://turbowarp.org/393464757?60fps) (A surprisingly addicting 3D game! Wow!)
- [3D Platformer - TurboWarp](https://turbowarp.org/419379287) (Our second game! Another 3D one!)
- [Photorealistic 3d Renderer - TurboWarp](https://turbowarp.org/147259154) (This one is SO COOL.)
- [Minecraft V5 - TurboWarp](https://turbowarp.org/50029544)
- [Knotted - TurboWarp](https://turbowarp.org/382594530?60fps) (This game is simpler than the other ones, but complex in itself. Try seeing inside!)
- [Super Mike World - Full Version on Scratch](https://scratch.mit.edu/projects/356366331/) (Another game! This one is 2D, but still complex. Once again, see inside!)
- [Griffpatch's projects](https://scratch.mit.edu/users/griffpatch/projects/) (One of the most advanced coders on the site. Look at his projects, they're epic.)
- [Most loved Scratch projects list - ScratchStats.com](https://scratchstats.com/topprojects/loves) (ScratchStats is a website for Scratch community statistics.)
- [Star Wars (Story Mode) Grievous Ship Invasion](https://scratch.mit.edu/projects/200480997/) (An amazingly well-put-together game by FUNUT, one of my fav Scratchers.)
- [Everest](https://scratch.mit.edu/projects/425004987/) (Another one by FUNUT. Play it! It's hard...)
- [xamuil2](https://scratch.mit.edu/users/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.