Scratch (programming language)

From Wikipedia, the free encyclopedia

Jump to: navigation, search
Scratch
Image:Scratch Logo.png
Paradigm object-oriented, educational
Appeared in 2007
Designed by Mitchel Resnick
Developer Mitchel Resnick, John Maloney, Natalie Rusk, Evelyn Eastmond, Tammy Stern, Amon Millner, Jay Silver, and Brian Silverman
Latest release 1.3.1/ November 21 2008
Typing discipline dynamic
Major implementations Scratch
Influenced by Logo, Smalltalk, HyperCard, StarLogo, AgentSheets, Etoys, Tweak

Scratch is an interpreted dynamic visual programming language based on and implemented in Squeak. Being dynamic, it lets code be changed even as programs are running. It has the goal of teaching programming concepts to kids and teens and letting them create games, videos, and music. It can be downloaded for free and is being used in a wide variety of in-school and after-school settings around the world.

Scratch's name refers to the turntablist technique of scratching, and refers to both the language and its implementation. The similarity to musical scratching” is the easy reusability of pieces: in Scratch all the interactive objects, graphics, and sounds can be easily imported to a new program and combined in new ways. That way, beginners can get quick results and be motivated to try further.

The website shows rapid growth of the Scratch community; from March 2007 to June 2008, over 119,000 accounts have registered, with over 148,000 projects uploaded. The rapidly growing international community has translated Scratch into several languages, with more in progress.

The popularity of Scratch in education is attributable to the ease with which programs can be made; the statements and data structures are simple and are at least partially written in common English, and the program's structure can be designed as a jigsaw puzzle is, with detachable blocks of code that can be moved around and fitted together.

Scratch has been developed by a small team of researchers in the Lifelong Kindergarten Group [1] at the MIT Media Lab.[2]

The Scratch Online Community received an honorary mention in the Digital Communities category at the Prix Ars Electronica 2008 [3].

Contents

[edit] Use as a teaching language

Scratch is being used worldwide in various schools and educational organizations. The Scratch website has developed a community of beginning programmers, students, teachers, and hobbyists, who motivate each other to develop their creativity and programming skills. One of the forums on the Scratch website is dedicated to discussions among educators.

The Scratch slogan is "Imagine · Program · Share." The emphasis on sharing is an important part of the pedagogy for Scratch. Programs are not seen as black boxes, but as objects for remixing to make new projects. The only way to make a program available for use is by releasing the source code for it.

[edit] Development environment, web site, and Scratch Player

The development environment for Scratch is downloadable for free and can be installed on any Windows or Mac OS X computer. Several brands of Linux will run Scratch, specifically Suse Linux (openSUSE 11 onward) and Ubuntu, the installers (RPM for Suse and DEB for Ubuntu) are available from the official community repositories of these Linux releases. An experimental Ubuntu installer from MIT is available. The Scratch development environment is implemented in Squeak, a Smalltalk development environment, providing uniform cross-platform behavior.

Screenshot of Scratch development environment at startup (running on Apple Inc.'s Mac OS X)

Scratch programs can be uploaded directly from the development environment to personal web pages on 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. The website also provides for members of the community to comment on projects, as well as having general discussion forums, and galleries of projects. Programs developed in Scratch can be run either with the development environment or by a Java applet known as the Scratch Player. The Scratch Player allows Scratch programs to be run from almost any browser.

[edit] Principles of language scope and usage

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 power multi-media functions and multi-threaded programming style and the rather limited scope of the programming language.

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.3, but with limited string manipulation capability.

Code is grouped into different sprites, each of which can be moved independently and have multiple costumes for animation. The language is more similar to animation languages like ActionScript than to traditional programming languages.

The focus was always on playful learning, so that elementary school children can make simple projects and teens can quickly get impressive results. There are also a number of experienced adult programmers in the Scratch community, generally looking for ways to teach programming to their children. The adults generally react favorably to the quick and easy development environment, despite the rather strong restrictions of the 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, numbers, and variables.

[edit] Notes

[edit] External links

Articles about Scratch on the news

Academic papers about or referring to Scratch

Personal tools