ⓘ Snap! (programming language)


ⓘ Snap! (programming language)

Snap! is a free, blocks-based educational graphical 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.


1. User interface

In Snap!, the screen is organized in three resizable columns containing five regions: the block group selector top of left column, the blocks palette left column, the main area middle column, and the stage area top of right column with the sprite selector also called the sprite corral showing sprite thumbnails below it.

In the interactively resizable stage area full-screen is available, too 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.


2. Features

The most important features that Snap! offers, but Scratch does not, include:

  • nestable sprites
  • expressions using "nested functions", consisting of one or more "anonymous functions", each of which is represented by a block having one or more emptyed slots/parameters that are waiting for a "higher order function" the one that is calling the anonymous one to be filled by.,
  • codification of Snap! programs to mainstream languages such as Python, JavaScript, C, etc.
  • First class sprites in other words prototype-oriented instance-based classless programming,
  • lists that are first class including lists of lists,

3. History

The web-based Snap! and older desktop-based BYOB have been both developed by Jens Monig 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 CS for non-CS-major students. They were both members of the Scratch Team before creating Snap!. BYOB and Snap! both were created in the Scratch Headquarters, MIT Media Lab. BYOB is still available for downloading.


4. License

The source code of Snap! is Affero General Public License AGPL licensed and is available on Github and can be downloaded within Snap! itself. The earlier, desktop-based 3.x versions open-source code is available under a license that allows modifying for non-commercial uses and can be downloaded from the UC Berkeley website or CNETs Download.com and TechTracker download page.


5. Platforms

Snap! is implemented in JavaScript using an HTML5 Canvas application programming interface API, and because of that it runs on the major web-browsers on Windows, iOS, OS X and Linux devices.


6. Recognition

Snap! has been recognized by the Logo Foundation, and reviewed in an online magazine for programmers. As of December 2014, 100 New York City NYC high schools will introduce University of California at Berkeleys" Beauty and Joy of Computing” as a new AP Computer Science Principles course in 2015, using Snap!.

  • SNAP short for Stylized, Natural, Procedural, is an educational programming language designed by Michael Barnett while working at RCA in 1968 and later
  • Snap computer graphics Snap web framework a Web framework written in Haskell Snap Server, a computer storage device Snap programming language
  • Snap are a German Eurodance group. Snap may also refer to: Snap album greatest hits album of The Jam Snap programming language browser - based
  • computing, a visual programming language VPL is any programming language that lets users create programs by manipulating program elements graphically
  • Scratch is a block - based visual programming language and online community targeted primarily at children. Users of the site can create online projects
  • notable programming languages grouped by type. There is no overarching classification scheme for programming languages Thus, in many cases, a language is
  • ˈhæskəl is a general - purpose, statically typed, purely functional programming language with type inference and lazy evaluation. Developed to be suitable
  • educational programming language is a programming language that is designed mostly as an instrument for learning, and less as a tool for writing programs to perform
  • The aim of this list of programming languages is to include all notable programming languages in existence, both those in current use and historical ones
  • Snap is a web development framework written in the Haskell programming language The Snap framework comprises: snap - core, a generic Haskell web server
  • Snap Judgment is a weekly storytelling radio program and podcast, distributed by the WNYC Studios, and hosted by Glynn Washington. Guests have included
  • Snap Judgment is an American daily legal comedy television program which aired on CourtTV from 1999 to 2000. The program was hosted by commentator Lionel