Snap is Scheme disguised as Scratch [pdf]
The enormous effort to bring kids&#x2F;young adults into CS is really awesome and admirable.  However I fundamentally disagree with the philosophy of this paper.  IMO, we should try to take the kid gloves off of our programming education <i>as soon as possible</i>.<p>I learned how to code when I was an adolescent (10-12).  I wasn’t personally interested in the act of programming itself, but I <i>was</i> fascinated by the possibilities of what I could create with code.  My first coding venture was in LEGO mindstorms block-based code, and this was great to introduce fundamental concepts  like loops and boolean logic.  But I didn’t care about any of that until much later, I just wanted to build a LEGO gun so I could shoot pegs at my brother (hah!).<p>Soon enough my interests wandered (as would any kid’s), and I wanted to make a mod for Minecraft.  At the time this involved decompiling the java source code, modifying the java code with the changes, and recompiling it back to bytecode.  That’s right, I installed <i>eclipse</i> at the age of 12.  I shudder at the memory.<p>But you know what?  <i>I didn’t care</i>, because I was passionate about what I wanted to create.  There were tutorials and tools online to help me with the mundane bits.  The OP article opens by claiming that their language is better for learning because it doesn’t have gotcha’s like semicolons… but that was absurdly easy to figure out (just pattern match with the other code you see!).  All it took was a drive to figure it all out.  And in the end my mod (which is still available online!  see [1]) shipped to tens of thousands of players.  Until recently it was the most successful project I was ever involved with.<p>Now, I don’t mean to suggest that every kid should have to deal with arcane build systems and linker hell (that would be sadistic).  But my point is that kids are willing to put up with a whole lot of BS in order to create.<p>I’ve taught summer coding and 3D art classes to adolescents myself, and I’ve verified this personally:<p>- I’ve seen a 10 year old fiddle with obscure configuration options in the Unity game engine that would confuse a trained artist, just so they could see their stuffed animal in VR.<p>- I’ve seen a 12 year old download Autodesk Inventor fusion on his home PC so that he can make a 3D model of a lightsaber.<p>- I’ve had a kid stay hours after class so they can fiddle with a C# script that I provided to them for a game dev assignment — just so they can execute on their vision.<p>I haven’t seen this kind of success with block based programming.  Because the whole language is on rails, you tend to get half-assed results that follow whatever tutorial I supply by the letter.   Results are bounded by the bespoke language features that are provided (eg sprites) so kids may not feel that they can achieve exactly what they want.  It completely kills the creative freedom that a kid craves.<p>Block based programming absolutely has its place, but it does not scale beyond the absolute basics.  Kids don’t want to be patronized with a training wheel language and we should give them the opportunity to push through the tricky parts of a “big boy&#x2F;girl” language if they are inclined.<p>[1] <a href="https:&#x2F;&#x2F;www.minecraftforum.net&#x2F;forums&#x2F;mapping-and-modding-java-edition&#x2F;minecraft-mods&#x2F;1276469-1-2-5-simple-npcs-npcs-for-mapmakers-5000" rel="nofollow">https:&#x2F;&#x2F;www.minecraftforum.net&#x2F;forums&#x2F;mapping-and-modding-ja...</a>