Snap! lets kids and adults build their own blocks—and study real computer science
Λ Snap – An inviting programming language for kids and adults for CS study

Snap! is a block-based programming language from UC Berkeley that welcomes beginners while supporting serious CS study. Its drag-and-drop interface lets users create custom blocks, explore projects from games to simulations, and learn through example projects and a reference manual. Backed by UC Berkeley and SAP, Snap! is free and open source.
Snap! is a broadly inviting programming language for kids and adults that's also a platform for serious study of computer science.
- aspizu
Scratch is how I first learned programming. I was building increasingly ambitious projects in it, and at some point the editor itself became the main thing I was fighting. Once a project got to around 10,000 blocks, it could get painfully laggy, and I ended up spending a lot of time engineering around Scratch's limits.
That is what eventually led me to build goboscript: https://github.com/aspizu/goboscript
I'm one of the programmers who owe their career to Scratch, this year, I joined https://ente.com as a software engineer. Scratch taught me how to code, and perhaps a bit of real-world engineering indirectly.
- sinuhe69
Snap is designed to be more expressive and powerful than Scratch. But I find debugging them is very painful. Changing the name of a variable or block for example, could create “holes” in the calling sites but the system can or cannot report an error and fails silently. Snap is IMO more flaky and the team seems more eager to add features than polish the existing ones or make the system mor robust and stable.
- Dwedit
Any name that you can't type is going to be a problem.
- andrewla
I don't love graphical programming environments like this and Scratch and I can't quite put my finger on why I find them so unattractive.
A big part of it is that you can, to some degree, learn programming from this. But you absolutely cannot learn software engineering from this.
- stymaar
For those wondering the difference with scratch, it's on the about page:
> About Snap!
> Snap! (formerly BYOB) is a visual, drag-and-drop programming language. It is an extended reimplementation of Scratch (a project of the Lifelong Kindergarten Group at the MIT Media Lab) that allows you to Build Your Own Blocks. It also features first class[1] lists, first class procedures, and first class continuations[2]. These added capabilities make it suitable for a serious introduction to computer science for high school or college students.