The General Purpose Blocks Programming Language, GP, is now in beta

July 19, 2017 at 8:00 am 15 comments

GP, the powerful new blocks-based programming language (that I wrote about here, helped show at SIGCSE 2017, and used for MediaComp in a new kind of ebook here), is available for beta-testing as the Scratch 2017 conference starts in Bordeaux, France.  You can access GP at  You can run projects in your browser on the website, or download the application.

GP is a free, general-purpose blocks language that is powerful yet easy to learn.

GP can:

  • generate high-quality graphics computationally

  • manipulate images and sounds

  • analyze text files or CSV data sets

  • simulate physical, biological, or economic systems

  • access the web and use cloud data

  • connect to hardware via the serial port

  • deploy projects on the web or as stand-alone apps

Source: About · GP Blocks

Entry filed under: Uncategorized. Tags: , , .

“Algorithms aren’t racist. Your skin is just too dark.”: Teaching Ethics to future Software Developers Why are underrepresented minorities and poor over-represented in courses?

15 Comments Add your own

  • 1. Anders S  |  July 19, 2017 at 2:21 pm

    Mark, do you know if the GP team has spent time thinking about how it would work when dealing with longer code? This looks really interesting, but the idea of having to read a couple pages of blocks seems painful, and I don’t know if that’s just because I’m biased from decades of coding using text or if there’s a real issue here. The reason I ask is that in my previous job, my team spent some timing looking at a data analysis tool called Alterxy that uses a visual language, and one of the issues the developers ran into was that as soon as the logic got complicated, the end result was a lot harder to read than regular coding.

    • 2. Mark Guzdial  |  July 19, 2017 at 2:28 pm

      I know that I’ve talked about the issue of longer code with the GP team, but that was more about writing code than reading it. For example, defining local variables at the top of a function then dragging them into place everywhere is tedious. I’m not sure that developers’ sense of “harder” is the right measure. Blocks-based languages are mostly aimed at novices and casual/occasional programmers. An expertise-reversal effect would likely come into play where developers would find blocks-based languages tedious and lacking the text clues that developers have automatized. David Weintrop’s results suggest that novices read blocks-based code more easily and more correctly than text-based code, especially when loops and conditionals are concerned.

    • 3. Anders S  |  July 19, 2017 at 3:32 pm

      In this case, the problem was that our member database was highly normalized, so to do just about anything you needed to join at least 6 tables that each included a soft delete flag & often included other filters. The end result looked like a rats nest, both to them and the power users who saw it. But as I’m writing this, it occurs to me that unlike Alterxy, in GP you could create new blocks designed to better display/handle that kind of complexity. So the real issue may not be blocks vs text but how easy it is to add new domain-specific layers.

    • 4. Anders S  |  July 19, 2017 at 3:44 pm

      Speaking of mucking around with data, do you know if there are any plans to build out GP for real-world uses? For ex, it would be fabulous they’d take a shot at data science / data munging. In many organizations, the need for people who can manipulate data far outstrips the techies they have available. But once you hit the limits of what a user can do easily with Excel, either you’re stuck with a cookie cutter data analysis tool, or you have to learn either r or pandas, which are quite painful for occasional power users (which is why we were exploring the very expensive tool called Alteryx).

      • 5. Mark Guzdial  |  July 19, 2017 at 3:48 pm

        Have you tried GP yet? There’s actually quite a bit of support for tables and data manipulation already.

        Data blocks in GP

      • 6. Anders S  |  July 19, 2017 at 7:07 pm

        I just did, and unfortunately “Data” is showing up, but not “Table” — not on the site & not on the downloaded version. Since I don’t see the commands I’m looking for under Data, I’m assuming that Table is the one that has the ability to grab a CSV file and slice and dice its data.

        That said, I played around with a couple of the gallery demos, and it’s pretty cool! I could definitely see how this could turn into a tool even developers or more sophisticated power users could end up using, especially if GP keeps exploring how to make the environment more developer-friendly as in the paper you mentioned on another post (

        • 7. Mark Guzdial  |  July 20, 2017 at 1:59 am

          Click in the Stage to get the Stage Menu, and choose Developer Mode. Then you get more blocks in your palette.

          • 8. Anders S  |  July 20, 2017 at 7:48 am

            Thanks! I’m very proud of myself: I got my first error message! 🙂 I was trying to read in a tab delimited text file and got the message, “Error: Could not read file Test.txt” It’s not clear how to diagnose the problem, which goes to the issue we were discussing below about creating the right kind of environment (e.g., when someone gets stuck, providing context-sensitive suggestions). I’m sure if I had a working example of the Table block, I could figure it out.

            But overall, a very impressive tool for a beta! What you all are trying to do is really interesting, and I look forward to seeing what 1.0 looks like.

      • 9. Anders S  |  July 19, 2017 at 7:16 pm

        Playing around with GP also made me more appreciative of just how complex building the right environment is. For ex, if there’s a set of blocks a user doesn’t know much about, creating the right kind of in-line (?), context-sensitive help. As things get more complex, what a slightly-more-than-beginner or power user needs isn’t just “what does Data’s union block do” but “if I want to do ___, what block do I want to use?” (e.g., something like this, which was a quick-and-dirty proof of concept for pandas: )

        • 10. Anders S  |  July 19, 2017 at 7:29 pm

          … or to put it another way, how do you set up an environment so it either encourages users to bounce to a relevant minimal manual of the type you’re building or has something like a cross between intelisense and a minimal manual built into it from the ground up, blurring the line between manual and dev environment.

  • 12. cmcwerner  |  July 19, 2017 at 3:12 pm

    I’d appreciate a quick GP vs Snap from someone that has used both. Or, why should I switch from Snap to GP?

  • […] is great news for fans of GP and John Maloney’s many cool projects. MicroBlocks is a form of GP. This means that GP can be […]

  • […] “smell” and why it’s inappropriate to apply to Scratch. I know that when I program in GP (another block-based program), I often leave little bits of maintenance code lying around that I might use to set the world’s […]


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Trackback this post  |  Subscribe to the comments via RSS Feed

Enter your email address to follow this blog and receive notifications of new posts by email.

Join 10,184 other subscribers


Recent Posts

Blog Stats

  • 2,048,345 hits
July 2017

CS Teaching Tips

%d bloggers like this: