Snap! (programming language)

From Wikipedia, the free encyclopedia
  (Redirected from BYOB (programming language))
Jump to: navigation, search
Snap! (BYOB[Note 1])
Paradigm(s) object-oriented, educational, event-driven
Designed by Brian Harvey and Jens Mönig
Developer Jens Mönig
Appeared in 2011
Stable release 3.1.1 / May 19, 2011
Typing discipline dynamic
Influenced by Scratch
License AGPL
Filename extension(s) .xml

Snap! is a free, browser-based educational programming language blocks-based graphical programming language that allows students to create interactive stories, animations, games, 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 Windows, Mac OS X or Linux,[1][2] with design ideas and documentation provided by Brian Harvey[3][4] from University of California, Berkeley and have been used to teach "The Beauty and Joy of Computing" introductory course in CS for non-CS-major students.[5]

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


Snap! 4.0 runs on Apple iOS, Mac OS X, Windows, and Linux devices, because its is implemented in Javascript using HTML5 Canvas APIs.[Note 2]

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). Bellow 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 as the Motion, Looks, Sound, Pen, Control, Sensing, Operators, and Variables blocks 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 Script tab, there are two additional 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, include:


  1. ^ for versions before 4.0
  2. ^ While Scratch 2.0, because it is written in Flash, only works on the latter three.


External links[edit]