The A-Z of Programming Languages: Arduino's Tom Igoe

Computerworld's series on the most popular programming languages continues as we chat to Arduino's Tom Igoe

How does the Arduino compare to BASIC Stamp, PICs, et. al.? What makes it a better choice?

There are a couple of things we've tried to improve upon.

* The Arduino language is a set of methods in C/C++ that makes it easier to understand for beginners. Unlike the Stamp's PBASIC, it has all the powerful functions of C (parameter passing, local variables, and so forth) wrapped in a readable syntax. PBASIC was readable and easy for beginners, but it was so limited that even beginners quickly hit limits to what they could do.

* The user experience of Arduino is more like consumer-grade user experience. There's no need to learn about a hardware programmer (unlike the PIC environments), it plugs into the USB (unlike the Stamp). Compiling and uploading new code to your controller is one click. The method names are verbose, and closer in spirit to everyday language than C, assembly, or lower level languages. Ideally, the whole user experience is designed to minimize the time from idea to working device, while maintaining as much of the power and flexibility of the underlying components as possible.

* Arduino embodies what I call "glass box encapsulation". That means that you don't have to look at the lower level code that comprises the libraries if you don't want to, but you can if you choose. The libraries are compiled only when you compile your final sketch. So if you want to modify them, you can. If you want to include non-Arduino-style C in your code, you can. If you want to include raw assembler code, you can. The encapsulation box is still there, but you can see through it if you choose. The higher level controllers like the Stamp don't include that. And the lower level environments don't abstract to the same level as we do.

* The board incorporates a serial bootloader on the controller, and a USB-to-serial chip, so you don't have to think about the supporting computer-to-controller circuit. It's also got an on-board power jack and a regulator circuit that switches automatically from the USB to external power, again to simplify the shift from connected to the computer to standalone.

* The price tag for the board is reasonable (cheaper than a Stamp board) and the software's free. We want people to think about computing, rather than see their controller as one unit that they can't afford to duplicate.

* The whole thing is open source, so you can make your own version of it if you've a mind to. The number of clones tells us that this is useful to some of our users, and the continued sales of the official board tells us there's also value in the convenience for others.

* From the beginning, the software has been cross-platform. Teaching in schools where the students are 90 per cent mac users, it's a huge improvement for us. At ITP, we were able to free up a whole lab because we no longer needed to support the PCs that supported the Windows-only, proprietary software we were using for the PIC. Students like being able to use tools on whatever operating system they're familiar with.

Why did you decide to open source the hardware designs for the Arduino? What impact do you think this decision has had?

We believe that openness is beneficial to innovation. The open source nature of it has had a huge impact on its spread, I think. There are tons of clones out there. Many of them aren't even looking for a customer base beyond their friends, students, etc. But there is great learning value in making your own version of a tool you use. I think a lot of people make a clone simply because they can, and they think it'll be fun. In the process, they learn something, and they get hooked on learning more. That wouldn't happen if the platform were closed.

Join the Computerworld newsletter!

Error: Please check your email address.

Tags software developmenta-z of programming languagesArduinoTom Igoe

More about ApacheAustralian Securities & Investment CommissionCCSLinuxMicrosoftMySQLScalaStarbucksUbuntu

Show Comments