Scratch (programming language)
From Wikipedia, the free encyclopedia
Scratch | |
---|---|
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.2.1/ December 2007 |
Typing discipline | dynamic |
Major implementations | Scratch |
Influenced by | Logo, Smalltalk, HyperCard, StarLogo, AgentSheets, Etoys, Tweak |
Contents |
[edit] Introduction
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 children 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 for scratch shows rapid growth of the Scratch community; from the beginning in March 2006 to February 2008, over 68,600 people have registered at the website, and over 73,300 projects have been developed and uploaded. The rapidly growing community is international, and the Scratch language and development environment has been translated into several languages, with more translations in progress.
Scratch is being developed by a small team of researchers in the Lifelong Kindergarten Group [1] at the MIT Media Lab.[2]
[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. (Linux versions are not available yet, but this Scratch forum topic allows you to download an unofficial Linux version.) The Scratch development environment is implemented in Squeak, a Smalltalk development environment, providing uniform cross-platform behavior.
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 data structures. The only variables are floating-point scalars.
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 Flash 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] Source code
The source-code for Scratch can be downloaded from this website.
[edit] Older versions
Anyone can download older versions of Scratch from this Scratch forums topic. Please note that only the current version of Scratch is supported, and the current version is recommended for use. The most current version can be downloaded from the Scratch download page.
[edit] Notes
[edit] External links
- Scratch home page
- Open Directory: Programming: Languages: Scratch
- Lifelong Kindergarten Group - developers of Scratch
Academic papers about or referring to Scratch:
- Maloney, J., Burd, L., Kafai, Y., Rusk, N., Silverman, B., and Resnick, M. (2004). Scratch: A Sneak Preview. Second International Conference on Creating, Connecting, and Collaborating through Computing. Kyoto, Japan, pp. 104-109.
- Resnick, M., Kafai, Y., Maloney, J., Rusk, N., Burd, L., & Silverman, B. (2003). A Networked, Media-Rich Programming Environment to Enhance Technological Fluency at After-School Centers in Economically-Disadvantaged Communities. Proposal to National Science Foundation.
- Peppler, K., & Kafai, Y. (2005). Creative coding: The role of art and programming in the K-12 educational context.
- Resnick, M., Maloney, J., & Rusk, N. (2006). Scratch and technological fluency (Powerpoint slide 2.5MB).