There is a big difference between learning to program (how to drive), and the programming language(s) you use to do your work (the cars you drive).
If you're really considering this as a career say, then you need to make sure you make a good job of the former.
Learning how to program should cover aspects of how to design a program, which is extremely important if you want to write larger programs. The 'sit down and hack the code' approach is very limiting in the long run.
> do you think C programming is the best foundation?
Not if this is your first introduction to programming in general, and programming languages in particular.
C is a very powerful and flexible language, which also comes with a lot of traps for the unwary. It doesn't take too many key strokes to generate programs which will compile, but which will also crash the machine. Depends if you regard such things as a source of frustration or a challenge to be overcome.
> if not what do you suggest?
I started with Pascal (a long time ago)
Java and Python seem like good choices as well.
You should be able to get free implementations of any of those
At a push (like you already have it, or have lots of $$$), then perhaps Visual Basic.
You can find lots of compilers (or links to them) here
--