In the last few years, blocks-based programming environments have become quite popular. This wave of popularity has been heralded by Scratch, but there are many such systems presently in use, including Starlogo and Net Logo, MIT App Inventor, and the Blockly-based tutorials developed by Code.org.
Probably you and your students use one — or more — of these coding environments.
But chances are you’ve also gotten the question, “Yes, but what is the real language behind the blocks?” when you’ve introduced these systems to your students, or shown them to parents.
Or maybe you’ve been asked, “When will we learn real programming?”
Perhaps even you think blocks-based programming isn’t “real” programming.
In other words — many people think that “Real programmers don’t use blocks.”
This perception is a serious concern.
Colleen Lewis published an interesting study related to this in 2010. She assembled a group of 6th grade students with little background in computing. She randomly assigned them to one of two groups: a text group using Logo Microworlds and a blocks group using MIT Scratch. Both groups were given structurally equivalent teaching and project work.
After a week of instruction, Lewis gave them attitude surveys and a coding assessment.
In analyzing the data, she discovered two things:
(1) The kids working with blocks showed a better grasp of conditionals, and otherwise learned essentially the same coding skills as those in the text-language first group.
(2) The kids working with the text language identified themselves more strongly as programmers.
It’s ironic. Even though the blocks-programmers were equally competent coders, the text-programmers were more inclined to think of themselves as computer scientists!
Even kids believe that text-programming is more “real” than blocks-programming.
It’s true that many blocks-based programming environments were developed for beginners. So it’s also reasonable to think “blocks programming is for beginners.”
It’s also true that most programming tools used by professionals are text-based environments.
Let’s take a look at how these programming environments really work. In block-based environments, you can “see all the pieces,” so it’s generally easier to discover what commands and operations are possible. Colors help you logically group operations, and block shapes allow blocks to fit together only if they “work together.” This means that only syntactically correct programs can be assembled.
But the blocks themselves don’t help you write a logically correct program. That’s still up to you. In this sense, programming is still hard — a genuine intellectual challenge.
It turns out that there are three big things you often get in blocks-based environments. You get:
(1) Easy access to powerful APIs. For example, in Scratch, you can easily make a sprite glide across the screen, have it change direction, and have it change its appearance; in App Inventor, you can query a web database or send a text message with just a single command.
(2) Easy-to-use, yet sophisticated, control structures, such as event handling. With Scratch, you can have multiple sprites moving simultaneously, and have them send messages to each other. In App Inventor, you can easily make a link between pressing a button on the screen and initiating an action (like playing a sound). In typical text languages, either of these things would require many complex lines of code. In App Inventor, all computation is initiated by event-handler blocks that respond to events like touching a button, changing location, or receiving a text message. Everyday real-world programs depend on these sorts of features, but they are not easy to express in traditional languages.
(3) The ability to build real programs and put them in the hands of users. A big aspect of Scratch’s success is the Scratch web site and sharing gallery, which makes it easy for kids to share their work with each other. Likewise, when building apps with App Inventor, people make real apps for mobile devices and can distribute them to people.
It’s worth noting that there’s nothing special about blocks in these three big ideas! Rather, it’s that the people who have developed these blocks-based systems focus on empowering programmers — giving them the tools that let them make real things.
Blocks environments strive to make easy the things that should be easy. But building something real that gets used by others is still hard. You have to build something that’s interesting, fun, and/or useful, pay attention to details, and solve problems along the way.
So, who is a programmer? We invite all to embrace what we believe:
“Real programmers make programs that matter to real people.”
By this definition, real programmers definitely use blocks.
Submitted by Fred Martin, University Faculty Rep., CSTA Board of Directors