Okay this may make me eligible for most dumbest-est question evar, but what is the language used in the Arduino IDE? Is the language also just called “Arduino”?
“Getting Started with Arduino” says it’s an implementation of Processing, but I’m a little fuzzy on what that means exactly, except that it’s based on Processing.
I am wondering specifically because I want to accumulate some in-depth resources on programming, but I want to know exactly what I’m writing before I go and dump a lot of money into books. E.g. is it worthwhile to study Processing in general, or will most of it not execute on Arduino hardware? How is the O’Reilly Book “Programming Interactivity” if my final goal is a standalone circuit controlled by Arduino (i.e. no computer connected)?
I have some very specific goals for things I want to do with microprocessors and I am just at the very beginning of getting started. I have some coding experience but I haven’t done anything in literally a decade. I am wanting to get some deep background in the language to see what’s available to solve my problems. I think the hardware side will be much easier.
The language is C++.
The support library is a subset of the 'C' standard library and, so far as I know, none of the C++ standard library.
If you indicate what you want to do, it will be easier to suggest reading material.
Arduino is programmed with a c/c++ 'dialect'. Most c/c++ will work but much of the standard libraries will not work. Many of the restrictions is made because of the little available RAM on the Arduino hardware.
To sum up:
Arduino is c/c++, so you can read books on c++ and use most of what you learn that is language core.
The IDE is written in java, and is based on the Processing project, the code you write in the editor is, as previously mentioned; c++
There are a few books specific to the Arduino, I have not read any of them.
My tip: don't read, but do. If you find yourself with a question just google it, if that does not help, ask here :)
I would add to AlphaBeta's remarks that sticking with the c subset tends to result in code with less 'bloat' (automatically created structures that consume RAM and other resources). Sticking with the c subset most of the time seems like good practice, given the very small amount of RAM available.
that said, most libraries are C++ classes.
I have always believed that if I want to write elegant c, I read Kernighan and Ritchie.
so you can read books on c++ and use most of what you learn that is language core.
I'll throw in my usual warning that a lot of today's programming books are more about using the libraries for a particular environment than the core language itself. This is especially true of C++; a book's "hello world" first program might consist of creating a window with "hello world" in it. (not much use on an Arduino, which doesn't know anything about windows.)
I would trawl the used book stores for the oldest book on C that you can find.
Concentrate on the essentials and ignore everything about memory allocation and pointers - for now
Kernigan and Richie an excellent suggestion.