Frequently Asked Questions

What can you do with GP?

Short answer: just about anything!

GP is meant to be used as you might use Python, Java, or Ruby, but with blocks.

GP can be used to explore algorithms, data structures, text processing, media manipulation, cloud-computing, and JSON and CSV data sets. GP has sufficient performance to work with real-world sized data sets (e.g. million row CSV tables), run simulations with hundreds of graphical objects, synthesize music, or display live audio in real time.

How can GP be used for education?

GP is full-featured programming language that can be used to teach computer science at the middle school through college levels. GP’s ability to create simulations and generate dynamic visualizations allows teachers to create interactive materials to enrich both CS and non-CS courses. Finally, since GP has a quick startup time compared to text-based languages, it can allow computation to be incorporated into non-CS courses with a minimum of class time overhead spent on tedious issues around syntax.

GP is free to download and use.

Is there a user community for GP?

Yes, there is a user forum:

http://gpblocks.org/forum/

The forum can be read by anyone. To post to it, you’ll need an account. Click the “Register” button on the forum page to create one.

When will GP be available? When will it be released?

GP will be released for beta testing starting in July 2017.

GP is still evolving and only sparsely documented, but already it is quite usable. We are making it available to anyone willing to try it out and encourage everyone to help us make GP better! We welcome feedback on your experience.

We expect GP to remain in beta testing for at least a year.

What is the GP license?

GP is free, currently under the MIT license. Most of the source code for the system is written in GP itself and included in the GP download. (It’s in the “runtime/lib” and “runtime/modules” folders.) The source code for the virtual machine will be released some time after the GP 1.0 release, possibly under GPL or some other open source license.

What platforms does GP run on?

GP runs natively on Mac OS (v10.6 and later), Windows (Windows 7 and later), Linux (including the Raspberry Pi). GP also runs in the browser on most platforms, including Chromebooks and tablets.

Does GP work in a web browser?

Yes! GP runs in most modern web browsers. Chrome and Firefox currently deliver better performance than Safari.

Does GP work on mobile devices?

Currently, the only way to run GP on mobile device is in the browser. Many GP projects run fairly well in mobile browsers, but creating and editing GP projects can be tedious except on large, high-performance tablets.

We are currently working on a native iOS version of GP. An Android port is also planned, but no work has been done yet.

How can I share my GP projects?

To share a project with someone who has GP, you can email them the project file as an attachment. (Project files are files ending in .gpp, typically stored in the “projects” folder in the GP application.) Opening the project file will allow the recipient to see the scripts and possibly remix your project.

You can use the “Export as App” button to create a stand-alone executable that runs the project in “presentation” mode. When you do that, the programming environment and code for the project are not accessible.

Finally, you can share projects on the web. To do that, upload your project to an HTML server and open it using a URL like one of these:

https://gpblocks.org/run/gp.html#gpblocks.org/~guzdial/sunsettemplate. gpp

https://gpblocks.org/run/go.html#gpblocks.org/~guzdial/sunsettemplate. gpp

The second URL (go.html) opens the project in presentation mode, which can be used to deploy a finished GP “app” on the web.

Can I add new commands to GP?

An experienced programmer can extend GP with new features and commands and share them as an extension. For example, a teacher might create a set of commands to explore image or sound manipulation, allowing students to focus on the high-level concepts rather than low-level implementation details.

Is GP object-oriented?

GP is a simple class-based object-oriented language without class inheritance.

Does GP support closures, inheritance, or functional programming?

To minimize the number of concepts confronting the beginner, GP omits a few advanced programming language features such as class inheritance and closures. However, GP does support functional programming using a combination of first-class functions and explicit parameter binding objects called actions.

Are there any books about GP?

Since GP is still changing, a book would be premature. However, if you are interested in writing one, let us know!

Is there any documentation for GP?

To help you get started, we’ve created some introductory materials: see resources. We plan to create more materials over time.

How do I get GP running in MacOS Sierra?

New security features introduced in macOS Sierra make it more difficult to run applications like GP that do not come from Apple’s App store.

Here’s how to get GP running on Sierra:

  1. Unzip the downloaded GP zip file.
  2. Drag GP.app into the top level of the Applications folder (i.e. not in a subfolder).
  3. Right-click on GP.app and select “Open.” Agree to everything.
  4. Once you’ve successfully started GP.app, option-drag it back into the GP folder. (If you just drag and don’t option-drag, you’ll make a link to it instead of moving it.)

You only need to do this the first time you run a newly downloaded version of GP. After doing this, you can place the GP folder anywhere you wish; it does not need to be in the Applications folder.

How do I find blocks?

There are two ways to find blocks. You can type into the “search” box at the top of the blocks palette:

Or, shift-click in the script area below the palette. The cursor will change to a long white bar that flashes. Type the start of a word that might be in the block you want (like “wa” here):

When the block you want shows up, click on it, then press the escape key to exit keyboard entry mode. (If you don’t exit keyboard entry mode you can enter and edit entire scripts using only the keyboard; see “gestures.txt” in the “runtime/doc” subfolder of the GP folder for more info.)

Are there any more blocks I can use?

When you first start GP, your palette of blocks looks like this:

If you right-click on the stage (upper right quadrant), you’ll get a menu allowing you to enter Developer Mode:

Now, the palette is greatly expanded:

Developer mode also makes additional menu commands and features available, some of which are experimental or incomplete. Developer mode blocks and features are more likely to change as GP evolves than the core blocks and features.