Scratch (programming language)
![]() | |
Paradigm | object-oriented[citation needed], educational |
---|---|
Designed by | Mitchel Resnick |
Developer | Lifelong Kindergarten Group at the MIT Media Lab[1] |
First appeared | 2007 |
Stable release | 1.4
/ July 2, 2009 |
Typing discipline | dynamic |
Filename extensions | .sb |
Website | http://scratch.mit.edu/ |
Major implementations | |
Scratch | |
Influenced by | |
Logo, Smalltalk, HyperCard, StarLogo, AgentSheets, Etoys |
Scratch is a computer application aimed primarily at children and allows them to explore and experiment with the concepts of computer programming by using the simple graphical interface.[2]. It is developed by the Lifelong Kindergarten group at the MIT Media Lab by a team led by Mitchel Resnick[3] and first appeared in the summer of 2007.[4] Scratch can be installed and freely redistributed on any Windows, Mac OS X or Linux computer. The source code is made available under a license that allows for modifications for non-commercial uses [5].
The name Scratch is derived from the turntablist technique of scratching,[6] and refers to both the language and its implementation. The similarity to musical "scratching” is the easy reusability of pieces: in Scratch all the objects, graphics, sounds, and scripts can be easily imported to a new program and combined in new ways allowing beginners to get quick results and be motivated to try further.
The language and environment
Scratch is used worldwide in many different settings: schools, museums[7], community centers, and homes. It is intended especially for 6- to 16-year-olds, but people of all ages have used Scratch. For example, younger kids can create projects with their parents or older siblings, and college students use Scratch in some introductory computer science classes. [8], [9]
In designing the language, the main priority was to make the language and development environment intuitive and easily learned by children who had no previous programming experience. There is a strong contrast between the powerful multi-media 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 current sprite info and 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 to make programs. To keep the palette from being too big, it is organized into 8 groups of blocks: movement, looks, sound, pen, control, sensing, operators, and variables. In versions 1.3.1 and lower operators was numbers.
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). For example, multi-threaded code with message passing is fundamental to Scratch, but it has no procedures or file Input/Output (I/O) 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. In spite of the orientation towards simplicity, Scratch does have a block that performs mathematical functions like sqrt, cos, and log.
Online community
The Scratch slogan is "Imagine · Program · Share." The emphasis on sharing and the social aspects of creativity are an important part of the pedagogy for Scratch [10]. Programs are not seen as black boxes, but as objects for remixing to make new projects. Scratch programs can be uploaded directly from the development environment to the Scratch website, where other members of the Scratch community can download them (including the full source code) for learning or for remixing into new projects. Members can also comment, tag, "love" others' projects and share ideas. The projects published in the Scratch website are licensed under a Creative Commons attribution and are played in a Java applet known as the Scratch Player. The Scratch Player allows Scratch programs to be run from almost any browser. As of December 15, 2009 the community had more than 408,227 registered members, 95,033 of them had uploaded projects, with a total of 796,359 projects shared by the whole community[11]. The website receives close 7 million page views per month [12]. In 2009, the site reached a total of 500,000 scratch projects. The website frequently establishes "Scratch Design Studio" challenges to encourage creation and sharing by providing users with a basic design concept. Examples have been creating projects that have an undersea theme or that play a song. There are also local Scratch websites in places such as Portugal[13] and the United Arab Emirates[14]. In 2008, the Scratch online community platform (named "ScratchR") received an honorary mention in the Ars Electronica Prix [15].
See also
The following youth computing projects also originated in the MIT Lifelong Kindergarten Group:
References
- ^ "Scratch" Retrieved May 25, 2007.
- ^ Free tool offers 'easy' coding BBC News 14 May 2007
- ^ [1]Scratch: Programming For All. ACM Communications.
- ^ Scratch Lowers Resistance to Programming Wired March 9, 2009
- ^ http://info.scratch.mit.edu/Source_Code
- ^ http://web.mit.edu/newsoffice/2007/resnick-scratch.html
- ^ http://www.smm.org/ltc/scratchday
- ^ http://doi.acm.org/10.1145/1227310.1227388
- ^ http://www.cs.harvard.edu/malan/scratch/printer.php
- ^ [2]Empowering Kids to Create and Share Programmable Media. ACM Interactions.
- ^ http://scratch.mit.edu
- ^ http://www.quantcast.com/scratch.mit.edu
- ^ http://kids.sapo.pt/scratch
- ^ http://scratch.uaeu.ac.ae/
- ^ http://www.aec.at/prix_history_en.php?year=2008
External links
![](http://upload.wikimedia.org/wikipedia/commons/thumb/d/df/Wikibooks-logo-en-noslogan.svg/40px-Wikibooks-logo-en-noslogan.svg.png)
![](http://upload.wikimedia.org/wikipedia/en/thumb/4/4a/Commons-logo.svg/30px-Commons-logo.svg.png)