Snap! (programming language)

From Wikipedia, the free encyclopedia
Jump to: navigation, search
Snap! (BYOB[Note 1])
Snap Language Logo.svg
Paradigm object-oriented, educational, event-driven
Designed by Brian Harvey and Jens Mönig
Developer Jens Mönig
First appeared 2011; 6 years ago (2011)
Stable release
4.0.2 / August 6, 2015; 2 years ago (2015-08-06) [1]
Typing discipline dynamic
Implementation language Squeak (BYOB), JavaScript (Snap!)
OS Cross-platform
License AGPL
Filename extensions .ypr, .ysp (BYOB); .xml (Snap!)
Influenced by
Scratch, Scheme, Logo, Smalltalk
BeetleBlocks, Snapi

Snap! is a free, blocks- and browser-based educational graphical programming language that allows students to create interactive animations, games, stories, and more, while learning about mathematical and computational ideas. Snap! was inspired by Scratch, but also targets both novice and more advanced students by including and expanding Scratch's features.

Snap! 4.0 is entirely browser-based with no software that needs to be installed on the local device.


Snap! 4.0 and its predecessor BYOB were developed by Jens Mönig for Linux, OS X or Windows,[2][3] with design ideas and documentation provided by Brian Harvey[4][5] from University of California, Berkeley and have been used to teach "The Beauty and Joy of Computing" introductory course in computer science (CS) for non-CS-major students.[6] As of December 2014, 100 New York City (NYC) high schools will introduce University of California at Berkeley’s “Beauty and Joy of Computing” as a new AP Computer Science Principles course in 2015, using Snap!.[7]

Earlier, desktop-based 3.x version's open-source code is available under a license that allows modifying for non-commercial uses and can be downloaded from the UC Berkeley website[8] or CNET's and TechTracker download page.[9][10] The source code is Affero General Public License (AGPL) licensed and is available for download within Snap! itself and on Github.[11]


Snap! 4.0 runs on iOS, OS X, Windows, and Linux devices, because it is implemented in JavaScript using an HTML5 Canvas application programming interface (API). In contrast, Scratch 2.0 was written in Adobe Flash, so it cannot run on Linux without Adobe Air.


Snap! has been recognized by the Logo Foundation,[12] and reviewed in an online magazine for programmers.[13]

User interface[edit]

Snap 4.0 development environment and its different areas at startup

The screen areas are arranged in the way they used to be in Scratch prior to the version 2.0, with the blocks palette in the left area, the scripts area associated with a selected sprite in the middle of the screen, and the stage area with sprites thumbnails listed below it in the right area of the screen.

The "stage area" is featuring the results (i.e. animations, turtle graphics etc., everything either in small or normal size, full-screen also available). Below it are listed all available sprites' thumbnails.

With a sprite thumbnail selected, blocks of commands can be applied to it by dragging them from the Blocks Palette onto the middle area of the screen, containing all the scripts associated with the selected sprite. Available blocks are listed and categorized in the Motion, Looks, Sound, Pen, Control, Sensing, Operators, and Variables groups as shown in the table below. Each can also be individually tested under different conditions and parameters via double-click.

Category Notes Category Notes
  Motion Moves sprites and
changes angles
  Control If statements, events,
and loop structures
  Looks Controls visibility,
costumes, and output
  Sensing All sprite hit detection
and user input
  Sound Plays audio files and
programmable sequenced audio
  Operators Mathematical and
Boolean operators
  Pen Allows for
turtle graphics
  Variables Variables and lists,
including lists of lists

Besides the Script tab, there are two other tabs, the Costumes tab and the Sounds tab. An expandable bar at the right is Help area.


Hello, World! in Scratch

The most important features which differentiate it from Scratch as following:


  1. ^ Program versions pre-4.0


  1. ^ "jmoenig/Snap--Build-Your-Own-Blocks". GitHub. Retrieved 21 May 2017. 
  2. ^ "Scratch - Imagine, Program, Share". Retrieved 21 May 2017. 
  3. ^ "Send a free SMS text message online -". Retrieved 21 May 2017. 
  4. ^ "Scratch - Imagine, Program, Share". Retrieved 21 May 2017. 
  5. ^ "HomePage for Brian Harvey (bh@cs.Berkeley.EDU)". Retrieved 21 May 2017. 
  6. ^ "UC Berkeley EECS - CS10 : The Beauty and Joy of Computing - Fall 2011". Retrieved 21 May 2017. 
  7. ^ "FACT SHEET: New Commitments to Support Computer Science Education". 8 December 2014. Retrieved 21 May 2017. 
  8. ^ "Snap! (Build Your Own Blocks) 4.0". Retrieved 21 May 2017. 
  9. ^ CNET's and TechTracker BYOB for Mac download page
  10. ^ CNET and CNET TechTracker's BYOB for Windows download page
  11. ^ "jmoenig/Snap--Build-Your-Own-Blocks". GitHub. Retrieved 21 May 2017. 
  12. ^ "Logo History". Retrieved 21 May 2017. 
  13. ^ Editor. "Visual Language Snap! Version 4.0 Released". Retrieved 21 May 2017. 

External links[edit]