I don’t recommend learning C, it’s far too difficult, total waste of time. I’ve been trying for a very long time now but it just gets more and more impossible, not easier. All you’ll see is error messages and nothing working.
About the hardest thing to learn that you’ll find in C is pointers and pointer math; once you have that straight in your head, everything is comparatively simple. For the Arduino, you could quite possibly never encounter a need for either in most projects.
C/C++ is simple compared to a number of languages; I’m still trying to get my head around LISP, and I doubt I’ll ever understand anything more than the principles behind languages like Whitespace and Brainf*ck (offending letter removed to protect the innocent). I mean, there’s a place for UTM languages and all, but beyond being able to posture about coding in them to other geeks (or understanding the theory and “mechanics” of a UTM implementation) - there isn’t much use for those two languages otherwise, IMHO.
I think maybe you’re having trouble understanding C/C++ because you haven’t found the right method to learn it. I originally started out with a nice, but simple, introductory book on learning C, then later took a couple of community college courses on C/C++ (using Visual C++, unfortunately - MFC was hell). I’ve never used it for anything very serious (have yet to have a need), but the knowledge has helped me in other languages and projects.
Don’t give up hope!
At the moment I’m trying to get amforth onto the arduino so that I can learn to program it in Forth, but I can’t make amforth work. However, another project also caught my attention the other day — http://concurrency.cc/ — except there’s no forum or other users on the site or anything, so you’re pretty much on your own. It looks easier than C though.
I’ve looked at Forth and Occam (what concurrency is based around); Forth, to me, looks like something of a “dead” language - not used much anywhere that I can find, but it might still have a future (?) - maybe someone can set me straight…
Occam seems like something focused on parallel processing systems, and while it may be useful for such systems (I can’t give an opinion here at all), I am not sure how worthwhile it would be for a single processor, especially the Arduino.
I’ve always thought there needs to be a version of BASIC for the Arduino; I know there is AVR BASIC (but it isn’t free or open source - and it isn’t “Arduino”, either - but it is geared to the Atmel line). I’ve also wondered about the possibility of implementing a LOGO interpreter on the Arduino…