Play around with Lego Mindstorms NXT enough and at some point you’ll inevitably get frustrated with NXT-G, its graphical programming language of "blocks" that you drag around and connect with "wires". It’s great for teaching kids the basics, but once they embark on anything remotely ambitious they’re bound to run into trouble. Whether it’s the crazy sprawl of blocks over the work area (even a simple loop can require screens of slow horizontal scrolling), the lack of floating point math or, perhaps worst of all, the total absence of debugging tools, sooner or later you’re going to start longing for a proper programming language that uses, you know, text and stuff.
"if…then…else", "while", even "for…next" – you won’t know how much you actually like those constructs until you don’t have them. For anyone who’s ever programmed, there’s nothing better for understanding programming logic than properly tabbed and commented code, all in a column of text as God intended. And for your kids, there’s no time like the present to introduce real programming, using coding conventions that will be as relevant in the decades to come as they were in decades past.
The good news is that there are lots of replacement text-based languages for Mindstorms NXT, from Java to Lua (or, if you want to stick with visual programming, you can also use LabView, the professional-grade language that NXT-G is based on).
Even better news: I’m here to tell you that one stands out from all the rest.
It’s RobotC and it’s simply fantastic. If you’re not a C programmer, don’t worry–aside from a few grammatical conventions, it could be BASIC. But where it really stands out is in the programming environment. RobotC’s integrated development environment (IDE) includes real-time syntax checking, compiling and contextual help and auto-complete of functions and variables. It has an awesome debugger, allowing you to step through your program, set break points and watch variables, or just watch the code executing on the NXT brick. And its collection of instructional and sample programs is unmatched in the Mindstorms world.
RobotC got its start at Carnegie-Mellon, the nation’s top robotics school, and the pedigree shows. But special credit should go to Dick Swan, who authored much of the current program. (Dick, get a home page so I can link to you!)
For the stuff that we’re now doing, including integrating GPS via Bluetooth, there’s nothing for Mindstorms NXT that can match RobotC for flexibility and ease of use. Plus if you want to teach your kids real programming, why not introduce them to a real programming language? C leads to C+, C++ and C#, which is a lot more than you can say for Java 😉
(Aside: as I was re-teaching myself how to program in C, I was reminded about the funny logic of computers. -100 is > than -90. Is this true in all languages?)