Scratch (programming language)
|Designed by||Mitchel Resnick|
|Developer||MIT Media Lab Lifelong Kindergarten Group|
|Stable release||2.0 (May 9, 2013)|
|Influenced by||Logo, Smalltalk, HyperCard, StarLogo, AgentSheets, Etoys|
|License||GPLv2 and Scratch Source Code License|
|Usual filename extensions||.sb .sb2|
Scratch is a programming language learning environment enabling beginners to get results without having to learn syntactically correct writing first. Created by the MIT Media Lab, it is intended to motivate for further learning through playfully experimenting and creating projects, such as interactive animations, games, etc. Advocates suggest that individuals who use Scratch at a young age develop a solid foundation of knowledge that can help prepare them for the use of higher level programming languages and math.
Scratch is more concerned about the logic behind programming and solving problems. The great advantage of scratch is that complicated solution can be done on there. Scratch allows for user graphical interface which not only encourages beginners but they also can see what they input.
The name Scratch derived from the turntablism's technique of scratching(Mixing Sounds) and stresses the similarity of the process of programming to the process of mixing/scratching instead of its similarity to the processes of writing (i.e. scripting).
The first version of Scratch was developed in 2003 by the Lifelong Kindergarten group, led by Mitchel Resnick, at the MIT Media Lab. Scratch allows for constructing and testing through mostly tactile process because the creators' first priority was to make it as easily learned by children as possible.
The tactile and visual GUI of Scratch allows children to explore by dragging-and-dropping blocks of conditions (with parameters) and of consequences ("actions") onto selected agents (called "sprites") and backgrounds (called "stages") how interactive animations, presentations, stories, and simple games can be playfully and programmatically created. To include children who are not able to write syntactically correct structures – nor read them, yet – visually grouped blocks can be tested by clicking on them and they can be easily replaced with different ones in order to re-mix, modify, and create new versions of projects.
Scratch user interface 
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 current sprite info and scripts area, and on the right the stage (backgrounds) and "sprites" list.
The blocks palette has code fragments (called "blocks") that can be dragged onto the scripts area to make programs. To keep the palette from being too big, it is organized into eight groups of blocks: movement, looks, sound, pen, control, sensing, operators, and variables. Different kinds of blocks have different colors and shapes.
In versions 1.3.1 and lower, operators was named numbers. Multi-threaded code with message passing is fundamental to Scratch, but the current version does not treat procedures as first class structures and has no file I/O options and only supports one-dimensional arrays, known as Lists. Floating point scalars and strings are supported as of version 1.4, but with limited string manipulation capability. 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. On May 3rd, 2013, Scratch closed for 3 days to update to Scratch 2.0. The update changed the look of the site and included an online project editor. Scratch 2.0 is still in development.
Community of users 
Scratch is used in many different settings: schools, museums, community centers, and homes. For example, younger children can create projects with their parents or older siblings, and college students use Scratch in some introductory computer science classes (including Harvard's introductory computer class). Via localization files downloaded with Scratch its interface language can be changed to a language of choice since Scratch is used in different parts of the world. The Johns Hopkins University Center for Talented Youth offers an online course on Scratch programming for students in grade 6 and up through the CTYOnline program.
Empirical studies were made of various features—those that interfered with intuitive learning were discarded, while those that encouraged beginners and made it easy for them to explore and learn were kept. Some of the results are surprising, making Scratch quite different from other teaching languages (such as BASIC, Logo, or Alice).
Online community 
The Scratch online community's slogan "Imagine, Program, Share" indicates that sharing and the social aspects of creativity as important parts of the philosophy behind Scratch.
Scratch projects are not seen as black boxes but as objects for remixing to make new projects. Projects can be uploaded directly from the development environment to the Scratch website and any member of the community can download their full source code to study or to remix into new projects. Members can also create project galleries, comment, tag, favorite and "love" others' projects and share ideas. Projects range from games to animations to chatbots. All projects on the website are shared under a Creative Commons attribution and share-alike license and can be played in a web browser (using a Java applet or Flash Player, which are not available for iPhones/iPads). The website receives close to 10 million page views per month and as of January 2, 2013 it had 1,349,093 registered members (however, only 402,697 users have shared projects), and over 3,000,000 projects (every minute more than one project gets uploaded). The website frequently establishes "Scratch Design Studio" challenges to encourage creation and sharing by providing users with a basic design concept. There are custom home pages for Mexico and Israel that display local content in some sections of the home page. There are also local independent Scratch websites in countries such as Portugal and the United Arab Emirates. In 2008, the Scratch online community platform (named "ScratchR") received an honorary mention in the Ars Electronica Prix. There is also an online community for educators, called ScratchEd. Scratch is also a fun literary structure, with online roleplays that range in many different genres.
A number of Scratch derivatives  called Scratch Modifications have been created using the source code of Scratch version 1.4. These programs are a variation of Scratch that normally include a few extra "blocks"  or changes to the GUI.
Some of them additionally introduce shifts in underlying approach to computing, such as Build Your Own Blocks or shorter BYOB, by not only allowing users to "build their own blocks", but featuring first class procedures (lambda), first class lists (including lists of lists), and first class truly object oriented sprites with prototyping inheritance, which are not part of Scratch. BYOB was developed by Jens Mönig with documentation provided by Brian Harvey from University of California, Berkeley and has been used to teach "The Beauty and Joy of Computing" introductory course in CS for non-CS-major students.
See also 
The following youth computing projects also originated in the MIT Lifelong Kindergarten Group:
- Computer Clubhouse
- Lego Mindstorms
- Programmable Cricket
- Additionally, the Stencyl game creation tool also uses a "code block" based visual programming language that was directly inspired by Scratch's.
Other educational programming languages include:
|Wikimedia Commons has media related to: Scratch (programming language)|
- Creating from Scratch: New software from the MIT Media Lab unleashes kids' creativity online
- Scratch source-code download page http://info.scratch.mit.edu
- "Scratch: imagine, program, share". Massachusetts Institute of Technology. Retrieved 25 May 2007.
- Scratch website
- Scratch: Programming for All. Resnick, M., Maloney, J., Monroy-Hernandez, A., Rusk, N., Eastmond, E., Brennan, K., Millner, A., Rosenbaum, E., Silver, J., Silverman, B., Kafai, Y. (2009). Scratch: Programming for All. Communications of the ACM, November 2009
- Scratch Day at Science Museum of Minnesota
- Scratch for budding computer scientists
- Scratch for budding computer scientists
- CTYOnline Scratch Programming Course
- Monroy-Hernández, A. and Resnick, M. (2008). Empowering kids to create and share programmable media. ACM interactions 15, 2 (March 2008), 50–53
- Monroy-Hernández, A., Hill, B. M., González-Rivero, J., boyd, d. (2011) Computers Can't Give Credit: How Automatic Attribution Falls Short in an Online Remixing Community. In Proceedings of the 29th International Conference on Human Factors in Computing Systems (CHI '11)
- Hill, B.M, Monroy-Hernández, A., Olson, K.R. (2010) Responses to remixing on a social media sharing website. In AAAI International Conference on Weblogs and Social Media (ICWSM '10)
- Scratch usage statistics
- BYOB homepage http://byob.berkeley.edu
- Jens Mönig user contributions page
- Mönig's blog post announcing BYOB as bringing protypal inheritance to Scratch
- Brian Harvey homepage
- Brian Harvey user contributions page
- The Beauty and Joy of Computing course homepage
|Wikibooks has a book on the topic of: Scratch|