I would avoid the MSFT toolchain if you can - it's kind of crufty and IMO not a pleasant place to program. One can certainly get work done there, but I wouldn't choose to get work there if I had other alternatives.
If I were going to recommend a first high level language, I would go either most of the way up the abstraction chain, or most of the way down - either learn C which is a very concrete language, and focus on how the compiler turns your C into machine instructions (basically, use C as an assembler with braces), or learn a language like Python that has a wide variety of high falutin' abstractions (objects, complex built in data types, lambda calc etc.) and little to no contact with the bare metal computer. Smalltalk or Scheme might also be an option there.
The reason I suggest this is that most other languages are a compromise of these two paradigms - an attempt to offer some of the speed and bare metal access of C/asm with some of the features of the abstract languages. I find most of these compromises are failures, and ultimately I want either C or Python for the vast majority of jobs.
|