Shuld I take lessons on C or Embedded C to programme arduino ?

hi folks, I want to learn arduino programming..but I don't have any programming experiences.I'm thinking about taking some C language lessons.will C help me to programme arduino? and I also heard that there is another language called Embedded C.I'm confused which C language should I learn to programme arduinos?

First off, C is C - if you are just starting out, pick something like "Beginning C Programming" or whatnot (or if it says C/C++ that's ok too); try to stay away from anything focused on Microsoft Visual C/C++ until later (not that it is much different, just that you get into learning things specific to Windows development that don't apply elsewhere). What you want to learn is basic, ANSI-standard C/C++ (if you are taking a course, ask the instructor if you can use gcc for development; if an ok is given, then the course will be pretty "standard").

That said - for beginning programming I'm not sure whether C/C++ is a good place to start or not; this is coming from someone who learned BASIC first (which some say is worse, but hey, that was the 1980s for ya!). Personally, today, I would push beginners toward Python or LUA or something similar (heck, even javascript or PHP).

The thing to understand and focus on regarding any programming language is the overall "idea" of programming, and not focus on singular language styles (when you get to this point - which isn't something taught as much as it should - it will just "click", and you'll be able to pick up new languages at will, almost - with the exception of a few weird ones out there that are experimental, older, or not as widely used).

The trouble is, a lot of C and especially C++ classes are going to spend a lot of time on things that don't apply here, like the file system and other system calls. If you could find an Embedded programming class, using any language, it might be more useful.

Personally, today, I would push beginners toward Python or LUA or something similar (heck, even javascript or PHP).

True, as long as they don't want to program on Arduino :slight_smile: Those higher-level languages almost make it more difficult to come into an embedded environment which does almost nothing for you.

For the record, I'd vote for Ruby as the most modern language to learn as a complete beginner. Although, that doesn't help if you want to run on Arduino :slight_smile: (Or does it... Just came across this: http://rad.rubyforge.org/)

cr0sh:
What you want to learn is basic, ANSI-standard C/C++ (if you are taking a course, ask the instructor if you can use gcc for development; if an ok is given, then the course will be pretty "standard").

The thing to understand and focus on regarding any programming language is the overall "idea" of programming, and not focus on singular language styles (when you get to this point - which isn't something taught as much as it should - it will just "click", and you'll be able to pick up new languages at will, almost - with the exception of a few weird ones out there that are experimental, older, or not as widely used).

thank you for the advice. but can you explain little bit about gcc..? and yeah...I will learn more languages in the future I guess.but for now to start off I chose C. will I be able to catchup..?

maniacbug:
For the record, I'd vote for Ruby as the most modern language to learn as a complete beginner. Although, that doesn't help if you want to run on Arduino :slight_smile: (Or does it... Just came across this: http://rad.rubyforge.org/)

thanks man.but In my neighboorhood none of the colleges provide ruby courses.!

What is an embedded programming language? Does Perl qualify as embedded programming language?

If it is used in an embedded device (like a phone), then yes it is.

Usually when you hear "Embedded " talked about, it means " tweaked for use in an embedded system." So "Embedded Perl" would be a version of Perl that was tuned for an embedded system. A good example is PyMite, which is a Python interpreter written for MCU's.

but can you explain little bit about gcc..?

GCC is simply the GNU version of a C compiler. A number of compilers for C exist, but GCC is definitely the more popular one. Apple seems to be pretty aggressive in their efforts in using LLVM.

(Not really arduino related but has anyone used XCode 4 with Clang? I'd like to hear what you think about it since I seem to have a tough time upgrading my XCode version.)

Sorry for the off-tangent bit. I feel that C is a good place to start but I agree with cr0sh, you have to understand the idea of programming regardless of what you start out with - just don't start out with java (man was that ever a mistake!)