whm1974 wrote:I've been rethinking this and now I'm wondering if I should start with C instead . Speaking of C, how hard is it for a beginner to learn C?
Depends on how "beginner" you are. If you have little or no prior coding experience and aren't sure where you want to go with this, I'd probably recommend something like Python as a better starting point, as you'll be able to produce interesting programs sooner. C is going to be more of a delayed gratification sort of thing. If you've already done some coding and have a basic grasp of software development principles, then yeah diving into C may be a reasonable next step.
Straight C (as opposed to C++) is not used as widely as in the past. It is still the language of choice for OS kernel/driver development and lightweight (resource constrained) embedded applications, but is being replaced by OOP languages like C++ (when performance is paramount), or Python and Java (which do not have as steep of a learning curve) for most new development.
These days, C tends to fill the role which assembly language had prior to, oh, around 1990 or so. When even a $1 microcontroller has enough resources to support a rudimentary C runtime environment, there really isn't much need for assembly language any more. I've heard C described as "high level assembly language", which may seem like an oxymoron on the surface, but has a kernel (heh) of truth to it. C lets you talk directly to the hardware, and provides only a thin layer of abstraction (which is easily bypassed).