Ideas for snap!

Don't fight, gang.

There's no particular application of computers that Snap! isn't "for." I'm not interested in writing video games, for example, but I would never dream of saying you shouldn't write them. What Snap! is for is learning. In particular, it's for learning computer science. It's for learning abstraction, which is one of the central ideas of computer science. It's for learning data structures, as in a CS 2 class, such as how to implement a hash table and what they're good for. It's for learning lambda calculus, the theoretical core set of ideas that hold up programming languages. It's for learning what a Turing machine is. It's for learning what a cellular automaton is. It's for learning computer architecture; if you want to learn a low-level language, I'd rather you jump right down to machine language, preferably for a RISC machine like the one (probably) in your phone rather than the baroque Intel architecture that's (probably) in your computer. That'd teach you more than learning JavaScript, which is really just Snap! with a bad syntax. But I'm not even going to tell you not to learn JS. Learning is good. Learn how to break into other people's computers and you can get a job as a security consultant. (Try not to get arrested. Don't steal stuff.) Learn anything. While you're at it, learn how to make art with a computer. Read Marx and Freud. Read Mark Twain. (Insert non-US authors here... Well Marx and Freud are non-US authors, but not authors of fiction.) You want to learn another programming language? Pick one that'll blow your mind, Prolog or Smalltalk or APL.

So, no reason not to build 3D graphics if that interests you. We don't do it because debugging programs that use 3D is hard, because you have to know which way the camera is facing and make sure the stuff you build is in front of the camera rather than behind it. We'd rather concentrate on a good interface for 2D graphics. But that's us; you build what you want (that isn't against the rules). You can do it entirely in Snap!, which isn't as slow as it used to be, especially on matrix arithmetic, which is what 3D graphics is all about.