Snap! visual language aims to teach kids and adults real computer science
Snap! is a block-based programming environment designed to be approachable for beginners while still supporting rigorous computer science education. It extends the block-programming style popularized by Scratch but adds features that let users build higher-order functions, recursion, and other advanced concepts typically reserved for text-based languages.