What Are Block-Based Languages Good For?

Hey everyone, happy #FeatureFriday! It's Dr. Guthals here with a weekly post I'll be doing on something I think is important, but fun to talk about! This week, I wanted to chat about block-based languages. The number one thing that I hear from my older students is that block-based languages isn't "real" coding.

This always makes me laugh a bit. I spend hours a day coding in block-based languages - not only, but I do! Especially in today's world, block-based languages offer a variety of applications beyond making a cat draw a shape or a bunny hop in a square. Google's Blockly can be applied to almost any environment - virtual reality, augmented reality, video games, mobile apps, anything!

When I code in block-based languages it's for a few reasons:

  1. Sometimes I have an idea for a game or an app that I want to make, but I don't know how it's going to work. In those moments, I go onto MIT's App Inventor, Scratch, or Alice and I try out my idea. I might build it out a bit just to get a handle on what data I will need to keep track of, or what interactions I'll need to figure out how to do. After that I might play with it a bit, make sure it's what I want, get some feedback from friends. All of this helps *before* I make my app or game because it helps me get an idea of what I'm about to do. 
  2. Often times I want to make something and it is literally just easier to make it in a block-based language. This isn't because the language is "for kids", it's because the language is setup to specifically help with making it! If I'm going to make a mobile app, I *could* use Java and all of the frameworks that Android provides - or I can just go on App Inventor and make my app in a matter of hours. I can design, build, and deploy my app onto the app store or send it to people and it didn't require anything but an Internet connection and my dedication. There is no reason to get an entire Java programming environment setup....so why do it?
  3. Sometimes I've never done something before and I want to test it out in an environment where I can focus on the logic and the actual problem, rather than the syntax of a language or the libraries that I didn't install correctly. This is the biggest reason I start with block-based languages with my students too! The most challenging part about coding is making sure your problem is well defined, your solution is properly executed, and you understand what is happening. The syntax, libraries, extensions, plugins, whatever - those are all things that constantly change and you just Google!

So why are block-based languages important? Because they give you a prototyping environment, a place to test your ideas, and they are sometimes setup better than other programming environments. So what if your video game features a cute cat instead of the epic monster you drew? It's only the first iteration, and when it's time to put in your epic monster - you will get to focus on how it looks, rather than if your game is working, since you already figured out the game mechanics with Scratch ;)