Snap! is a free, blocks-based educationalgraphical programming language and online community aimed at students to explore, create and re-mix interactive animations, games, stories, and more, while learning about mathematical and computational ideas. While inspired by Scratch, Snap! has many advanced features. The Snap! editor, and programs created in it, are web applications that run in the browser without requiring installation.
User interface
In Snap!, the screen is organized in three resizable columns containing five regions: the block group selector, the blocks palette, the main area, and the stage area with the sprite selector showing sprite thumbnails below it. In the interactively resizable stage area are drawn the graphical results of the scripts running in the script area, and/or interactively double-clicked individual blocks in any palette. Individual blocks can be dragged from the palette onto the scripts area to be associated with the selected sprite. Snap!'s blocks are divided into eight groups: Motion, Looks, Sound, Pen, Control, Sensing, Operators, and Variables. The layout of these groups in the block group selector is shown in the table below. The main area can show scripts, costumes, or sounds associated with the selected sprite. What the main area shows is dependent on the selected tab.
Features
The most important features that Snap! offers, but Scratch does not, include:
expressions using "nested functions", consisting of one or more "anonymous functions", each of which is represented by a block having one or more empty slot/parameter that are waiting for a "higher order function" to be filled by.,
codification of Snap! programs to mainstream languages such as Python, JavaScript, C, etc.
History
The web-based Snap! and older desktop-based have been both developed by Jens Mönig for Windows, OS X and Linux with design ideas and documentation provided by Brian Harvey from University of California, Berkeley and have been used to teach "The Beauty and Joy of Computing" introductory course in computer science for non-CS-major students. They were both members of the before creating Snap!. BYOB is still available for downloading.
License
The source code of Snap! is Affero General Public License licensed and is hosted on GitHub. The earlier, desktop-based 3.x version's code is available under a license that allows modification for only non-commercial uses and can be downloaded from the UC Berkeley website or CNET's Download.com and TechTracker download page.