Scratch (programming language)

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by Yobot (talk | contribs) at 12:19, 5 December 2012 (clean up, References after punctuation per WP:REFPUNC and WP:PAIC using AWB (8748)). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

Scratch
File:Scratch cat large.png
Paradigmobject-oriented[citation needed], educational, event-driven
Designed byMitchel Resnick
DeveloperMIT Media Lab Lifelong Kindergarten Group
First appeared2006
Stable release
1.4 / July 2, 2009
Typing disciplinedynamic
Implementation languageSqueak
LicenseGPLv2 and Scratch Source Code License
Filename extensions.sb
Websitescratch.mit.edu
Major implementations
Scratch
Influenced by
Logo, Smalltalk, HyperCard, StarLogo, AgentSheets, Etoys

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.

The name Scratch derived from the turntablism's technique of scratching[1](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).

Scratch is available for Windows, Mac OS X, and Linux. The source code is made available under GPLv2 license and Scratch Source Code License.[2]

Overview

The first version of Scratch was developed in 2006 by the Lifelong Kindergarten group, led by Mitchel Resnick, at the MIT Media Lab.[3] 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.[4][5] 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

File:Scratch 1.4 Initial Screen.png
Screenshot of Scratch 1.4's development environment at startup (running on Apple Inc.'s Mac OS X Snow Leopard)

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.

Community of users

Scratch is used in many different settings: schools, museums,[6] 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[7][8]). 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.[9]

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.[10]

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.[11][12] 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[13] and as of December, 2011 it had more than 950,000 registered members (however, only just over 275,000 users have shared projects), and over 2,700,000 projects (every minute more than one project gets uploaded).[14] 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[15] and the United Arab Emirates.[16] In 2008, the Scratch online community platform (named "ScratchR") received an honorary mention in the Ars Electronica Prix.[17] There is also an online community for educators, called ScratchEd.[18]

Derivatives

A number of Scratch derivatives [19] 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" [20] 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.[21] BYOB was developed by Jens Mönig[22][23] with documentation provided by Brian Harvey[24][25] 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.[26]

The source-code of Scratch and its derivatives are based on Squeak, which is based on Smalltalk-80.

See also

The following youth computing projects also originated in the MIT Lifelong Kindergarten Group:

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:

To go more in depth with Scratch, see the Scratch Wiki.

References

  1. ^ Creating from Scratch: New software from the MIT Media Lab unleashes kids' creativity online
  2. ^ Scratch source-code download page http://info.scratch.mit.edu
  3. ^ "Scratch: imagine, program, share". Massachusetts Institute of Technology. Retrieved 25 May 2007. {{cite web}}: Unknown parameter |coauthors= ignored (|author= suggested) (help)
  4. ^ Scratch website
  5. ^ 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
  6. ^ Scratch Day at Science Museum of Minnesota
  7. ^ Scratch for budding computer scientists
  8. ^ Scratch for budding computer scientists
  9. ^ CTYOnline Scratch Programming Course
  10. ^ Monroy-Hernández, A. and Resnick, M. (2008). Empowering kids to create and share programmable media. ACM interactions 15, 2 (March 2008), 50-53
  11. ^ 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)
  12. ^ 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)
  13. ^ http://www.quantcast.com/scratch.mit.edu
  14. ^ Scratch usage statistics
  15. ^ http://kids.sapo.pt/scratch
  16. ^ http://scratch.uaeu.ac.ae/
  17. ^ http://www.aec.at/prix_history_en.php?year=2008
  18. ^ http://scratched.media.mit.edu
  19. ^ http://wiki.scratch.mit.edu
  20. ^ http://wiki.scratch.mit.edu
  21. ^ BYOB homepage http://byob.berkeley.edu
  22. ^ Jens Mönig user contributions page
  23. ^ Mönig's blog post announcing BYOB as bringing protypal inheritance to Scratch
  24. ^ Brian Harvey homepage
  25. ^ Brian Harvey user contributions page
  26. ^ The Beauty and Joy of Computing course homepage

External links