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

Where does the name Arduino come from?

Arduino was the first king of the region in which Ivrea is situated. It was also the name of a local bar where students and faculty of Ivrea would congregate.

Were there any particularly difficult or frustrating problems you had to overcome in the development of Arduino?

The biggest challenge hasn't really been a technical one so much as a cultural one. Most CS/EE people I've met have an assumption about how you learn about microcontrollers: first you learn Ohm's law and Thevenin's Law, etc. Then you learn about transistor circuits and op amps, then discrete integrated circuits (ICs). Somewhere in there you learn to use an oscilloscope, and a multimeter if you have to, but the scope's better. Then you're introduced to microcontrollers, starting with the internal structure and memory registers. Then you learn the assembly language, and by then, 'of course' you know C and the command line environment, so you're ready for, say, CCS C (on the PIC) or AVR Studio. And 90 per cent of this is done on Windows, because 90 per cent of the world runs Windows, so it makes sense to develop there.

A large number of people coming to code and microcontrollers nowadays don't come from that background. They grew up assuming that the computer's GUI was its primary interface. They assume you can learn by copying and modifying code, because that's what the browser affords with 'view source'. Most of them don't actually want to be programmers, they just want to use programming and circuits to get things done. That may mean making an art piece, or an automatic cat feeder, or a new occupational therapy device. These people are not formally trained engineers, but they want to build things. These are the students we teach. It's their way of thinking for which we designed Arduino.


Sign up for Computerworld's Software Development newsletter here.

Would you have done anything differently in the development of Arduino if you had the chance?

I think the biggest change we might have made would have been to standardize the spacing between pins 7 and 8! We've gotten a lot of grief for that mistake, but we've maintained the non-standard spacing to maintain backwards compatibility of the boards.

Mostly, though, I don't think there is an answer to "what would you do differently", because when we encounter something we'd do differently, we make a change. The changes are slower now that we have a larger user base to support, but they are still possible.

Why was 'Wiring' and 'Processing' (http://processing.org/) chosen as a basis for Arduino's programming language and environment?

Because they were the tools in use at Ivrea (and ITP) at the time, and because they worked better for teaching to our students than the alternatives that were available at the time. Processing in particular had made a big change for art and design schools teaching programming, because the students "got it". It made sense to make a hardware development environment based on that.

Specifically, because *Processing* was in use at Ivrea and ITP at the time. Programa2003, Wiring, and Arduino all grew from Processing's roots in quick succession.

Join the newsletter!

Error: Please check your email address.

Tags software developmenta-z of programming languagesArduinoTom Igoe

More about ApacheAustralian Securities & Investment CommissionCCSLinuxMicrosoftMySQLScalaStarbucksUbuntu

Show Comments

Market Place