Scratch (programming language)

From Wikipedia, the free encyclopedia
  (Redirected from Scratch programming language)
Jump to: navigation, search
Scratch
Scratch Logo.svg Scratchcat.svg
Paradigm(s) object-oriented[citation needed], educational, event-driven
Appeared in 2006
Designed by Mitchel Resnick
Developer MIT Media Lab Lifelong Kindergarten Group
Stable release 1.4 (July 2, 2009)
Typing discipline dynamic
Major implementations Scratch
Influenced by

Logo, Smalltalk,

HyperCard, StarLogo, AgentSheets, Etoys
Implementation language Squeak
License Open source with proprietary components
Usual filename extensions .sb
Website scratch.mit.edu

Scratch is an open-source early computer language learning environment enabling young beginners to get results without having to learn syntactically correct writing first. It is intended to motivate for further learning through playfully experimenting and creating projects, such as interactive animations etc.

The name Scratch derived from the turntablism's technique of scratching,[1] 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 can be installed and freely redistributed on any Windows, Mac OS X or Linux computer. The open-source code is made available under a license that allows modifications for non-commercial uses and can be downloaded from the Scratch info MIT Media's website [2].

Contents

[edit] Who is it for: the strengths and the limitations

"These days, kids interact with all kinds of dynamic things on screen but it is usually a one-way street - they are usually interacting with things that other people have created," said Professor Resnick, who also invented Lego Mindstorms, a robotics toolkit often used in teaching.[3]
"We want people to start from existing materials - grabbing an image, grabbing some sound, maybe even bits of someone else's program and then extending them and mixing them to make them their own."[4]

The Scratch online community's slogan "Imagine, Program, Share" puts an emphasis on sharing and the social aspects of creativity as important parts of the philosophy behind Scratch.[5]

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

[edit] Scratch user interface

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.

[edit] Community of users

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

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).

[edit] Online community

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.[12][13] Members can also 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 any web browser (using a Java applet or Flash Player). The website receives close to 10 million page views per month[14] 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,200,000 projects (every minute more than one project gets uploaded!)[15] 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[16] and the United Arab Emirates.[17]. In 2008, the Scratch online community platform (named "ScratchR") received an honorary mention in the Ars Electronica Prix.[18] There is also an online community for educators, called ScratchEd.[19] Users on Scratch can add other users as friends.

[edit] Versions

[edit] scratch 1.4

This is the current version of Scratch.

[edit] Derivatives

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

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

[edit] See also

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

[edit] 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. ^ Free tool offers 'easy' coding BBC News 14 May 2007
  4. ^ Free tool offers 'easy' coding BBC News 14 May 2007
  5. ^ Monroy-Hernández, A. and Resnick, M. (2008). Empowering kids to create and share programmable media. ACM interactions 15, 2 (March 2008), 50-53
  6. ^ "Scratch: imagine, program, share". Massachusetts Institute of Technology. http://scratch.mit.edu/credits. Retrieved 25 May 2007. 
  7. ^ Scratch website
  8. ^ 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
  9. ^ Scratch Day at Science Museum of Minnesota
  10. ^ Scratch for budding computer scientists
  11. ^ Scratch for budding computer scientists
  12. ^ 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)
  13. ^ 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)
  14. ^ http://www.quantcast.com/scratch.mit.edu
  15. ^ Scratch usage statistics
  16. ^ http://kids.sapo.pt/scratch
  17. ^ http://scratch.uaeu.ac.ae/
  18. ^ http://www.aec.at/prix_history_en.php?year=2008
  19. ^ http://scratched.media.mit.edu
  20. ^ http://wiki.scratch.mit.edu
  21. ^ http://wiki.scratch.mit.edu
  22. ^ BYOB homepage http://byob.berkeley.edu
  23. ^ Jens Mönig user contributions page
  24. ^ Mönig's blog post announcing BYOB as bringing protypal inheritance to Scratch
  25. ^ Brian Harvey homepage
  26. ^ Brian Harvey user contributions page
  27. ^ The Beauty and Joy of Computing course homepage

[edit] External links

Personal tools
Namespaces
Variants
Actions
Navigation
Interaction
Toolbox
Print/export
Languages