
Snap!
Snap! is a broadly inviting programming language for kids and adults that's also a platform for serious study of computer science.
What is 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 lists, first class procedures, and continuations. These added capabilities make it suitable for a serious introduction to computer science for high school or college students.
Snap! Screenshots
Snap! Features
Comments and Reviews
Tags
- Educational
- Game Development
- Programming Language
- Animation
- kids-paint-draw-color
- development
it's more powerful and has more capabilities compared to Scratch
The listing says "online" but you can actually download the entire web app and run it offline, in any modern browser on any platform.
Snap's advantages over Scratch: You can make lists of lists, and there are blocks granting more versatile access to the contents of lists. The importance of this cannot be understated. I've built tools I use for actual work in this which would be impractical in scratch.
The sound library has more tools and capabilities.
The turtle is not an add-on, it's enabled by default and is more capable. It is clearly intended to be used for most of your graphics; the default sprite is a turtle arrow. Sprite positioning and sensing has more options.
Disadvantages compared to scratch: There are fewer libraries available to interface with hardware (such as GPIO, Sensehat, robot kits) Fewer tools for converting projects to other formats. Less community support in general.
If you aren't doing GPIO/Pi stuff, there's really no reason to go Scratch over Snap.
Forgot to mention: Snap is case-sensitive, Scratch is not, and it is not an easy thing to implement case sensing.
Reply written ago
nice initiative for novices into Programming.
Unlike Scratch, Snap! is actually acceptable for teaching computer science concepts. Scratch is by far the worst choice you could possibly make it you want to learn computer science, but want to start with a simple block based interface. Snap! is built off of Scratch 1.4 but is made entirely in JavaScript and is very fast and fluid, unlike the laggy Scratch editor. Snap! implements many powerful features such as first class procedures. first class lists, first class objects and first class continuations. Unlike Scratch, variables are dynamically typed, and lists can be multidimensional and are capable of storing strings, text, other lists, clones, and even other sprites. There is also support for recursion writing your own code in JavaScript. Snap! also includes on top of it's already powerful base library, numerous other libraries with invaluable tools.
So when it comes to learning programing, don't use Scratch, use Snap!
Dude,stop! Don't disrespectful scratch. first of all.
SCARTCHTOEM
Reply written ago
Your answer shows your lack of understand of both Scratch and its history, and programming in general.
Snap! 4.0 is a open source fork of Scratch which implements many new modern programming features over vanilla Scratch. You can even read all about it on the official Scratch wiki: https://en.scratch-wiki.info/wiki/Snap!_(programming_language)
If you look at Scratch 2.0 you will notice it is written in Flash (and the previous web player was in Java), a browser plugin that many popular browsers are trying to ditch for security reasons. It also means Scratch projects won't work on most mobile devices, without installing a third party browser that supports Flash.
Snap! is also ahead of its time. It is written in JavaScript and was the first to introduce the concept of building your own blocks (a basic version of this was added in Scratch 2.0], which only now Scratch 3.0 is attempting to do.
You seem to not understand the concept of Scheme and objects in programming, claiming that "report is not only for REPORTERS,but ANYTHING?". This is because functions, lists (which can even nest other lists, unlike Scratch), blocks, clones, sprites, pen trails, costumes and literally everything is a first class citizen and can be passed around.
Your insistence that Scratch is more used in schools, may be true in middle SVG hold, but Snap! is one of the suggested languages by College Board for AP Computer Science Principals (which based on your response, you've probably never heard of College Board yet) and is used by the BJC curriculum for teaching the course.
The usage of modern web technologies like this allows schools to teach the concepts of OOP programming in devices like Chromebooks and iPads, without needing to download additional software.
As for your complaints about warp. It's great, you can use it to warp a certain section of code if you need it to run faster, while not requiring the whole project to use turbo. On the same note, you can programmatically enable/disable turbo too.
Reply written ago
Scratch can technically do anything Snap can do...if you go and write your own libraries for it, or you kludge the hell out of it.
Snap is the language for the Beauty and Joy of Computing curriculum, an approved AP CS Principles curriculum. Many of the required concepts in AP CSP/BJC would be difficult to demonstrate in Scratch but trivial in Snap.
The real dealbreakers for Scratch are the lack of case sensitivity and the limitations of lists.
Reply written ago