Scratch

This article is about the programming language. For its editor, see User Interface. For its website, see Scratch Website. For the current version of Scratch, see Scratch 3.0.
Template:Scratch Mod

 File:ScratchCat3.0.svg
**Scratch** is a free, educational, block-based programming language that is developed by the Lifelong Kindergarten Group at the Massachusetts Institute of Technology (MIT). The current version, 3.0, can be used in the online editor here or downloaded here (the previous version, 2.0, can be downloaded here). It is targeted towards kids ages 8–16.

Scratch is designed to be fun, educational, and easy to learn. It has tools for creating interactive stories, games, art, simulations, and more. Users program in Scratch by dragging blocks from the block palette and attaching them to other blocks like a jigsaw puzzle. Many connected blocks are called scripts. These scripts then control sprites that can perform actions on the stage. This method of programming (building code with blocks) is referred to as "drag-and-drop programming". Scratch also has its own built-in paint editor and sound editor.

Projects that users create can be shared to the Scratch Website, making them visible to everyone. One of the core features of Scratch is remixing, in which users can change and re-share other users' projects. Users can communicate and discuss in the Scratch community by posting comments and using the Discussion Forums. There are currently over 102 million registered users and 122 million shared projects.

## History

Main article: Scratch Versions
Scratch began development in 2003 and was released to the public in 2007. The idea behind Scratch was inspired by work in the Computer Clubhouse where children wanted to create interactive stories, games, and animations, but there were no tools that could easily do this. The Lifelong Kindergarten Group was also inspired by Logo and EToys.Template:Cite post Scratch 1.0, the first stable version, lacked many of the features now present. At that time, only the offline editor existed, and the website was a small blog where projects could be uploaded and played. As Scratch became more popular, the website grew with it. Scratch 1.1, Scratch 1.2, Scratch 1.3, and Scratch 1.4 were released. At this point, Scratch had millions of users, projects, and many new features.

Upon the release of Scratch 2.0 in 2013, the website and User Interface were changed. Scratch continued to grow, achieving 30 million users and projects in 2018. Scratch 3.0, which was released on January 2, 2019, updated the look and feel of the website and editor and added many new features, such as new extensions.

Because of the growth of the Scratch community, the Scratch Foundation was created and it has led the design, development, and support of Scratch since March 2019. MIT will continue to collaborate closely with the Scratch Foundation.

## Uses

Scratch is widely used in schools around the world as a means of introducing basic computer programming to children. It is also used outside of schools. Some teachers even use Teacher Accounts to monitor students while having fun in the Scratch Community. Children and even adults gain an understanding of the fundamentals of programming with Scratch and often move on to other programming languages. During their use of Scratch, people can create, remix, and collaborate with others on Scratch projects.

## Layout

Main article: User Interface
 File:Scratch 3.0 Program.png
In designing the language, the creators' main priority was to make the language and development environment simple, intuitive, and easily learnable by children who had no previous programming experience. There is a strong contrast between the powerful multimedia functions and multi-threaded programming style and the rather limited scope of the Scratch programming language.

The user interface for the Scratch development environment divides the screen into several panes: on the left is the blocks palette, in the middle the scripts area, and on the right the stage and sprite list. The blocks palette has code fragments (called "blocks") that can be dragged onto the scripts area from the palette to make programs. To keep the palette organized and for ease of use, it is organized into nine groups of blocks: motion, looks, sound, control, events, sensing, operators, variables, and more blocks.

Projects that users create can be shared on the Scratch Website and viewed by others.

## Origin of the Word

"Scratch" was used as the title for The Lifelong Kindergarten Group's programming language, as it is to do with "scratching" referring to music.

> Scratching is a DJ or turntablist technique used to produce distinctive sounds by moving a vinyl record back and forth on a turntable while optionally manipulating the crossfader on a DJ mixer.
>
> Wikipedia

Likewise, within Scratch, you take different bits of code (blocks), put them together, and have made something new.

> We take the name "Scratch," from the way that hip-hop disk jockeys scratch with music. They take pieces of music and then combine them together in unexpected and creative ways.
>
> Mitchell Resnick, Lifelong Kindergarten Group at MIT

### Variants of the Word

The word "Scratch" has spawned other phrases that have become popular amongst users of Scratch:

* New Scratcher  A user who has the New Scratcher status
* Scratcher  A user of Scratch
* Scratching  A verb which means to use Scratch
* Scratched  A project that is an attempted replica of another game. e.g. "Pac-man Scratched"
* Scratch Time  The timezone that the forums are set in (EST/EDT)
* Scratch Team  The moderators and developers of the website.
* Scratch On!  A phrase coined by the Scratch Team, and used by them (although has been adapted by other Scratchers as well) to encourage users, meaning "carry on using Scratch"

## Motto

Scratch's motto is "Imagine, Program, Share". This follows the basic principle of creating a project: one comes up with an idea ("Imagine"), programs the idea in Scratch ("Program"), and then publishes it in the community ("Share").

## Versions

Main article: Scratch Versions
Scratch is currently on version 3.0. The online editor was officially released on January 2, 2019, and the offline editor at a later date. Its predecessor is Scratch 2.0, which was released on May 9, 2013. The previous, older versions are Scratch 1.4, Scratch 1.3, Scratch 1.2, Scratch 1.1, and Scratch 1.0. Each version had significant changes, especially the jump from 2.0 to 3.0. Not only did the program update with version 2.0 and 3.0, but the entire website was redone.

## Features

* Scratch is Turing complete.
* It is primarily event-driven.
* Whether or not it is OOP is debated in the community.
* Scratch has variables and lists for data storage, and arrays can be replicated.
* Scratch is *not* atomic in repetition, though that can be simulated with Single Frame programming.
* Scratch 2.0 onwards supports procedures and recursion.
* Scratch has many simplified casting rules. Data is not, however, first-class  there are no first-class lists, sprites, or procedures (lambda).

## OS Permissions

Scratch has limited hardware/OS access and is a very safe program. The following can be accessed by Scratch:

* Ambient volume
* Mouse position relative to the Scratch frame
* Key presses, only if Scratch is in focus
* In Scratch 3.0, some movements are provided as sensor values, using a webcam for image input.
* The filesystem can be accessed while in development, but not while running.
* Scratch can communicate externally to a LEGO WeDo, LEGO BOOST, Lego Mindstorms EV3, Makey Makey, micro:bit, Go Direct Force & Acceleration, or Raspberry Pi set.

Scratch Modifications may offer more OS permissions.

## ScratchJr

Main article: ScratchJr
ScratchJr is a programming language based on Scratch that utilizes visual-centric content to introduce 5 to 7-year-olds (its intended audience) to the programming world. It was developed in part by some members of the Scratch Team, and it is available on iOS and Android as a mobile app.

## See Also

* Getting Started with Scratch
* Scratch 3.0  the current version of the Scratch website and program
* Scratch Website  the website that Scratch is hosted on
* Scratch on Wikipedia  the description of Scratch on Wikipedia
* Scratch Timeline
* Scratch Wiki
* Programming Language  what they are and their uses to the world of computer science

## References

1. ↑ scratch:statistics
2. ↑ https://web.archive.org/web/https://scratch.mit.edu/statistics/
3. ↑ https://medium.com/@mres/supporting-the-growth-of-scratch-e56dc7f84453

de:Scratch
ru:Скретч
id:Scratch
nl:Scratch introductie
ja:Scratch
fr:Langage Scratch
hu:Scratch