Snap! – drag-and-drop programming language

Snap! (formerly BYOB) is a visual, block, drag-and-drop programming language. Unlike most programming languages, though, Snap! is a visual language; instead of writing a program using the keyboard, the Snap! programmer uses the same drag-and-drop interface familiar to computer users.

It is inspired by Scratch (a project of the Lifelong Kindergarten Group at the MIT Media Lab) that allows you to Build Your Own Blocks. It extends Scratch with first class procedures, first class lists, and other capabilities designed to support the teaching and learning of computer science. It targets both novice and more advanced students by including and expanding Scratch’s features. Snap! also features first class lists, first class procedures, and continuations.

A Snap! program consists of one or more scripts, each of which is made of blocks. It runs in your browser, and is implemented using JavaScript.

Features (extending Scratch):

  • First class functions or procedures (their mathematical foundations are called also “Lambda calculus”).
  • First class lists (including lists of lists).
  • First class sprites.
  • Nestable sprites.
  • Codification of Snap! programs to mainstream languages such as Python, JavaScript, C, etc.

Support: FAQ
Developer: University of California at Berkeley
License: AGPL


Snap! is written in JavaScript. Learn JavaScript with our recommended free books and free tutorials.

Return to Great Ways for Kids to Learn the Art of Coding

Make a Donation
Click the button to make a donation via flattr. Donations help us to maintain and improve the site. You can also donate via PayPal.

Read our complete collection of recommended free and open source software. The collection covers all categories of software.

The software collection forms part of our series of informative articles for Linux enthusiasts. There's tons of in-depth reviews, alternatives to Google, fun things to try, hardware, free programming books and tutorials, and much more.
Share this article

Share your Thoughts

This site uses Akismet to reduce spam. Learn how your comment data is processed.